-
- Да откажется, шина повиснит заново можно только рестартом всего модулч TWI - m9rs(10.05.2013 21:27)
- Интересный вопрос...А если слейв чего-то не дополучит(байт на середине оборвётся из-за сброса мастера, например)? Слейв застрянет в ожидании и рестарт TWI в меге не поможет? Есть какие-то способы шину сбросить? - Apтём(10.05.2013 21:32)
- Слейв тупее он ресетится стартом или повторным стартом. А если в момент передачи в 24С01 вы её просто извлекёте из панельки иона не даст ответный АСК то неполно реализовынный алгоритм (ну всё красивое дерево в даташите) повесит мегу. - m9rs(10.05.2013 21:37)
- По идее да - Apтём(609 знак., 10.05.2013 21:47)
- Во-первых, в AVR не I2C, а TWI ;) Во-вторых, проблема зависаний слейва решается процедурой Bus clear, описанной в спецификации I2C. - rezident(11.05.2013 00:20, ссылка)
- Можно ли совсем коротко привести основные отличия I2C от TWI? А то мне тягостно сравнивать по описанию, т.к. не имела дела ни с тем, ни с другим. - Ксения(11.05.2013 00:35)
- Ксения, вы смайлик не заметили что ли? - rezident(11.05.2013 01:43)
- C точки зрения управления слейвом (АВР - мастер) отличий не заметил. Всё прекрасно пишется и читается, как того хочет I2C слейв (т.е. в соответствии с протоколом). Adept(81 знак., 11.05.2013 01:01)
- Все три буквы отличаются - ничего общего у них нет вообще. - Apтём(11.05.2013 00:46)
- Спасибо, не знал что такая процедура предусмотрена. Почему-то не попадалась раньше ни в одной апноте или либе. Apтём(268 знак., 11.05.2013 00:31)
- ПроCLOCKкать шину процедурой Bus clear рекомендуется всегда после включения (подачи питания). - rezident(11.05.2013 01:46)
- Хм.. Зачем всегда? Не лучше ли в случае обнаружения ошибки это делать? Apтём(206 знак., 11.05.2013 01:57)
- Я написал рекомендуется, а не требуется. Не хотите - не делайте. Мастер, реализованный на МК, может ведь и
харакири"горячий" рестарт по какой-либо причине сделать (сброс по WDT, например). А "железячному" слейву этот "горячий" rezident(154 знак., 11.05.2013 02:11)- Я понял что рекомендуется, а не требуется. Я спросил есть документ где это рекомендация...просмотрел свой предыдущий пост и увидел, что там не вопросительного знака... Apтём(496 знак., 11.05.2013 03:04 - 03:13)
- Я удивляюсь вашему мастерству домысливать прочитанное между строк! :) Где вы увидели мою рекомендацию выполнять Bus clear при старте? Я писал, что рекомендуется а) при включении питания или "горячем" рестарте мастера (МК в режиме rezident(110 знак., 11.05.2013 20:38 - 20:41)
- гм... Apтём(664 знак., 12.05.2013 00:44)
- Ну я "старт" понял как START-условие на шине I2C. B общем добавить к написанному мне уже нечего, а переливать из пустого в порожнее дальше нет желания. Sapienti sat. - rezident(12.05.2013 15:10)
- Спасибо за разъяснения. - Apтём(12.05.2013 21:53)
- Ну я "старт" понял как START-условие на шине I2C. B общем добавить к написанному мне уже нечего, а переливать из пустого в порожнее дальше нет желания. Sapienti sat. - rezident(12.05.2013 15:10)
- гм... Apтём(664 знак., 12.05.2013 00:44)
- Я удивляюсь вашему мастерству домысливать прочитанное между строк! :) Где вы увидели мою рекомендацию выполнять Bus clear при старте? Я писал, что рекомендуется а) при включении питания или "горячем" рестарте мастера (МК в режиме rezident(110 знак., 11.05.2013 20:38 - 20:41)
- Я понял что рекомендуется, а не требуется. Я спросил есть документ где это рекомендация...просмотрел свой предыдущий пост и увидел, что там не вопросительного знака... Apтём(496 знак., 11.05.2013 03:04 - 03:13)
- Я написал рекомендуется, а не требуется. Не хотите - не делайте. Мастер, реализованный на МК, может ведь и
- Хм.. Зачем всегда? Не лучше ли в случае обнаружения ошибки это делать? Apтём(206 знак., 11.05.2013 01:57)
- ПроCLOCKкать шину процедурой Bus clear рекомендуется всегда после включения (подачи питания). - rezident(11.05.2013 01:46)
- Можно ли совсем коротко привести основные отличия I2C от TWI? А то мне тягостно сравнивать по описанию, т.к. не имела дела ни с тем, ни с другим. - Ксения(11.05.2013 00:35)
- Да. Если у вас нет других мастеров на шине, которые могут перебить мегу, то это наверное помеха которая распознаётся мастером как чужой старт. - m9rs(10.05.2013 21:56)
- Других мастеров не было. Apтём(375 знак., 10.05.2013 22:50)
- Во-первых, в AVR не I2C, а TWI ;) Во-вторых, проблема зависаний слейва решается процедурой Bus clear, описанной в спецификации I2C. - rezident(11.05.2013 00:20, ссылка)
- По идее да - Apтём(609 знак., 10.05.2013 21:47)
- Слейв тупее он ресетится стартом или повторным стартом. А если в момент передачи в 24С01 вы её просто извлекёте из панельки иона не даст ответный АСК то неполно реализовынный алгоритм (ну всё красивое дерево в даташите) повесит мегу. - m9rs(10.05.2013 21:37)
- Интересный вопрос...А если слейв чего-то не дополучит(байт на середине оборвётся из-за сброса мастера, например)? Слейв застрянет в ожидании и рестарт TWI в меге не поможет? Есть какие-то способы шину сбросить? - Apтём(10.05.2013 21:32)
- Да откажется, шина повиснит заново можно только рестартом всего модулч TWI - m9rs(10.05.2013 21:27)