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


von Felix W (Gast)


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.

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.