AVR + I2C

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

AVR + I2C

Сообщение dmq » 30 май 2009, 12:57

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

Так вот, может есть у кого рабочие процедуры, чтоб их можно было использовать именно для считывания прошивки и ее записи?
dmq
 
Сообщения: 81
Зарегистрирован: 29 апр 2009, 14:02
Откуда: Екатеринбург
ФИО: Михаил

Re: AVR + I2C

Сообщение Duhas » 30 май 2009, 13:08

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

что конкретно вызывает вопросы? примеры работы с тви есть в даташите...
алгоритм работы с паматью описан в ДШ на память...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR + I2C

Сообщение dmq » 30 май 2009, 13:18

Duhas, да, даташит и на мегу и на память само собой взял. Но как и любой чайник, мечтаю получить готовое решение (процедура на ассемблере "прочитать еепром в эту область памяти" и "записать вот отсюда в еепром"), которое без особых проблем работало бы на атмеге.
Имея это, намного проще понять как работает протокол и2с вообще и конкретно с такой памятью (24с04).
Больше всего настораживает при попытке сделать с нуля предупреждение во всех руководствах что хотя протокол и асинхронный, но надо очень внимательно выдерживать тайминги.
dmq
 
Сообщения: 81
Зарегистрирован: 29 апр 2009, 14:02
Откуда: Екатеринбург
ФИО: Михаил

Re: AVR + I2C

Сообщение Duhas » 30 май 2009, 13:19

и2ц писать самостоятельно думаем или тви встроенный юзать?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR + I2C

Сообщение dmq » 30 май 2009, 13:31

Дошло :)
Спасибо за намек, читаю даташит на мегу...
dmq
 
Сообщения: 81
Зарегистрирован: 29 апр 2009, 14:02
Откуда: Екатеринбург
ФИО: Михаил

Re: AVR + I2C

Сообщение slavaslx » 30 май 2009, 14:22

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

Re: AVR + I2C

Сообщение Duhas » 30 май 2009, 14:41

автор вроде на асме пишет....
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR + I2C

Сообщение DI HALT » 31 май 2009, 14:15

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

Re: AVR + I2C

Сообщение MiBBiM » 31 май 2009, 16:19

неужели сам огого посетил нас? :D
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: AVR + I2C

Сообщение Digit » 01 июн 2009, 09:17

ну да, посетил :)
а ты думаешь остался незамеченным наплыв посетителей с робофорума, когда шел разбор ошибок сайта DiHalt'a? :D
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: AVR + I2C

Сообщение MiBBiM » 01 июн 2009, 10:45

что верно то верно :) только вот в теме с ошибками не отписался :)
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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
dmq
 
Сообщения: 81
Зарегистрирован: 29 апр 2009, 14:02
Откуда: Екатеринбург
ФИО: Михаил

Re: AVR + I2C

Сообщение galex1981 » 01 июн 2009, 10:59

А дебаггером AVR студии не пробовал проверять? Проверь, если не получится, я дома вечером проверю
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: AVR + I2C

Сообщение dmq » 01 июн 2009, 11:06

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

В аврстудио код сам рабочий, на симуляцию сигналов TWCR реагирует адекватно, я дебаггером дальше в протеусе работаю, чтобы понять правильно ли код посылает и понимает сигналы (и посылает ли он и интерпритирует правильные сигналы).
Получаю что процедура тестовой записи пары байтов отрабатывает (везде есть контроль приема АСК, и если что переход по ошибке), но содержимое виртуальной 24с04 не меняется.
dmq
 
Сообщения: 81
Зарегистрирован: 29 апр 2009, 14:02
Откуда: Екатеринбург
ФИО: Михаил

Re: AVR + I2C

Сообщение galex1981 » 01 июн 2009, 11:08

Значит что то не правильно, если содержимое не меняется. Попробуй все таки еще и в AVR - дебаггером проверить, я понимаю что долго но он 100% верные результаты выдает (не доверяю я Протеусу)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10