0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 54
|
|
1 | |
AT24C16A по i2c c Atmega8535. Не читается последовательность25.02.2010, 21:34. Показов 8177. Ответов 6
Метки нет (Все метки)
решил опробовать 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
|
25.02.2010, 21:34 | |
Ответы с готовыми решениями:
6
определить является ли заданная последовательность символов в строке симметричной: читается одинаково слева направо и сп Конвертер i2c в usb - MIKROE-1421, FTDI click USB 2.0 to I2C для ПК диск с фильмом читается на двд для телевизора не читается на компьютерном двд роме ШИМ на Atmega8535 |
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 |
Вот че на 7й странице пдф-ки выделено:
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 | |
26.02.2010, 12:32 | |
Помогаю со студенческими работами здесь
7
компаратор Atmega8535 USBasp на ATmega8535 Atmega8535. Симулятор atmega8535 таймер АЦП, Atmega8535 Проблема с вн. прерываниями atmega8535 ATMega8535. Работа с АЦП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |