mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI + 24C65


Autor: bluemole (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: bluemole (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bluemole (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sirko Pöhlmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ö

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.