Uwaga, do biblioteki TWI (I2C) w wersji sprzętowej wkradł się dosyć istotny błąd. Niestety w kodzie w książce i na DVD w każdej bibliotece został on powielony. Chodzi o funkcję TWI_stop().
void TWI_stop(void) {
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
while ( !(TWCR&(1<<TWSTO)) ); // <---- w tej linii niepotrzebnie jest zastosowana negacja !
}
|
void TWI_stop(void) {
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
while ( (TWCR&(1<<TWSTO)) ); // <---- w tej linii usunięto negację !
}
|