PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TWI - Slave soll Master sagen, dass er keine Daten mehr hat



Gast2501212k
07.04.2008, 18:43
Hallo!
Gibt es im TWI Protokoll eine Möglichkeit, dass der Slave als Transmitter dem Master mitteilt, dass er keine weiteren Daten zur Verfügung hat?
Momentan ist dafür ein spezielles Byte in meinem Übertragungsprtokoll reserviert, was jedoch sehr umständlich ist...

linux_80
07.04.2008, 19:28
Hallo,
normalerweise macht man es so, dass bei der Übertragung einfach ein NACK nach dem letzten Byte gesendet wird, dann muss der Empfänger erkennen, das danach nix mehr kommt. Egal in welche Richtung die Daten gehen.

Gast2501212k
07.04.2008, 19:42
Ja nur kann der Slave als Transmitter keine NACKs senden... soweit ich das verstanden habe.
Der Slave sendet nur die Daten und er Master bestätigt dann mit einem ACK.
Ich kann nur beim Master ein NACK senden und bekomme das dann beim Slave mit, aber umgekehrt geht das nicht. Es sendet ja immer nur der Empfänger ein ACK oder NACK.

PicNick
07.04.2008, 19:53
Ich hab' da auch im offiziellen Protokoll nix gefunden, um dieses Problem zu lösen.
Man geht scheinbar immer davon aus, das der Master der klügere ist und weiss, wann es genug ist.
In meinem privat-twi-protokoll-layer hab ich das so, dass es bei "intelligenten" Geräten kein Daten-holen im Twi-Sinne gibt,
Der Master sendet ein Art "Enquiry" an irgend einen Empfänger, und der Sendet dann als Master die verlangten Daten
Sprich: es gibt nur forward-messages

Gast2501212k
07.04.2008, 20:19
Ohh man, ich schnall das Protokoll nicht... ich habe nun ein wenig hin und her geschraubt und nun geht das...also wenn ich beim letzten Byte was der Slave sended kein NACK sondern ein ACK sende kackt der Master ab und hängt irgendwo inner Endlosschleife, wenn er den nächsten Slave adressieren will.
Gibts in dem Protokoll ne Regel, dass vor dem Stopsignal ein NACK kommen muss???

linux_80
07.04.2008, 23:54
Hi,
müssen eigentlich nicht, der Slave kann das letzte Byte zwar bestätigen, aber der Master beendet trotzdem.
Wenn der Slave ein NACK zurückgibt muss aber ein Stop kommen, da er keine Daten mehr haben will.

In den AVR-Datenblättern ist das aber eigentlich schön aufgemalt, was alles sein kann oder darf, bei den verschiedenen Übertragungsarten.



Bei meinem letzten Post hattest natürlich recht, da hab ich nur mit einem Ohr hingelesen 8-[

PicNick
08.04.2008, 09:19
Der Slave kann seine gesendeten Bytes weder acken noch nacken

Frage: Verwendest du die Hardware-Twi oder strickst du selbst ?

Gast2501212k
08.04.2008, 18:31
Hardware TWI ;)

PicNick
09.04.2008, 10:06
Moin.
Na, dann ist das mögliche Repertoire ja fest vorgegeben. (Table 77)
Irgendwas a la "Lastbyte" gibt's nicht.
Also muss man eine Layer drüberlegen, der sowas regelt.
TWI regelt eigentlich nur den Zugriff auf den Bus. ~"CollisionSense"

Gast2501212k
09.04.2008, 16:00
ok danke, habe es nun gelöst in dem ich in mein Protokoll ein weiters Steuer-Byte eingefügt habe

PicNick
09.04.2008, 16:03
Sei nur vorsichtig und überlege, was du machst, wenn dieses Steuerbyte selbst in den Daten vorkommen soll.