Touch-Tasten Abfrage am eDIP240 mit Mega128

OP #707057
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
Gast #707282
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
OP #707872
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
Gast #708934
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
Gast #791037
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren