Forum: Mikrocontroller und Digitale Elektronik Probleme mit Touch-Panal und RS232


von Marcel (Gast)


Lesenswert?

Hallo Forum-Gemeinde,

ich habe ein Display der Firma „electronic assembley“! Es handelt sich
um das EA-KIT 160-6LEDTK. Um kurz zu erklären wie es funktioniert. Man
kann Makros in das Display laden und diese dann über „Touch-Taste“
ausführen. Seit ich das Display habe, programmiere ich dieses Display
ganz einfach über einen PC.
Jetzt würde ich gerne das ganze mit einem µC ansteuern. Ich habe hier
einen Mega16 und das STK 500. Also hab ich erst mal ein Programm auf
dem Mega16 geschrieben, das ganz normal mit einem Terminal-Programm
kommuniziert. Wenn ich auf einem Terminal-Programm ein „a“ drücke, dann
geht auf dem STK500 eine LED an. Ebenfalls sendet der Mega16 alle 5
Sekunden ein „D“. So weit so gut. Das funktioniert also.
Dann habe ich auf meinem Display eine „Touch-Tast“ definiert, die beim
drücken ein „a“ sendet. Auch das Display hab ich an einem
Terminal-Programm ausprobiert. Das Display geht auch einwandfrei.
Nun wollte ich das Display an das STK500 anschließen aber es
funktioniert einfach nicht!!! :o(
Ich bin mir jetzt nicht ganz sicher, aber wird am STK500 die RTS- und
CTS- Leitung unterstütz?? Ich frage deshalb, da in der Anleitung vom
Display steht, dass man wegen dem kleinen Datenpuffer von 45Byte die
RTS- Leitung abfragen soll.
So bald ich das Display an das STK500 anschließe, und die besagte Taste
drücke, hängt sich das Display auf.
Ich weiß einfach nicht warum beide Teilnehmer mit dem Terminal
kommunizieren, aber sie nicht miteinander reden können. Worin liegt der
unterschied?? Ich habe auch verschiedene Terminal ausprobiert. Das
normale von Win2000 und das von CodeVision.

Es wäre klasse wenn mir jemand weiter helfen könnte...

Mit freundlichen Grüßen und noch einen schönen Abend,

Marcel

von Josef (Gast)


Lesenswert?

Würde ein anderes Kontrollerboard nehmen. Das STK500 finde ich sehr
unübersichtlich, es unterstützt sicher nicht die CTS/RTS Leitungen.
Würde die CTS/RTS Leitung über einen R def. auf low/high legen bzw
diese verbinden. Probier mal bei den Terminalprogrammen den
Hardwarehandshake abzuschalten. Ansonsten kann ich mir nur ein
Pegelproblem vorstellen.
Schreib auch mit genügen Pausen auf das Display.


SG Josef

von Rüdiger (Gast)


Lesenswert?

Hi,
Dieses Problem hatte ich auch einmal.
Vertausche mal die RXD und TXD Leitungen.
Da ja PC zu Mega funkt
PC zu Display
Somit musst du wenn du Mega und Display verbindest die beiden Leitungen
vertauschen

Ciao, Rüdiger

von Marco B. (Gast)


Lesenswert?

Hallo,
es liegt definitiv am Handshake. Das Display verlangt ein
Hardwarehandshake.
Lege die RTS leitung einfach auf High, dann gehts auch ohne.
Hatte das selbe Problem.

Bis dahin
Marco

von Kai Markus T. (kmt)


Lesenswert?

So ist es. Ich habe auch das LCD-Kit 160 mal mit einem STK500 zusammen
betrieben und habe nachträglich die RTS-Leitung implementieren müssen.
Danach lief alles problemlos...

Falls noch Fragen zu diesem Display sind, immer her damit ;-)
Hatte damals quasi schon eine Telefon-Standleitung zu Electronic
Assembly...

Greetz
KMT

von Marcel (Gast)


Lesenswert?

Hallo zusammen.....
danke für eure Hilfe. Klasse!!!
@ Marco und KMT. Es freut mich das ich nicht der einzige bin, der mit
diesem LCD ein Problem hat :o)
Also ich habe es natürlich gleich ausprobiert. Ich benutze momentan die
J3 Buchse. Das ist die Leiste an der das mitgelieferte Flachkabel drauf
kommt. Die RTS-Leitung ist am Pin 7 der J3 Buchse. Somit ist die
RTS-Leitung am Sub-D Stecker am Pin 8. Diesen Pin 8 habe ich auf Plus
5V gelegt, aber es geht trotzdem nicht :o(
Das komische ist, wie gesagt, auf dem Terminal kommt das Signal vom
Panal an, schließe ich aber das Panal an das STK an, wird noch nicht
mal ein Interrupt ausgelöst. (das hab ich mit einem Programm getestet).
Ich habe auch die RxD und TxD mal gedreht. Das Panal bleibt aber
wenigstens jetzt nicht mehr hängen!! Was mir ja jetzt auch einleuchtet,
da es ja ein „O.K.“ von RTS bekommt.
Mal eine Frage!!  Wie habt ihr das Touch-Panal angeschlossen?? Geht ihr
ganz normal über die J3 Buchse, so wie wenn man das Panal über den PC
programmiert, oder schließt man es besser über die J5 Buchse für den
Anschluss an einem µC an. Am STK gehe ich nach wie vor über den äußeren
Sub-D Stecker. Das Panal wird mit den 5V vom STK versorgt.

@KTM, du hast geschrieben das du die RTS-Leitung implementieren
musstest, wie hast du das gemeint?? Einfach auf 5V gelegt?? Werden am
STK nur die zwei Leitungen 2&3 raus gefüht. So steht es zumindest im
Handbuch des STK’s.

Na ja, heute ist irgendwie nicht so mein Tag!!! Irgendwie klappt heut
gar nichts. So Tage gibt’s halt manchmal auch. Ich sollte jetzt alles
beiseite legen und mal drüber schlafen g Ich sehe vielleicht vor
lauter Bäumen den Wald nicht mehr (hoffentlich)

Also schönen Abend noch, Danke für die Hilfe und Grüße,

Marcel

von Kai Markus T. (kmt)


Lesenswert?

Grins Das kommt vor... Mich hat das Display auch zunächst
tagelang in den Wahnsinn getrieben :-)

Also, ich habe seinerzeit J5 benutzt, weil nur(?) dort die
RS232-Signale mit TTL-Pegel anliegen. Die Pins RxD und TxD vom Display
sind direkt mit den korrespondierenden Pins am AVR verbunden.
Was bei Dir sein könnte: hast Du daran gedacht, die Spare RS232-Buchse
mit einem Jumperkabel an den AVR anzuschließen? Wenn nein, kann da
nicht viel kommen. Normalerweise (d.h. ohne weitere Maßnahmen) ist
diese Buchse auf dem STK ja nicht beschaltet. Das würde unter anderem
auch erklären, warum am STK nicht mal ein Interrupt ausgelöst wird. Ich
würde Dir aber sowieso empfehlen, am Display J5 zu benutzen und RxD und
TxD direkt am AVR anzuschließen.

Zu RTS:
wieso hast Du RTS (Pin 6 auf J5) auf 5V gelegt? RTS am Display ist ein
Ausgang(!!!), der anzeigt, daß der Displaypuffer mindestens ein Byte
neue Daten annehmen kann. Ich habe diesen Pin an einen ganz normalen
Portpin vom AVR angeschlossen (der als Eingang geschaltet ist. Ich
frage die RTS-Leitung vor dem Senden jedes Bytes ab. Wenn Du eine
Leitung auf 5V  legen müßtest, dann allerhöchstens CTS (Pin 7 auf J5),
um dem Display zu signalisieren, daß neue Daten anliegen. Das ist aber
nicht unbedingt nötig, hab ich auch nicht gemacht...

Viel Spaß beim Basteln! Hab morgen Frühdienst, deshalb bin ich
jetzt nicht mehr zu erreichen, aber morgen früh schaue ich ab 6
regelmäßig hier rein.

Greetz
KMT

von Marcel (Gast)


Lesenswert?

Hallo KMT,
Danke für deine Bemühungen, das weiß ich zu schätzen!!

Also ich habe die Jumperkabel nicht vergessen, sonst hätte ich vom
Atmel auch keine Zeichen auf meinem Terminal bekommen. Ich habe zu
dieser späten Stunde aber unbedingt noch deinen Tip ausprobieren
müssen. (als eingefleischter Bastler kann man sonst nicht ruhig
einschlafen bevor man das nicht probiert hat gg)
Ich habe vor einiger Zeit mal einen Schalter an die zwei Lötbrücken
LB10 und LB 11 „gelötet“, so das ich zwischen J3 und J5 umschalten
kann. Ich habe jetzt zwei Kabel von J5 Pin 4&6 (TxD&RxD) direkt mit der
USART des Atmel’s verbunden. (direkt an PORTD) Ich habe ein Programm auf
dem Atmel laufen, welches alle paar Sekunden ein Zeichen sendet. Zu
meiner Freude wird diesen Zeichen jetzt auf meinem LCD angezeigt. (so
weiß ich schon mal das meinen Datenrichtung von der USART stimmt) Aber
die Kommunikation vom Panal zum Atmel geht immer noch nicht. Ich habe
aber jetzt keine abfrage der RTS-Leitung und kein High-Signal an CTS.
Es gehen also „5V“, „0V“, und die zwei Datenleitungen vom STK-Board zum
Touch-Panal. Es wird aber immer noch kein Interrupt ausgelöst, sobald
ich eine Taste am Panal drücke. Das Panal sendet aber auf jeden Fall
etwas, da ich es ja an einem Terminal-Programm testen kann.
Auf jeden Fall bin ich jetzt schon einen ganzen Schritt weiter und kann
zufrieden ins Bett gehen :o)
Also Morgen sieht die Welt doch schon mal ganz anders aus!!!!

Ist ja klasse wenn man im Frühdienst ins I-Netz kann, so lässt es sich
doch etwas leichter den Tag beginnen g



Also noch mal Danke....

Grüße Marcel

von Kai M. Tegtmeier (Gast)


Lesenswert?

Hmm, wenn immer noch kein Interrupt ausgelöst wird,
vermute ich einen Fehler in der Programmierung. Eventuell wird
die USART nicht richtig initialisiert. Du kannst auch spaßeshalber mal
die CTS-Leitung auf 5V ziehen und schauen, ob sich was ändert. Zum
bloßen Testen des Anschlusses ist die Abfrage der RTS-Leitung nicht
unbedingt nötig. Müßte man mal in den Sourcecode schauen (ich hoffe
in C? alles andere ist bei mir eher schwierig ;-)

Greetz und eine angenehme Nachtruhe ;-)
KMT

von Marcel (Gast)


Lesenswert?

Hallo KMT,
na schön fleißig beim arbeiten :o)
Hmmm, die Nacht war nicht wirklich lang
Also es geht jetzt  **freu**, aber allerdings habe ich die
CTS-Leitung (Pin7 / J5) aus Masse gezogen. Nur so geht es!!!!!!
Zumindest jetzt in meinem Versuchsaufbau!!!! Ich werde jetzt mal ein
„bissel“ „proggen“ und sehen ob es so geht!!

Auf jeden Fall erst mal vielen, vielen Dank für deinen Hilfe!!! Ich
denke ich werde bestimmt noch mal deine Hilfe in Anspruch nehmen :o)

Ach übrigens, ich programmiere auch in „C“ (CodeVision)

Schönen Arbeitstag noch......

Grüße Marcel

von Kai M. Tegtmeier (Gast)


Lesenswert?

Hallo, Marcel!

Na wunderbar; ich war mir wegen der Logikpegel auf CTS5 auch nicht
so ganz sicher. Man kann (glaube ich) softwaremäßig die Abfrage der
CTS-Leitung am Display abschalten. Aber so gehts ja auch :-)

Dann erst mal fröhliches Weiterprogrammieren; ich hab demnächst erstmal
Feierabend... Wenn noch weitere Fragen sind, gerne. Ich schau regelmäßig
hier vorbei.

Greetz
KMT

von Marcel (Gast)


Lesenswert?

Klasse, vielen Dank!!!

Schönen Feierabend :o)

Grüße Marcel

von Marcel (Gast)


Lesenswert?

Hallo KMT,

ich hoffe du liest diesen Beitrag.
Also das mit dem Panal klappt echt gut. Ich bin begeistert wie einfach
die Kommunikation klappt. Ich habe sämtliche Befehle des Panals in
Funktionen geschrieben. Die meisten funktionieren auch, aber mit
einigen habe ich Probleme. Vielleicht kannst du mir ja weiter helfen.
Ich habe einen Funktion geschrieben mit der ein Text auf das Display
geschrieben werden soll. Dazu habe ich die unten stehende Funktion. Das
ganze ist in einer eigenen „Include“-Datei geschrieben.

//----------------------------------------------------------------

touch_text(unsigned char ausrichtung, unsigned char x, unsigned char y,
unsigned char *text)
{
  printf("%c",0x1B);    // ESC
  printf("%c",0x5A);    // Z
  printf("%c",ausrichtung);  // Ausrichtung
  printf("%c",x);    // X-Position
  printf("%c",y);    // Y-Position
  puts(text);      // anzuzeigender Text
  printf("%c",0x00);     // Null anhängen
}
//----------------------------------------------------------------

Im Hauptprogramm steht dann...

//.....
unsigned char text1[6] = "hallo";
//....

//....
touch_text('L',0,0,text1);
//....


Auf dem Display erscheint auch der gewünschte Text, aber es wird immer
noch in undefiniertes Zeichen mit dran gehängt. Ich weiß einfach nicht
wo das her kommt. Ich habe auch schon einiges Probiert, aber es geht
einfach nicht. Wenn ich einen Text ganz normal mit den einzelnen
ASCII-Zeichen übertrage, also nicht über eine Variable, dann klappt
es.

Vielleicht hattest du ja das gleiche Problem!!

Also bis dann und Grüße,

Marcel

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Hmm, könnte an den printf liegen...

Ich hab das seinerzeit mit putchar gemacht. Versuch doch mal, alle
printf durch putchar zu ersetzen.

Oder laß mal testweise die Zeile mit 0x00 weg. Es könnte sein,
daß puts den String bereits automatisch mit 0x00 abschließt. Dann
würde
direkt danach das Zeichen 0x00 gedruckt, was undefinierbar aussieht.

Greetz
KMT

von Kai Markus Tegtmeier (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mal meine Ansteuerungsroutinen in den Anhang gehängt.
Zu beachten ist noch, daß ich die Stdio "frisiert" hatte, so daß in
der Routine Putchar die CTS-Leitung abgefragt wurde.

Greetz
KMT

von Marcel (Gast)


Lesenswert?

Hallo KMT,
danke erst mal für die schnelle Antwort....

Also das sieht ja recht interessant aus, deinen Routine. Ich habe sie
probiert, aber so geht es bei mir auch nicht. So wie ich das sehe
benutzt du auch CodeVision.
Ich habe z.B. bei deiner „gotoxy“ Funktion die gleichen Fehler wie bei
meiner. Meine sieht genauso aus wie deine, nur halt mit „Printf“ Wenn
ich die „gotoxy“ Funktion ausführe, dann steht der Cursor nicht da wo
er stehen soll. Z.B. bei (4,4). Da steht dann das Wort etwa bei (10,15)
{geschätzt}
Das hat mich heute Mittag schon bei meiner Funktion zur Verzweifelung
gebracht.
Auch wenn ich deinen „Text“- Funktion ausprobiere, dann übernimmt der
Text auch nicht die gewünschte „Font-gröߓ obwohl sie vorher gesetzt
wurde. Das hatte ich heut Mittag auch schon bei mir. Das weglassen der
(0x00) habe ich auch probiert, hat aber auch nichts gebracht. Was für
ein Typ ist eigentlich die zu übergebende Variable von text[]??
{txstring(welcher Typ??) Ist es eine normaler Typ oder ein Zeiger??
{unsigned char *text[]}.

Das die Übertragung aber auch mit putchar() geht, wundert mich. Ich war
mit ziemlich sicher das es beim ersten Probieren vor einigen Tagen nicht
ging. Das werde ich Morgen auf jeden Fall noch mal prüfen!!!! Die ganzen
andern Funktionen wie Display-Befehle oder Zeichen gehen einwandfrei!!

Na ja, wie bekanntlich sollte ich jetzt zur später Stunde alles
beiseite legen und es Morgen noch mal probieren.

Mal noch nen Frage, wie sieht dein „Power-On“ Makro aus? Ich habe ein
Art Menü auf meinen Display laufen. Anfangs wollte ich alles vom µC
steuern, jetzt glaube ich aber das es besser ist, das ganze Menü auf
das Display zu laden und nur bestimmte „Tasten“ über die RS232-
Schnittstelle zu schicke.

So, jetzt leg ich mich doch mal hin.....

Grüße, Marcel (",)

von Marcel (Gast)


Lesenswert?

Hallo KMT,
also das Positionieren mit „gotoxy“ habe ich wohl nicht richtig
verstanden!! Ich dachte man kann eine Text Pixelgenau positionieren,
das geht aber nur Zeilenweiße, abhängig von der Font-größe. {ist im
nachhinein eigentlich auch ganz logisch :o) }Klasse finde ich deine
Text-Funktion mit dem Zeilenvorschub. Echt super. Mein Problem ist aber
immer noch, dass mein Text nicht in der gewünschten Font-größe
erscheint. Auch nicht wenn ich die größte Schrift im Power-On-Makro
definiere. Ich verstehe auch nicht ganz den Unterschied zwischen
„Terminal-Font einstellen“ und „Font einstellen“
Mein Code sieht aber richtig aus:

touch_font(unsigned char groesse, unsigned char x_zoom, unsigned char
y_zoom)
{
  putchar(0x1B);  // ESC
  putchar(0x46);  // F
  putchar(groesse);  // n1
  putchar(x_zoom);  // n2
  putchar(y_zoom);  // n3
}
//------------------------------------

touch_font(3,1,1);

//------------------------------------

Und noch eine Frage. Ich habe zwar Sonderzeichen in das Display geladen
(ESC,E,0x01, Daten...) aber ich weiß nicht wie ich dieses Zeichen laden
kann.

Danke für deinen Geduld ;-)

Gruß Marcel

von Kai Markus Tegtmeier (Gast)


Angehängte Dateien:

Lesenswert?

Hi, Marcel!

Ich komme gerade vom Dienst. Also, das mit dem Gotoxy hat
sich demnach erledigt.

Das Power-On-Makro beim Display habe ich gar nicht angetastet, sondern
ich durchlaufe eine eigene Initialisierungsroutine, bei der
alles Wissenswerte eingestellt wird.

Ich vermute, daß der Grund, warum Deine Schriftarten nicht
funktionieren, ist, daß ESC F n1 n2 n3 nur für den Grafikbetrieb
gilt, d.h. für Zeichenketten, die mittels ESC Z .. ... ....
ausgegeben werden.

Das Display unterscheided 2 Betriebsarten (soweit ich mich richtig
erinnere): Terminalbetrieb und Grafikbetrieb.
Im Terminalbetrieb wird wie bei Dir die Schrift einfach nur mit printf
ans Display übertragen. Im Grafikbetrieb läuft das Ganze über ESC Z ..
.. .. vorher. Dabei hat man erweiterte Möglichkeiten, die Zeichenkette
zu positionieren. Ich glaube, bei ESC Z ist die Zählweise der
Koordinaten auch eine andere als beim Terminalbetrieb.

Die Variable text wird nicht als Zeiger, sondern als Konstante im Flash
übergeben char text[]="Hallo";

Die "Menüstruktur" habe ich bei mir nicht auf dem Display, sondern
komplett im Programm selbst realisiert.

Ich hänge als Anhang mal das komplette C-Programm von mir dran; da wird
für Dich vielleicht die eine oder andere Anregung dabei sein.
Ich kann allerdings, da die Sache schon länger her ist, nicht
garantieren, daß der Code fehlerfrei ist. Er ist auf jeden Fall auch in
Codevision geschrieben für einen ATmega32.

Das mit den Sonderzeichen habe ich noch nicht ganz verstanden ?!?

Greetz
KMT

von Marcel (Gast)


Lesenswert?

Hallo KMT,
also ich habe dein Programm mal angeschaut. Sieht sehr interessant
aus!! Ist das ein Art Mischpult oder so etwas?? Das ganze läuft auch
über eine IR-Fernbedienung?? Auf jeden Fall muss man sich beim
genaueren Betrachten richtig Zeit nehmen :o) Es ist aber bestimmt etwas
nützliches für mich dabei g Kompliment an die Dokumentation. Die ist
mir auch immer sehr wichtig!!! Das ist nicht immer so üblich.
Also das mit den „Text-Fons“ habe ich jetzt verstanden!!! Es
funktioniert jetzt auch bei mir!! Es ärgert mich nur etwas, da hätte
ich auch selber drauf kommen können :)
Am Anfang wollte ich das Menü auch mit dem Atmel steuern, aber da
funktionierte alles noch nicht so reibungslos. Also habe ich angefangen
das Menü über das Panal zu steuern. Jetzt klappt alles natürlich viel
besser. Vielleicht mache ich das noch wenn alles so klappt wie ich das
will g
Also dir dann wieder mal Danke für deinen Hilfe :o)

Viele Grüße, Marcel

von Kai Markus T. (kmt)


Lesenswert?

Hi, Marcel!

Das Programm gehörte zu meiner Diplomarbeit im Studienfach
Ton- und Bildtechnik. Ich hatte damals eine Lautstärkeregelung
für eine Surround-Studio-Abhöranlage gebastelt. Man konnte analog
(XLR) oder digital (ADAT-Format) in das Gerät rein und hatte 5.1
analoge Ausgänge für Aktivboxen. Pegelanzeige für jeden Kanal war auch
drin, und man konnte die Lautstärke jedes Kanals mit Fernbedienung oder
Touch Screen steuern. Das ganze Gerät hängt jetzt an meiner Anlage im
Wohnzimmer...

Greetz aus Hamburg!
KMT

von Marcel (Gast)


Lesenswert?

Hey, Ton und Bildtechnik!! Das hört sich ja mal mega interrasant an. Das
macht bestimmt riesen Spaß, oder?? Gerade weil die Tontechnik immer
umfangreicher wird. (die Bildtechnik natürlich auch!!) Ich wüsste gar
nicht das man so etwas überhaupt studieren kann?? So etwas gibt es aber
bestimmt nur an einer Uni, oder??
Ich studiere Elektrotechnik(Automatisierungstechnik) an der FH
Mannheim, bin aber noch mitten drin :o)
Schade das ich mir das tolle "Gerät" nicht mal anschauen kann, ist
ein "bissel" zu weit weg g

Also ich wünsche dir mal ein schönes Wochenende.....

Grüße aus der nähe Heidelberg!!

Marcel

von Kai Markus T. (kmt)


Lesenswert?

Ebenso schon mal schönes Wochenende!

Ton- und Bildtechnik ist ein Kombistudiengang zwischen FH Düsseldorf
und Musikhochschule Düsseldorf. In der Musikhochschule kriegt man die
musikalischen Fächer (Harmonielehre, Tonsatz, Gehörbildung,
Musikgeschichte, Instrumentenkunde und Instrumentalunterricht) und in
der FH die technischen Fächer (Mathe, E-Technik,
Nachrichtenübertragungstechnik, Fernseh- und Tonstudiotechnik, Akustik
usw.) verpult. Man kriegt also auf relativ breiter Basis was mit, damit
man sich später aussuchen kann, was man macht.

Grüßles nach Heidelberg!
KMT

von Yassine (Gast)


Lesenswert?

Hallo Marcel,

Ich muss  einen  EAKIT129-6 programmieren(Menü) für spätere Aufgabe.das 
Menü könnte z.b so aussehen:
Hauptmenü:

          -Grafik
          -ADC Wert:Spannung:
                             -kommentare.
          -ADC Wert:Strom:
                             -Komentare.
          -....unsw
Das möchte ich auch erstmal über ein PC(RS232) realisiere.hast du eine 
idee?kann ich mir deine Menüprogrammierung vielleicht anschauen?
Gruss
yassine

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.