mikrocontroller.net

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


Autor: Werner A. (wernera)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Werner A. (wernera)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Werner A. (wernera)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roman (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.