-         

Ergebnis 1 bis 4 von 4

Thema: Doppelte Interruptquellen bei TWI?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607

    Doppelte Interruptquellen bei TWI?

    Anzeige

    Hallo Leute,

    ich lese mich gerade in das TWI Bus-System der AVRs ein. Dabei kommt mir folgendes unlogisch vor:
    Bei den Bedingungen, die ein Interrupt auslösen konnten stehen u.a. diese beiden:

    After the TWI has transmitted SLA+R/W.
    After the TWI has transmitted an address byte.

    Ich sehe dazwischen keinen Unterschied... Seht ihr einen?

    Gruß, Yaro

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Und noch eine Frage:
    Wenn im Slave-Mode eine STOP anweisung (vom Master) ausgeführt wird, dann wird TWINT gesetzt, was dazu führt, dass SCL auf LOW gehalten wird... Was kann man tun, um SCL wieder auf HIGH (bzw. nicht LOW) zu heben? Kann man einfach eine STOP-Bedingung senden?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    yaro,

    ja, SLA wird immer in demselben Byte versendet, wie das R/W-Bit. Deshalb kann es gar keinen Unterschied geben. Es ist so, wie Du es verstehst. Am Beste versteht man die Abläufe, wenn man nach den Zustandsbytes (TWSR) geht. Immer, wenn ein TWI-Interrupt erzeugt wird, steht auch ein neuer Wert in TWSR an, der angibt, was der Interrupt bedeutet.

    Bei der STOP-Anweisung hast Du irgendwas in den falschen Hals bekommen : Nach einer STOP-Anweisung kann SCL gar nicht low sein! Die STOP-Anweisung besteht in einer 0->1-Flanke auf der SDA-Leitung, während die SCL-Leitung stabil auf 1 ist. Wenn SCL Null wäre, wäre der Bus blockiert.

    Der heikle Fall ist das "clock stretching" durch den Slave Transmitter: Er kann die SCL-Leitung auf 0 halten, so lange er die Antwort an den Master zusammenstellt. Wenn er sich dabei aufhängt, ist der Bus tot. Deshalb benutze ich kein clock stretching. Eigentlich benutze ich den Slave transmitter-Modus ausschliesslich beim Abfragen externer TWI-Chips (PCF 8574 u.ä.). Bei AVR-AVR-Kommunikation benutze ich nur den Master-Modus.

    Ciao,

    mare_crisium

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Alles klar.
    Danke für die Antwort!

    Gruß, Yaro

Berechtigungen

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