I2C u ATMega (zaver)
Jan Waclawek
konfera@efton.sk
Pondělí Červen 9 15:06:18 CEST 2008
Tak len pre poriadok, keby to v buducnosti niekto potreboval: TWI (I2C) modul u ATMegaxxx ma ocividne minimalne tie 3 horeuvedene bugy (nereaguje na START kym software po STOPe nezapise do kontrolneho registra; nearbitruje ked 2 mastre zacnu naraz; a, co je este fatalnejsie, ak v okamiku pokusu o STOP niekto na zbernii taha SDA do nuly, TWI na mastri zamrzne bez akehokolvek softwarovo detekovatelneho nasledku (nastavenia nejakeho flagu), s tym ze odvtedy prave on taha SDA do nuly).
Jedine rozumne riesenie je mat zavedeny timeout, ktory sa spusti po kazdom pokuse o START (a u mna aj po kazdom vyskytnuvsom sa preruseni) a po timeoute zresetuje cely modul TWI. Dalej po pokuse o generovanie STOPu sa sleduje flag TWSTO a nepokusi sa o dalsi START kym tento nie je vynulovany hardwarom.
Mimochodom som si uvedomil, ze takyto timeout je pre obecne riesenie tak ci tak nutny pre spamatanie sa zo stavu, ked je modul prave v ulohe slave a master z nejakeho dovodu nedovysiela spravu.
wek
Další informace o konferenci Hw-list