-
        

Ergebnis 1 bis 4 von 4

Thema: TWI-Datenbus--> Frage zum TWDR-Register

  1. #1

    TWI-Datenbus--> Frage zum TWDR-Register

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    ich hab im Wiki ein wenig versucht das Programmtechnisch dazustellen, hast du diese Seiten schon angeschaut ?
    TWI und Twi-Praxis

  3. #3
    Jo Danke!
    Habe mir soeben mal deine Seite angeschaut!
    Jedoch kann ich mit Bascom net so viel anfangen!

    Ich vergleiche in einer while-schleife das RegisterTWDR immer mit einen festen Wert, jedoch wird die while-bedingung nie TRUE!!!Aber warum nur?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.09.2004
    Ort
    Darmstadt
    Alter
    47
    Beiträge
    166
    Wenn ein Byte mit der Funktion z.B. 'twi_write (0xAA)' an einem Slave geschickt wird, wird nun dieser Wert im Register TWDR gespeichert?
    Kommt darauf an, was twi_write tut. Vielleicht das: "Writes data (one byte) to the TWI bus. This function is also used for sending the
    address."? Welche Bibliothek wird hier benutzt? Bevor der Master Daten sendet, muss er erst die Slave-Adresse senden. Die Daten, die danach gesendet werden, stehen in TWDR. Vorher muss aber der Slave auf das Senden der Adresse richtig reagiert haben.
    while (TWDR==0xAA) //also warten bis der TWDR den Wert AA enthält.
    {dann tue was;}
    ist das ein Tippfehler oder soll das so sein? "while (TWDR==0xAA)" bedeutet "Schleife, solange TWDR den Wert AA hat"

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •