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