www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik eDIPTFT43-A Problem bei Sendepuffer lesen via I2C


Autor: Felix W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei ein eDIPTFT42-A über einen ATMega8 (für Testzwecke tut`s 
der)via I2C anzusteuern. Texte kann ich bereits senden. Beim Auslesen 
des Sendepuffers habe ich Probleme, die mich noch in den Wahnsinn 
treiben. Die Datenblätter habe ich SEHR gründlich durchgearbeitet, 
jedoch finde ich darin keinen Hinweis mehr, was ich anders machen 
könnte.

Im Testprogramm auf dem eDIP ist ein Touch-Key, der nach Betätigung den 
Down-Code an den Controller übermittelt. (Also erst Sendepuffer, 
Interrupt an µC der dann den Inhalt Sendepuffer anfordern). Der 
empfangene Inhalt des Sendepuffers wird am TFT dargestellt.

Den Sendepuffer kann ich mit <DC2>, 1,S,bcc ansprechen und bekomme das 
ACK = $06 zurück. Soweit funktioniert es.
Danach sollte ich die Daten vom eDIP erhalten, bekomme aber nur Mist.

Ich programmiere in Assembler. Hier der Quellcode, der nach Erhalt von 
ACK den Inhalt des Sendepuffer empfängt:
...
ACK_OK:
         clr  r17            ;hier wird bcc aufaddiert
Sendepuffer_lesen:
         rcall  twiStart
  ldi  r16, TFT_ADR|TWI_READ ;Adressiere TFT mit Bit 8 auf Read
  ldi      r20,0            ;r20 steuert Bit9. hier:kein Master ACK
  rcall  twiWriteByte          ;übergebe Konfig. an I2C
  ldi      r20,0       ;beir20=1, also Master Ack bleibt
  rcall  twiReadByte
  mov  r31,r16            ;DC1 = $11 wird erwartet, erhalte $FF
  add  r17,r16    ;bcc = DC1
rcall  Ausgabe_Text_DC1          ;erhaltenes Byte wird am TFT ausgegeben

len_lesen:
  ldi  r20,0
         rcall  twiReadByte
  mov  r31,r16    ;len wird erwartet, erhalte $FF
  add  r17,r16    ;bcc = DC1 + len
rcall  Ausgabe_Text_len1

  data_lesen:
  ldi  r20,0
  rcall  twiReadByte
  mov  r31,r16          ;erwarte #, bekomme $37
  add  r17,r16    ;bcc = DC1 + len + DATA
rcall Ausgabe_Text_data1

  ldi  r20,0
         rcall  twiReadByte
  mov  r31,r16         ;erwarte A, bekomme $37
  add  r17,r16    ;bcc = DC1 + len + DATA
rcall Ausgabe_Text_data2

  ldi  r20,0
         rcall  twiReadByte
  mov  r31,r16         ;usw...
  add  r17,r16    ;bcc = DC1 + len + DATA
rcall Ausgabe_Text_data3
...

Die twi-rcalls verweisen auf Codes, die ich vom myAVR habe.

Ich hoffe, es kann mir jemand von euch auf die Sprünge helfen.


Viele Grüße,
Felix W.

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.