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.