Hallo, ich versuche nun schon seit Tagen die TWI auf meinem Atmega88 zum laufen zu bekommen, eigentlich ist das ja auch nicht so schwer aber irgendwo ist der Wurm bei mir drin. Das aktuelle Problem ist das nicht einmal ein Start Signal richtig gesendet wird, zumindest steht im Status Register des µC nicht TW_START. Somit geht in meinem Fall immer die Fehler LED an. Habe auch schon diverse andere TWI Projekte angeschaut wie Fleur... Kann dort aber keinen Unterschied vom "TWI Start" zu meinem Code feststellen. Zur Hardware: Sensor ist direkt an den 2 TWI Leitungen angeschlossen und mit 4K7Ohm gegen 5V gelegt. LED & Taster funktionieren einwandfrei, festgestellt durch diverse andere Projekte. Software: Ich nutze das AVR Studio 4.19. Wäre super wenn da einer mal kurz auf meinen Code schauen könnte. Gruß, Bue
Das einzige was ich so auf anhieb sehe ist, dass du nach dem Stop nicht darauf wartest bis die Stop-condition gesendet wurde "while(TWCR & (1<<TWSTO));"
Hast du denn externe Pull up Widerstände in die beiden Leitungen eingelötet? Dennis
hatte vor kurzem auch das Problem. Mein Code sieht fast identisch aus. Ich hab damals nur meinen Slave resetten müssen, weil er das Signal "nicht aufnehmen konnte". Emüfängt dein Slave das Signal im Interruptbetrieb?
Hallo, 1. Wie ist die Slave Adresse? beachte, dass die Adresse in den 7 höchsten Bit sitzt, und das Lese/Schreib bit das Bit 0 ist 2. Mit welchem Takt arbeitet der µC...rechne noch mal das TWBR nach...
Hy, also Pull Up Widerstände habe ich an beiden Leitungen angelötet. Hab noch den "Schaltplan" angehängt, vll. hilft der weiter. Das mit der Stop Condition füge ich noch hinzu und teste es. Aber daran kanns es ja eigentlich nicht liegen das er gleich nach dem Start die LED anmachtt, sprich einen Fehler hat.
Hast du denn irgend ein Oszi? Das du dir einfach mal anschauen kannst, was überhaupt auf dem Bus passiert. Dennis
Mir fällt nochwas ein. Du weist nicht, in welchem Schritt die rote LED angeschalten wird. Nimm das auf die rote LED schalten mal überall bis auf einmal raus. Sozusagen durchprobieren, wann die LED wirklich angeht, um rauszufinden, in welchem Schritt der Fehler liegt. Dennis
Also ich habe jetzt die Stop Condition hinzugefügt und aus unerfindlichen Gründen macht er den Start Befehl nun... Durch auskommentieren habe habe ich nun rausgefunden das er nun an der Register Adresse senden die LED anmacht. Die ganzen Adressen habe ich schon mehrmals kontroliert die passen.
Aber offensichtlich bestätigt dein Sensor die Adresse nicht.. Dennis
Hallo, ich habe meine "Fehler" gefunden. 1. Hab ich teilweise die TWINT Flag überprüfung per while vergessen. 2. Hatte der Chip einen Wackelkontakt wegen einer schlechten Lötstelle. Ja, nun funktioniert alles wie gedacht mit dem TWI. Vielen Dank an alle :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.