Also bei mir ändert sich nichts, wenn ich das umschreibe!
Warum und wo muss ich denn das TWINT wieder setzen?
teilweise...ich habs folgendermaßen gemacht
TWCR = 0x45;
sei();
TWCR |= 0b10000000;
der letzte Befehl ist eine Oder-Verknüpfung, der das MSB(Bit Nummer 7, also das höchste) setzt
wenn ich das vor dem sei stehen hab, gehts nicht, und was ist, wenn ich das sei vor die ganze Prozedur setze, hab ich noch nicht probiert, da es eben so ging
Also bei mir ändert sich nichts, wenn ich das umschreibe!
Warum und wo muss ich denn das TWINT wieder setzen?
du musst das TWINT am Ende der ISR(in ASM also vor dem ret, oder was zum Teufel man da verwendet) wieder auf 1 setzen
du musst das setzen, weil ansonsten das TWI-Modul nichts mehr macht
dieses wird bei einem Interrupt, also wenn das TWINT-Bit gleich 0 ist, gestoppt, damit man zB Daten auswerten kann
aber das TWINT wird nicht automatisch nach der ISR wieder auf 1 gesetzt, das muss man manuell machen
Ok, ich probiere es gleich aus!
Hmmmm, schade!
Der µC gibt leider noch immer, trotz der Änderungen, nur seine eigene Adresse aus, komisch!
Naja, ich gehe jetzt erstmal ins Bett, trotzdem Danke für Deine Hilfe! :o)
kannst du bitte mal den aktuellen Code posten?
ich weiß nicht, ob du es inzwischen geändert hast, aber in dem von dir geposteten Code für den Slave wartest du ja immer darauf, dass TWINT gleich 1 gesetzt wird, das wird aber nicht passieren, weil du das manuell machen musst
Guten morgen Pascal!
Also im Datenblatt-Beispielcode des Mastertransmitters habe ich das so verstanden, dass der Master immer auf die Bestätigung durch TWINT=1 wartet, bevor er den Statuscode abfragt.
Das Prinzip habe ich auf den Slavereceiver übertragen.
Mit dem Statuscode 0x60 scheint das ja auch zu funktionieren, aber mit dem Statuscode 0x80 nicht.
Ich kann es gelich auch mal ohne ausprobieren! :o)
Mittlerweile vermute ich sogar, dass mein Mega8 kaputt ist, denn ein anderer Mega8 gibt etwas ganz anderes aus, nämlich nicht seine eigene Adresse, sondern garnichts.
Ich werde mir gleich einen neuen Mega8 aus der Kiste kramen und es nochmals ausprobieren.
Im Notfall werde ich auf den Mega8 mal den Mastertransmitter aufspielen und dann sehen, ob er so funktioniert!
Den aktuellen Code werde ich gleich posten! :o)
das ist ja auch richtig, zB beim Senden von START, schreibst du was ins TWCR-Register und wartest dann darauf, dass er damit fertig ist, um dann die Addresse zu sendenAlso im Datenblatt-Beispielcode des Mastertransmitters habe ich das so verstanden, dass der Master immer auf die Bestätigung durch TWINT=1 wartet, bevor er den Statuscode abfragt.
beim Slave ist das aber anders, wenn der TWI-Interrupt ausgelöst wird, wird das TWINT=0 gesetzt, das TWI ist dann solange inaktiv bis du das TWINT wieder gleich 1 setzt, erst dann arbeitet das TWI-Modul wieder
Achso, naja dann war das wohl ein Denkfehler meinerseits! :o(
Leider muss ich jetzt ersteinmal für meine Physikprüfung am Di. üben, aber nachher melde ich mich nochmal und probiere es weiter!
Lesezeichen