ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
742593 Топик полностью
Adept (15.03.2017 18:48 - 19:01, просмотров: 271) ответил Ксения на А вы при старте программы, сразу после enable, делайте state=idle:
зачем-то у меня именно так и сделано :)) (процедуры работы с I2C перетащены из другого проекта (с XMEGA A4) там, кстати, пакетное чтение работает, но тоже через одно место. Работает только в случае, если AckAction=NACK (т.е. мастер не подтверждает приём очередного бита) помню как напрыгался, чтобы заставить адекватно работать I2C на XMEGe после mega88, где всё завелось с "полпинка. В том проекте I2C-слейв был криптопроцессор Apple, и он нормально воспринимал отсутствие Ack от мастера. Здесь же у меня другая железка - MAX30101 (пульсометр с FIFO-стеком), так он сволочь пакетно отдаёт только в соответствии со стандартом (подавай ему ACK со стороны мастера, на каждый байт, кроме последнего). И всё бы ничего, но, когда, в соответствии со стандартом, я на последнем байте не даю подтверждения, после пакетного чтения шина подвисает.
...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)