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
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
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
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
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
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 STKs. Na ja, heute ist irgendwie nicht so mein Tag!!! Irgendwie klappt heut gar nichts. So Tage gibts 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
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
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 Atmels 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
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
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
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
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
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
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
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 (",)
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
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.