TWI Master mehrere Slave

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Hat sich erledigt.

      Das Bit ist nicht verfügbar.

      Wenn der Master Adressiert mit R/W-Bit=1 (Lesen), wird der Reciver automatisch in den Transmit-Mode geschaltet.
      Man bekommt Status &hA8 und dann werden Daten zum Master transferiert.

      Je nachdem ob der Nack oder Ack sendet, gibts im Slave Status-Codes &hC0 oder &hC8.

      Man muss selber gar nichts umschalten. Man muss nur schauen mit dem TWEA-Bit im Controll-Register, dass das richtig gesetzt wird.
      Und logisch ganz zum Schluss TWINT löschen.
    • Die 8 im A8 ist das bit 3 das ich meinte. So scheint es nun zu laufen

      Quellcode

      1. Twi_isr:
      2. I2cstat = Twsr And $f8
      3. Select Case I2cstat
      4. Case Is = $60 'Slave adr empfangen Ack angefordert
      5. I2cein = 0
      6. I2cneu = 0
      7. Case Is = $80 'Daten angekommen '
      8. I2cinbuf(i2cein) = Twdr
      9. If I2cein < 15 Then Incr I2cein '16 Byte Buffer
      10. Case Is = $a0 'Stop
      11. If I2cein > 0 Then
      12. I2cneu = 1 'Abfrage vollständig
      13. I2cinbuf(i2cein) = 0 'für String
      14. End If
      15. Case Is = $a8 'Slave Read
      16. I2caus = 0 'Sendebyte Zähler
      17. Goto Sende
      18. Case Is = $b8 'Ack nach gesendetem Byte
      19. Sende:
      20. Twdr = I2csendbuf(i2caus)
      21. If I2caus < 15 Then Incr I2caus
      22. End Select
      23. Twcr = $c5 'int,ack,twiEn,intEn
      24. Incr I2cint 'intzaehler
      25. Return
      Alles anzeigen

      Und er stürtzt nicht mehr ab a_22_9ac28a82 , selbst wenn 64 Daten abgeholt werden (von max 16 verfügbaren :D )
      Wie erwachtet auch hier zwei ints mehr wie Daten