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.