Start Condition Detector bei USI im TWI Mode Interrupt

OP (Firma: privat) #1537561
Ich versuche das USI in einem attiny45 als I2C Slave zu verwenden.

Wenn ich die Doku zur CPU und die AppNote312 angucke, sollte der 
StartConditionInterrupt bereits ausgelöst werden sobald SDA low wird.
Im Beispielcode wird daher noch händisch gewartet bis SCL auch low wird 
und die Startcondition quasi komplett ist:
1
  // Wait for SCL to go low to ensure the "Start Condition" has completed.
2
  // If a Stop condition arises then leave the interrupt to prevent waiting forever.
3
    while ( (PIN_USI & (1<<PORT_USI_SCL)) & !(tmpUSISR & (1<<USIPF)) );

Im Interrupt zu warten kann ich mir in meinem Fall nicht leisten. Das 
wäre ja eigentlich auch leicht anders zu lösen.

Allerdings löst "mein" USI den Interrupt tatsächlich erst aus, sobald 
SCL ebenfalls low wird.

Das kann ich mir nicht recht erklären. Zum einen entspricht es nicht dem 
aufgrund des Schaltplans vom StartCondition Detector zu erwartenden 
Verhalten, zum anderen wäre dann die obige Codezeile sinnlos.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.