Цитата
Вам доводилось писать что-то с i2c, Вы пользовались какими-либо библиотеками?
Много , но преимущественно на asm , там всё просто и до предела ясно что происходит. Поищите поиском по форуму , может кто-то реализовывал такой режим на С . Я так особо не приглядывался.
Но алгоритм прост , можете и сами написать.
Мастер
1. Отослать запрос
2 TWAR= 0x01
3.TWCR = 1<<TWEA|1<<TWEN
Занятся чем либо полезным, если включено прерывание TWI или мониторить TWSR на
код $70 и если =
4.TWCR = 1<<TWEA|1<<TWEN|1<<TWINT
Занятся чем либо полезным, если включено прерывание TWI или мониторить TWSR на
код $90 и если =
5. Считать данные
TWCR = 1<<TWEA|1<<TWEN|1<<TWINT
Занятся чем либо полезным, если включено прерывание TWI или мониторить TWSR на
код $90 и если =
5. Считать данные.
Теперь главное!!!
Отключить TWI , что бы slave не наглел.
вернуть к исходному состоянию мастера - чисто библиотека ATMEL.
Можно мониторить TWCR- состояние бита TWINT - а затем читать TWSR на код статуса.
Slave
1. Получить запрос
2 . Оценить возложенную на него ответственность и подготовить 2 байта , если их ещё нет
3 . Ну далее тоже по библиотеке , он теперича мастер.
4. Отослать 2 байта.
5 Вернуть себе статус slave - обидно конечно.
Но честно говоря не совсем понятно , если уж мастер спокойно записывает в slave, то и читать по префиксу чтение должен тоже спокойно. Смотрите , как у Вас обрабатывается запрос от мастера на чтение данных . Может он не из той ячейки берёт данные , а тама токмо $FF