Witam
Od niedawna piszę w C na mikrokontrolery AVR. Ostatnio napisałem sobie procedurę do obsługi TWI na podstawie dokumentacji Atmela oraz informacji z neta. Bez problemu uruchomiłem na niej zegarek PCF8583. Jednak nie daje mi spokoju sprawa z błędami, tzn gdy odłączę jedną z lini transmisyjnych I2C to procesor się wiesza (a dokładniej zapętla przy „while”). Czy da się to jakoś ominąć, ale nie przez watchdoga?
Załączam kawałek problematycznego kodu:
Od niedawna piszę w C na mikrokontrolery AVR. Ostatnio napisałem sobie procedurę do obsługi TWI na podstawie dokumentacji Atmela oraz informacji z neta. Bez problemu uruchomiłem na niej zegarek PCF8583. Jednak nie daje mi spokoju sprawa z błędami, tzn gdy odłączę jedną z lini transmisyjnych I2C to procesor się wiesza (a dokładniej zapętla przy „while”). Czy da się to jakoś ominąć, ale nie przez watchdoga?
Załączam kawałek problematycznego kodu:
void twi_start(void)
{
TWCR= (1 << TWINT) | (1 << TWSTA) | (1 << TWEN);
while(! (TWCR & (1 << TWINT)));
}