roboforum.ru

Технический форум по робототехнике.

AVR + I2C

AVR + I2C

dmq » 30 май 2009, 12:57

День добрый, поиском сразу ничего не нашлось, поэтому создам новую тему.
Есть задача считать с eeprom I2C 24c04 данные - 512 байт в SRAM ATMega16a, после они будут исковерканы (обработаны :) ), и сразу вернуть информацию взад.
Программа обработки на асме, это легко. Проблема именно в работе с I2C. С утра уже колупаю интернет, набрал даташитов, мануалов и прочих радостей, голова пухнет :)

Так вот, может есть у кого рабочие процедуры, чтоб их можно было использовать именно для считывания прошивки и ее записи?

Re: AVR + I2C

Duhas » 30 май 2009, 13:08

не стоит возвращать информацию взад )))

что конкретно вызывает вопросы? примеры работы с тви есть в даташите...
алгоритм работы с паматью описан в ДШ на память...

Re: AVR + I2C

dmq » 30 май 2009, 13:18

Duhas, да, даташит и на мегу и на память само собой взял. Но как и любой чайник, мечтаю получить готовое решение (процедура на ассемблере "прочитать еепром в эту область памяти" и "записать вот отсюда в еепром"), которое без особых проблем работало бы на атмеге.
Имея это, намного проще понять как работает протокол и2с вообще и конкретно с такой памятью (24с04).
Больше всего настораживает при попытке сделать с нуля предупреждение во всех руководствах что хотя протокол и асинхронный, но надо очень внимательно выдерживать тайминги.

Re: AVR + I2C

Duhas » 30 май 2009, 13:19

и2ц писать самостоятельно думаем или тви встроенный юзать?

Re: AVR + I2C

dmq » 30 май 2009, 13:31

Дошло :)
Спасибо за намек, читаю даташит на мегу...

Re: AVR + I2C

slavaslx » 30 май 2009, 14:22

Если ограничишся 256байтами то В "исходниках" библиотека для работы с 24с02 на С в КВ.
Для больших размеров адрсация другая и она не подойдет, и прийдется исправлять.
Кажется в аппноутах на атмел.ком есть работа с памятью на асэме и С.

Re: AVR + I2C

Duhas » 30 май 2009, 14:41

автор вроде на асме пишет....

Re: AVR + I2C

DI HALT » 31 май 2009, 14:15

Конкретно сам проткол я расписал тут:
http://easyelectronics.ru/interface-bus-iic-i2c.html с картинками графиками и прочим. Скоро наверное выложу статью с готовым кодом. Если хочешь, могу замылить тебе готовый проект работы с часами реального времени на i2c, с памятью точно также.
Чиркани мне в мыльник я тебе запну проект (dihalt()dihalt.ru)
Правда там сделано тупо в лоб - на ожиданиях флага. Мне этот подход категорически не нравится (противоречит архитектуре моей кооперативной ОС которую я постепенно дотачиваю) поэтому я разрабатываю либу для полной аппаратной обработки ииц протокола на конечном автомате, но пока нет доступа к нормальному компу.

Re: AVR + I2C

MiBBiM » 31 май 2009, 16:19

неужели сам огого посетил нас? :D

Re: AVR + I2C

Digit » 01 июн 2009, 09:17

ну да, посетил :)
а ты думаешь остался незамеченным наплыв посетителей с робофорума, когда шел разбор ошибок сайта DiHalt'a? :D

Re: AVR + I2C

MiBBiM » 01 июн 2009, 10:45

что верно то верно :) только вот в теме с ошибками не отписался :)

Re: AVR + I2C

dmq » 01 июн 2009, 10:52

Взял в итоге пример для работы с и2ц с этого сайта для 24с01 (если правильно помню), переработал все процедуры с С на асм (вроде без ошибок). Сейчас отлаживаю тестовую запись в 24с04.
Имеем: действие старт проходит, получаем АСК, отправляем адрес, получаем АСК, отправляем данные, получаем АСК, все хорошо, но в память ничего не пишется.

симуляция в протеусе 7.5 SP3
программа пишется в AVR Studio 4.16

Может кто подскажет где ошибка?

Не нашел как прикрепить файл, вот тут положил проекты для протеуса и авр студио
http://82.146.43.245/avr_24c04.rar

Re: AVR + I2C

galex1981 » 01 июн 2009, 10:59

А дебаггером AVR студии не пробовал проверять? Проверь, если не получится, я дома вечером проверю

Re: AVR + I2C

dmq » 01 июн 2009, 11:06

galex1981 писал(а):А дебаггером AVR студии не пробовал проверять? Проверь, если не получится, я дома вечером проверю

В аврстудио код сам рабочий, на симуляцию сигналов TWCR реагирует адекватно, я дебаггером дальше в протеусе работаю, чтобы понять правильно ли код посылает и понимает сигналы (и посылает ли он и интерпритирует правильные сигналы).
Получаю что процедура тестовой записи пары байтов отрабатывает (везде есть контроль приема АСК, и если что переход по ошибке), но содержимое виртуальной 24с04 не меняется.

Re: AVR + I2C

galex1981 » 01 июн 2009, 11:08

Значит что то не правильно, если содержимое не меняется. Попробуй все таки еще и в AVR - дебаггером проверить, я понимаю что долго но он 100% верные результаты выдает (не доверяю я Протеусу)


Rambler\'s Top100 Mail.ru counter