mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Start Condition Detector bei USI im TWI Mode Interrupt


Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
  // Wait for SCL to go low to ensure the "Start Condition" has completed.
  // If a Stop condition arises then leave the interrupt to prevent waiting forever.
    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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.