mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI-Datenbus--> Frage zum TWDR-Register


Autor: rema (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Freunde!
Ich hoffe sehr, das Ihr mir weiterhelfen könnt!
Ich betreibe eine TWI-Datenbus mit einem Master und 3xSlaves. Das lesen
und schreiben von Daten auf den Datenbus funktioniert einwandfrei.
Bilder vom SpeicherOzzi beweissen dies.
Nun zu meinem Problem:
Ich verwende bei jedem µC das hardware-basierende TWI-Module!

Wenn ein Byte mit der Funktion z.B. 'twi_write (0xAA)' an einem Slave
geschickt wird, wird nun dieser Wert im Register TWDR gespeichert?

Ich wollte folgendenes auf den Slaves realisieren:

while (TWDR==0xAA) //also warten bis der TWDR den Wert AA enthält.
{dann tue was;}

später im Prgramm möchte ich eine case Funktion verwenden:

switch (wert aus TWDR)
case 0x01 {tue was}
case 0x02 {tue was anderes}

so wie hier beschrieben ist, habe ich es schon probiert, aber leider
ohne Erfolg!
Ist meine Vorgehnsweise OK, oder bin ich auf dem HOLZWEG?

Freue mich auf Antworten
Gruss rema

Autor: Gast ein Anderer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub hier ist ein kleines Missverstäntnis:
while (TWDR==0xAA) //also warten bis der TWDR den Wert AA enthält.
{dann tue was;}
while heist solange, also eher:
while (TWDR==0xAA) //solange TWDR den Wert AA enthält.
{macht der µC was hier steht;}
Sollte aber hier keinen Unterschied machen.
Aber vieleicht hab ich deinen codschnipsel auch nur falsch verstanden
ist halt ein bischen wenig.
Dem AVR wird es egal sein was dein Oszi dir Anzeigt. Ob er was erhalten
hat sagt er dir im Statusregister.
Ich würde erst mal das TWSR (TWI Satatus register) abfragen 0x80 =
"normaler Slave received data").
dann kannst du mit switch und case weitermachen.
Gruß

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.