Hallo, langsam bin ich am verzweifeln. Das TWI des ATMEGA8 will nicht funktionieren. Die Schaltung stimmt. Da mein selbstgeschriebener TWI funkt (hab' ich mal für den AT90S2313 geschrieben). Leider funktioniert der Hardware TWI nicht :-(. Ich hab' einen Externen Speicher 24C65. Der verlangt als Cotrollbyte 1010 000 0. Sprich Check, dann seine Adresse (auf GND) und Lesen/Schreiben.... Irgendwie habe ich Probleme mit dem SLA+W. Was muss ich den da reinschreiben. Ich denke das Controllbyte, oder....??? Wenn ich aber das Statusregister, nach dem Abschicken des Controllbytes, mir an den PC schicke, ist es immer nur die 8. D.h. Startzeichen wurde empfangen..... Ich hab' keine Ahnung mehr. Vielleicht ist ja jemand so nett und sieht sich den zusammengeschnittenen Auszug meines Quellcodes an. Vielen Dank, bluemole
Hallo Freaks,
so ich bin ein Stückchen weitergekommen. Das Beschreiben funktioniert
mittlerweile (kann den Speicher mit altem Softwarecode auslesen).
Allerdings das Lesen mittel Hardware TWI klappt immer noch nicht.
Ich bekomme alle Meldungen richtig zurück. Z.B. ACK Ok oder SLA+R OK.
Nach dem Befehl Lesen (Antwort SLA+R OK) werden aber die zu lesenden
Daten einfach nicht ins TWDR (Daten Register) eingelesen. Es steht
immer nur der letzte Datensatz drin.
Vielleicht kann mir ja hier jemand auf die Sprünge helfen :-)
Danke schon mal...
bluemole....
TWI_READ:
cbi portb,0 ;Kontrolllampen an/aus
sbi portd,7 ;Kontrolllampen an/aus
rcall TWI_START ;Start
ldi r16,0b10100000 ;Device Adresse und Write
rcall TWI_DATA ;Befehl/Daten auf Bus legen
ldi r16,0x00 ;Pointer auf Speicherplatz setzen
rcall TWI_DATA ;Adresse Speicherplatz High x00
ldi r16,0x00
rcall TWI_DATA ;Adresse Speicherplatz Low x00
rcall TWI_START ;Neues Start zeichen
ldi r16,0b10100001 ;Device Adresse und Read
rcall TWI_DATA ;Befehl/Daten auf Bus legen
in UART_temp,TWDR ;TWDR auslesen; STEHT MIST DRIN:-(((
rcall TWI_STOP ;Stop ausgeben
rcall serout ;Ergebnis an PC schicken
clr READ_FLG ;Flg löschen
cbi portd,7 ;Kontrolllampe aus
ret
So hallo zusammen, so hier ist mein fertiger voll funktionstüchtiger Hardware TWI (I2C) für den 24C65. Ich hoffe für alle die Suchen/Googlen auf meinen Codeausschnitt zu treffen. Es sind noch keine Error- Auffangroutinen drin. Die sind aber leicht selbst zu programmieren. MfG bluemole PS:Das Datenblatt vom ATmega8 zum Thema TWI fand ich sehr bescheiden.
Hallo! Ich haänge auch an der Umsetzung des Hardware TWI. Hab deinen code genommen (Danke) aber irgendwo hängt es. Würde mich freuen wenn du dich mal melden könntest. byPö
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.