Dzień Dobry
Mam taki problem robie sobie ćwiczonko z bluebooka "sprzętowa obsługa I2C" str.297- na atmedze 88 czyli piewsza komunikacja z zegarkiem RTC.
Problem w tym ze program mi sie zawiesza kiedy próbuje dokonać pierwszego zapisu do PCF8583 ( ustawienie czasu)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
za pomocą diody doszedłem że problemem jest funkcja TWI_stop() która kończy funkcję TWI_write_buf
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
mianowicie w tej funkcji jest pętla oczekująca while której warunkiem jest aby z niej "wyjśc" wyzerowanie bitu TWSTO
ten bit powinien wyzerować sie automatycznie po zakończeniu procedury ale nie chce pytanie DLACZEGO???
Z noty katalogowej wyczytałem że jesli mikrokontroler działa w jakiś sposób w trybie SLAVE to ten bit działa troche inaczej ale zabardzo nie rozumiem jak..
opis bitu z noty
• Bit 4 – TWSTO: TWI STOP Condition Bit
Writing the TWSTO bit to one in Master mode will generate a STOP condition on the 2-wire
Serial Bus. When the STOP condition is executed on the bus, the TWSTO bit is cleared automatically.
In Slave mode, setting the TWSTO bit can be used to recover from an error condition.
This will not generate a STOP condition, but the TWI returns to a well-defined unaddressed
Slave mode and releases the SCL and SDA lines to a high impedance state.Pytanie co sie dzieje że tak się dzieje ?
Pozdrawiam