Forum: Mikrocontroller und Digitale Elektronik TWI + 24C65


von bluemole (Gast)


Angehängte Dateien:

Lesenswert?

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

von bluemole (Gast)


Lesenswert?

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

von bluemole (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Hagen (Gast)


Lesenswert?


von Sirko Pöhlmann (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.