Hallo,
ich habe ein Problem mit einem I2C Slave von Linear..
Der als Master verwende ich einen ATMega16 und die lib von Peter Fleury.
via uart habe ich herausgefunden das das programm ab und zu in einer
Zeile der I2C_write routine hängen bleibt, nachdem ich ein NACK vom
Slave bekomme.
leider ist kein Muster erkennbar wann es passiert.
als Board dient die MICES2 µC Platine. Pullups hab ich nicht, dafür die
"aktive Terminierung" aus der Bascom Hilfe(bild anbei)
in folgender Zeile hängts:
1 | // wait until transmission completed
|
2 | while(!(TWCR & (1<<TWINT)));
|
Sieht für mich so aus als könnte er garnicht / nicht fertig senden.
Momentan reagiere ich nicht, wenn ich ein NACK erhalte. Hab schon
versucht, nachdem ich ein NACK erhalten habe das senden abzubrechen und
mit I2C_stop und dann wieder I2C_Start_wait neu anzufangen aber das
klappt auch nicht 100% -> Probleme noch vorhanden!!
momentaner Stand ist, das ich den Bus nicht freigebe, da der Mega16 der
einzige Master am Bus ist und bleibt. aber auch keine Besserung!
wäre toll wenn mir mal einer das Brett vorm Kopf entfernen könnte!
vielen Dank und Gruß
Matthias