I2C Twint Bit Funktion

Gast #5167915
Lesenswert?
• ▲
▼
Hi,

ich verstehe den eigentlichen Sinn des TWINT Bit in TWCR. Dieses flag 
wird gesetzt (also das Bit gelöscht), wenn eine der im Datenblatt 
beschriebenen Aktionen abgeschlossen ist, z.B. das Senden einer Start 
Condition.
Jetzt stelle ich mir das so vor: ich schreibe etwas in TWCR (z.B. dass 
eine Start Condition gesendet werden soll) und schreibe
1
 TWCR = (1<<TWINT)| (1<<TWSTA)| (1<<TWEN); //Start Condition, start TWI

Jetzt ist TWINT=1 und wird gelöscht (also das flag gesetzt), sobald der 
Vorgang abgeschlossen ist. Das hieße, dass ich warten müsste, solange 
TWINT=1 zutrifft, dann kann ich TWSR auslesen etc.
Das würde ich so realisieren:
1
while(TWCR &(1<<TWINT));
Ich finde aber überall, auch im Datenblatt, den Befehl
1
 while (!(TWCR & (1<<TWINT)));
und diese Schleife wird ja durchlaufen, solange TWINT gleich Null ist.

Könnt ihr mir erklären, wie das zusammenpasst? Wann, nachdem ich TWINT 
auf 1 gesetzt habe, wird es wieder gelöscht?
Gast #5167927
Lesenswert?
• ▲
▼
TWINT wird nur durch die Hardware gesetzt; gelöscht wird es nur durch 
die Software, und zwar durch Beschreiben mit einer 1.

"The TWINT Flag must be cleared by software by writing a logic one to 
it. Note that this flag is not automatically cleared by hardware when 
executing the interrupt routine."
Gast #5167931
Lesenswert?
• ▲
▼
Ja, so hatte ich es auch verstanden, aber es wird doch erst durch 
Hardware gesetzt, wenn die Aktion abgeschlossen ist. So lange bleibt es 
doch auf 1, also müsste ich doch warten, solange TWINT eins ist, und 
nicht, solange es Null ist?
Gast #5167945
Lesenswert?
• ▲
▼
Aaaah, vielen vielen Dank, da wäre ich jetzt wirklich nicht drauf 
gekommen!
Das heißt, wenn ich eine eins in TWINT schreibe, ist TWINT null, und 
wird durch Hardware auf eins gesetzt, wenn die Aktion abgeschlossen ist. 
Stimmt so, gel?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.