Heliogabal
Guest
Tue Aug 08, 2006 12:35 pm
Jakie znaczenie ma bit TWEA, gdy ATmega pracuje w trybie podrzednym i wysyla
dane do mastera ? W ksiazce "Mikrokontrolery AVR ATmega w praktyce"
Baranowskiego (str.117) napisane jest, ze "okresla on, czy spodziewany jest
odbior potwierdzenia". Nie rozumiem tego, przeciez to master decyduje o tym,
czy dane maja byc nadal przesylane (jesli wystawi ACK) czy juz nie (dla
NACK), wiec po co slave ma okreslac czy spodziewane jest potwierdzenie ?
Heliogabal
AK
Guest
Tue Aug 08, 2006 8:44 pm
Heliogabal napisał(a):
Quote:
Jakie znaczenie ma bit TWEA, gdy ATmega pracuje w trybie podrzednym i
wysyla dane do mastera ? W ksiazce "Mikrokontrolery AVR ATmega w
praktyce" Baranowskiego (str.117) napisane jest, ze "okresla on, czy
spodziewany jest odbior potwierdzenia". Nie rozumiem tego, przeciez to
master decyduje o tym, czy dane maja byc nadal przesylane (jesli wystawi
ACK) czy juz nie (dla NACK), wiec po co slave ma okreslac czy
spodziewane jest potwierdzenie ?
Cytat z data sheet:
If the TWEA bit is written to zero during a transfer, the TWI will
transmit the last byte of
the transfer. State $C0 or state $C8 will be entered, depending on
whether the Master
Receiver transmits a NACK or ACK after the final byte. The TWI is
switched to the not
addressed Slave mode, and will ignore the Master if it continues the
transfer. Thus the
Master Receiver receives all 1 as serial data. State $C8 is entered if
the Master
demands additional data bytes (by transmitting ACK), even though the
Slave has transmitted
the last byte (TWEA zero and expecting NACK from the Master).
Pozdr
AK
Quote:
Heliogabal
Heliogabal
Guest
Tue Aug 08, 2006 9:59 pm
Użytkownik "AK":
Quote:
Cytat z data sheet:
If the TWEA bit is written to zero during a transfer, the TWI will
transmit the last byte of
Master Receiver receives all 1 as serial data. State $C8 is entered if
Rozumiem, ze w normalnej sytuacji powinno byc TWEA=1, ale jesli TWEA=0 to
master zostanie wprowadzony w blad, tak ? Mamy tu taka sytuacje, ze master
oczekuje danych, bo wystawil ACK, a tu nagle slave sie wylaczyl i w ten
sposob zamiast faktycznych danych master otrzymuje same jedynki. I taki
odbior trwa dopoki odczyta tyle bajtow, ile sobie zaplanowal nie wiedzac
nawet, ze slave juz nie reaguje. Gdzie tu sens ?
Heliogabal
AK
Guest
Wed Aug 09, 2006 5:20 pm
Heliogabal napisał(a):
Quote:
Użytkownik "AK":
Cytat z data sheet:
If the TWEA bit is written to zero during a transfer, the TWI will
transmit the last byte of
Master Receiver receives all 1 as serial data. State $C8 is entered if
Rozumiem, ze w normalnej sytuacji powinno byc TWEA=1, ale jesli TWEA=0
to master zostanie wprowadzony w blad, tak ? Mamy tu taka sytuacje, ze
master oczekuje danych, bo wystawil ACK, a tu nagle slave sie wylaczyl i
w ten sposob zamiast faktycznych danych master otrzymuje same jedynki. I
taki odbior trwa dopoki odczyta tyle bajtow, ile sobie zaplanowal nie
wiedzac nawet, ze slave juz nie reaguje. Gdzie tu sens ?
Np. Slave emuluje pamiec EEPROM i master proboje czytac poza dozwolonym
obszarem ?
Pozdr
AK