Hi, ich hab es jetzt nach endlosen Versuchen geschafft, das meine TWI-Routine läuft.
Auf die Schnelle hänge ich mal die Interupt-Routine und die Subroutine zum Einleiten der Transmission an.
WR = R16, HR = R17
Die Routine funktioniert in etwa so: Der Teilnehmer, der SUB_START_TWI_TRANSMISSION ausführt macht sich zum Master, schickt ein Byte zur Adressierung der gewünschten Daten an den Slave, und bekommt dann 8 Datenbytes + eine Checksumme zurück. Die Variable STAT_TWI kennzeichnet die möglichen Zustände von Interupt zu Interupt. Ist die Übertragung erfolgreich, bleibt der Status bei 0x10 stehen, bei Fehlern meldet sich die Routine mit 0x1D zurück.
Der abgefragte Slave merkt im Idealfall nichts davon, das er abgefragt wird, die Daten müssen also immer im Datenbereich bereitliegen.
Vielleicht kannst Du Dir ja ein paar Anregungen holen.
Ach so, ich hab es mir einfach gemacht, in dem ich nur gerade TWI-Adressen zulasse, damit das R/W Bit gleich frei ist.
Lesezeichen