Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/44: Рейтинг темы: голосов - 44, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 54
1

AT24C16A по i2c c Atmega8535. Не читается последовательность

25.02.2010, 21:34. Показов 8177. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
решил опробовать y2s. в качестве примера взял AT24C16A и присобачил к меге8353. протокол вручную сделал, не используя аппаратный twi. побайтно все прекрасно пишет и читает. постранично пишет, а вот читать больше 1 байта не хочет(. может тут какие то подводные камни есть? подскажите.

такие дела: например сидит в еепромке несколько байтов: 12 13 14 15 16. при чтении по одиночке все ок, но только стоит читать последовательность, как возвращается 12 00 00 00 00. интересно, что при чтении байта 12, между ним и следующим за ним ackом слейв попытался выставить единицу. именно при низком уровне на clock. и до acka сбросить ее. вот я думаю, может это он хотел nack выдать, да ошибся с очередью).

и вот такая штука еще: если писать данные, а потом сразу же читать их, то указатель адреса не помещается на место, которое указано в команде при чтении, а остается на следующем байте от окончания записи.
заработало только после того, как воткнул паузу около 6мс после записи
и перед чтением. почему так?

и вопрос в догонку: зачем в чтении последним битом перед стопом делать nack, ведь он и с ack прекрасно работает? зачем слейву этот nack, если за ним все равно идет стоп?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2010, 21:34
Ответы с готовыми решениями:

определить является ли заданная последовательность символов в строке симметричной: читается одинаково слева направо и сп
определить является ли заданная последовательность символов в строке симметричной: читается...

Конвертер i2c в usb - MIKROE-1421, FTDI click USB 2.0 to I2C для ПК
Подскажите как подключить устройство с интерфейсом i2c к компьютеру. Требуется управление с...

диск с фильмом читается на двд для телевизора не читается на компьютерном двд роме
диск с фильмом читается на двд для телевизора не читается на компьютерном двд роме хочу этот...

ШИМ на Atmega8535
Доброго времени суток. MK Atmega8535. Необходимо калибровать яркость светодиода, подключенного к...

6
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
25.02.2010, 21:57 2
Как мне объясняли - читай даташит на память!
Там указанны все тайминги!
Без паузы после записи около 5-10мс- ничего не получается!
Я как поставил паузу - все нормально сразу стало!
Насчет последнего НАК - в даташите есть формат записи-чтения, там все нарисовано!
0
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 54
25.02.2010, 22:19 3
Про паузы при последовательном чтении ничего нет. А про НАК я к тому что и без него работает. Диаграммы ясны, но он просто не при делах как то там получается. Наверно нужно, чтобы к моменту стопа все переходные процессы завершились в слейве завершились, ну да ладно, это просто интерес. Про чтение - завтра еще раз все перепроверю.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
25.02.2010, 22:29 4
Без NACKа вы ставите slave в неудобное положение - он загрузил данные для вывода на следующий SCK и может запросто задавить шину.

Попробуйте написать тоже, только для slave - сразу станет понятно, зачем NACK.
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
25.02.2010, 22:37 5
Цитата Сообщение от moxkrymd
Про паузы при последовательном чтении ничего нет. А про НАК я к тому что и без него работает. Диаграммы ясны, но он просто не при делах как то там получается. Наверно нужно, чтобы к моменту стопа все переходные процессы завершились в слейве завершились, ну да ладно, это просто интерес. Про чтение - завтра еще раз все перепроверю.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 111
26.02.2010, 02:30 6
как воткнул паузу около 6мс после записи
и перед чтением. почему так?
Байтики отправить - отправили. Это часть дела. А ЕЕПРОМ-ке надо ж эти байтики обработать и решить, что с ними сделать, записать кой-куда или еще че-нить. А это, какбэ, не моментально происходит.

Вот че на 7й странице пдф-ки выделено:
Note: 1. The write cycle time tWR is the time from a votyd stop condition of a write sequence to the end of the internal clear/write cycle.
в той же пдф-ке на 1й странице ( и на 5й страничка в таблице) :
Self-timed Write Cycle (5 ms max)
0
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 54
26.02.2010, 12:32 7
Всем спасибо за ответы. Остался не решенным главный вопрос про чтение последовательности. В датащите про тайминги при чтении ничего не нашел и на диаграмме просто указывается , что адрес сам инкрементируется и для окончания чтения нужно лишь, как и обычно вставить в конце nack.
Я писал в первом посте про какой-то внезапный единичный бит от слейва перед ackом от мастера при низком scl. Вот картинки:







Этот бит выставляем именно слейв, потому что данные, выставленные мастером начинаются со 2ой половины длины низкого полупериода, а этот прямо-таки наезжает на задний фронт scl
0
26.02.2010, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2010, 12:32
Помогаю со студенческими работами здесь

компаратор Atmega8535
Здравствуйте!Казалось бы простая такая штука компаратор,но при попытке настройки и симуляции в...

USBasp на ATmega8535
Нет в наличии меги8 и меги48, зато есть горстка 8535. Посмотрел в датащите - 8535ая полностью по...

Atmega8535. Симулятор
Вообщем столкнулся с микроконтроллером ATmega8535 и нужно сэмулировать выполнение этого кода. Нашел...

atmega8535 таймер
Здравствуйте. У меня всё то же устройство. Задача такая: на шине разные слова. Слова с моим...

АЦП, Atmega8535
Задача. Код программы: .include"m8535def.inc" .cseg .org$0 ldi r16,low(RAMEND) ldi...

Проблема с вн. прерываниями atmega8535
Вкратце о части программы с которой возникают проблемы. По внешнему прерыванию контроллер...

ATMega8535. Работа с АЦП
Ребята нужна ваша помощь. Нужно написать программу для измерения переменного напряжения,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru