Forum: Mikrocontroller und Digitale Elektronik Touch-Tasten Abfrage am eDIP240 mit Mega128


von Werner A. (wernera)


Lesenswert?

Hallo,

ich beisse mir die Zähne aus an der Touch-Tasten Abfrage des Displays
eDIP240. Das Display hängt am I2C-Bus und mit der Ausgabe von Text
und Grafik habe ich keine Probleme; geht alles wunderbar. Ich habe das 
in diesem C-Dialekt von Conrad programmiert.

Ich kann Touch-Tasten erzeugen und sie reagieren auch (werden 
invertiert), aber es gelingt mir nicht das Ergebnis (Tasten-Codes) 
zurückzubekommen. Hat mir jemand vielleicht ein Programmbeispiel?

MfG
Werner

von Roman (Gast)


Lesenswert?

Hi Werner, die bekommst Du nur zurück indem Du explizit den Inhalt des 
Sendepuffers anforderst (DC2,1,S,BCC). Von allein kommt da nix, Pin 20 
zeigt an, wenn was drin ist oder via DC2,1,I.
Roman

von Werner A. (wernera)


Lesenswert?

Hallo Roman,

vielen Dank für Deine Antwort.
Den Sendepuffer fordere ich nach der Pin20-Abfrage an (die Pin-Abfrage 
will ich später für einen Interrupt verwenden). Ich versuche dann wie 
folgt auszulesen (WriAdr= 222, ReadAdr= 223, d.h. alle Pins offen):

I2C_Start();
I2C_Write(WriAdr);
I2C_Write(DC2);     // Befehl "DC2 1 S": Inhalt Sendepuffer anfordern
I2C_Write(1);
I2C_Write('S');
I2C_Write(bcc);

// warten auf ACK...
I2C_Start();
I2C_Write(ReadAdr);
do
 {
    i= I2C_Read_ACK();
  }while(i != ACK);
                          // bis hierher klappt alles...
I2C_Start();
I2C_Write(ReadAdr);
I2C_Start();              // ohne diesen Start hängt's
zeichen= I2C_Read_NACK(); // Hier kommt immer 223=0xDF an, auch mit
                          //Read_ACK
zeichen= I2C_Read_NACK(); // und ab hier kommt nur noch FF an
.
.


Das gleiche Ergebnis erhalte ich auch mit "DC2, 1, I". Was mache ich 
falsch?

Gruß
Werner

von Roman (Gast)


Lesenswert?

Sorry Werner, vielleicht kann  hier ein anderer weiterhelfen der sich 
mit I2C und dieser Syntax auskennt. Assemblerprogrammiert und über RS232 
gibt es jedenfalls bei mir kein Problem, soviel Gewissheit kann ich Dir 
geben.
Nach dem ACK muss in jedem Fall DC1/LEN/.../BCC kommen, ob mit oder ohne 
vorhandene Nutzdaten. Mir selbst ist übrigens unklar, wofür das 
I2C_Start();
I2C_Write(ReadAdr) nach der ACK-Erkennung gut sein soll aber wiegesagt, 
der I2C Experte bin ich nicht.

Gruss Romn

von Werner A. (wernera)


Lesenswert?

Hallo Roman,
ich probiers jetzt mal testweise mit RS232; ich will das Display einfach 
mal vollständig zum Laufen bringen. Für mein Konzept wäre halt I2C viel 
besser geeignet...

Gruss Werner

von Roman (Gast)


Lesenswert?

Eine gute Idee Werner. So kannst Du die Antworten des Displays ggf. auch 
mal mit einem Terminalprogramm am PC testen! Roman

von Gast (Gast)


Lesenswert?

ich habe manchmal das problem, das beim tastendruck zwar an pin20 die 
leitung auf null geht, aber nicht wieder auf 5V kommt. nach mehrmaligen 
ein und ausschalten des displays funktioniert es dann wieder. hat jemand 
ne idee?

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.