Guten tag liebe com, ich versuche mich schon eine Weile an der Ansteuerung des LCD-Addons von MyAvr.de. Zu diesem LCD verwende ich das MK2 Board, ebenfals von MyAvr. Wenn ich das Testprogramm von MyAvr brenne Zeigt das Display den entsprechenden Text an, daher gehe ich davon aus, dass alles richtig angeschlossen ist. Wenn ich aber jetzt den LCD-Code in C von dieser Seite versuche zu brennen zeigt das Display nichts an. Weiß einer wie ich das Problem lösen kann? Danke schon mal in Vorraus, lg.
Ggf. falscher Controller? Poste doch Links usw. ... die meisten (auch ich) sind zu faul die Infos welche benötigt werden um dir zu helfen selber raus zu suchen. Problem lösen: Code von 0 an selber Programmieren und testen obs geht (bevor man etwas anzeigen kann) durch auslesen von Registern des LCD. Das Funktionierende Programm kannst du als gegencheck verwenden ob dein LCD noch lebt.
Ich benutze dieses Board: http://shop.myavr.de/Systemboards/myAVR%20Board%20MK2,%20best%C3%BCckt.htm?sp=article.sp.php&artID=40 Und dazu dieses LCD-Display: http://shop.myavr.de/Add-Ons%20und%20Module/myAVR%20LCD%20Add-On.htm?sp=article.sp.php&artID=15
> Weiß einer wie ich das Problem lösen kann?
Erst mal kontrollieren, ob die 'eingetragene Konfiguration' mit der
tatsächlichen Realität übereinstimmt.
Dann die eingetragene Taktfrequenz prüfen. LCD Ansteuerungen scheitern
des öfteren daran, dass der µC zu schnell mit den Leitungen wackelt.
Bei mir hat's mal mit dem Code hier auf der Seite nicht geklappt, weil die Optimization im Compiler nicht auf -Os eingestellt war.
phischu schrieb: > Bei mir hat's mal mit dem Code hier auf der Seite nicht geklappt, weil > die Optimization im Compiler nicht auf -Os eingestellt war. Okay ich benutze AVR-Studio, wo kann man da die Optimization einstellen ?
mhm, das habe ich schon versucht, aber aus den Datenplättern http://www.myavr.info/download/produkte/lcd/db_lcd-displaytech-162c.pdf bzw. http://www.myavr.info/download/produkte/lcd/techb_lcd_de_en.pdf werde ich nicht schlau
Marcel Hoffmann schrieb: > Okay ich benutze AVR-Studio, wo kann man da die Optimization einstellen > ? Kann es dir nur für's 6.1er sagen, da findest du die Einstellung, wenn du dein Projekt geladen hast unter: Project -> 'Projektname' Properties -> Toolchain -> Optimization (ist ein Unterpunkt von AVR/GNU C Compiler)
Marcel Hoffmann schrieb: > mhm, das habe ich schon versucht, aber aus den Datenplättern > http://www.myavr.info/download/produkte/lcd/db_lcd-displaytech-162c.pdf > bzw. http://www.myavr.info/download/produkte/lcd/techb_lcd_de_en.pdf > werde ich nicht schlau Bezieht sich das auf das 'kontrollieren der Verbindungen'? Wenn ja. Hier im http://www.myavr.info/download/produkte/lcd/techb_lcd_de_en.pdf steht doch auf Seite 7 alles drinn was du brauchst
1 | 1 = Port D.2 LCD PIN 4 RS = Enable |
2 | 2 = Port D.3 LCD PIN 6 E = Enable |
3 | 3 = Port D.4 LCD PIN 11 DB4 = Datenbit 4 |
4 | 4 = Port D.5 LCD PIN 12 DB5 = Datenbit 5 |
5 | 5 = Port D.6 LCD PIN 13 DB6 = Datenbit 6 |
6 | 6 = Port D.7 LCD PIN 14 DB7 = Datenbit 7 |
7 | |
8 | |
9 | 7 = Port B.0 (Jumper R/W) LCD PIN 5 R/W =Read/Write |
10 | (oder fest auf Low) |
Also alles am Port D und der Jumper muss gesteckt sein. PD2 ist RS, PD3 ist E und die 4 Datenbits sind von PD4 an aufwärts. Was hast du im Header File eingetragen?
Im Header steht:
1 | // LCD DB4-DB7 <--> PORTD Bit PD0-PD3 |
2 | #define LCD_PORT PORTD |
3 | #define LCD_DDR DDRD |
4 | #define LCD_DB PD0 |
5 | |
6 | // LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command) |
7 | #define LCD_RS PD4 |
8 | |
9 | // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten) |
10 | #define LCD_EN PD5 |
Da steht das PD0-PD3 Datenpins sind, wenn ich das jetzt richtig verstanden habe, sind bei meinem LCD aber PD4-PD7 die Datenpins oder ? Wie kann ich diese ändern ?
Marcel Hoffmann schrieb: > Im Header steht: >
1 | > // LCD DB4-DB7 <--> PORTD Bit PD0-PD3 |
2 | > #define LCD_PORT PORTD |
3 | > #define LCD_DDR DDRD |
4 | > #define LCD_DB PD0 |
5 | > |
6 | > // LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command) |
7 | > #define LCD_RS PD4 |
8 | > |
9 | > // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten) |
10 | > #define LCD_EN PD5 |
11 | > |
> > Da steht das PD0-PD3 Datenpins sind, Da kann vieles stehen. Bei dem, der den Code geschrieben hat, war das wohl auch so. Sonst hätte er es nicht geschrieben. Aber deshalb muss das bei dir ja noch lange nicht so sein. Und ein Blick in die Beschreibung des Erweiterungsboards verrät: Jep, bei dir sind die 'Kabel' eben anders angeschlossen. > wenn ich das jetzt richtig > verstanden habe, sind bei meinem LCD aber PD4-PD7 die Datenpins oder ? > Wie kann ich diese ändern ? Indem du deine Werte reinschreibst? Was denn noch? Solch ich kommen Händchen halten, während du beispielsweise bei LCD_RS das PD4 auf PD2 gemäss Datenblatt der LCD-Erweiterung umschreibst? (und ja. EN ist dasselbe wie E. Beides steht als Kurzform für 'Enable') Und nein, spar dir bitte das 'bin halt noch ANfänger'. Als Anfänger lässt man bis zum Erbrechen Leds blinken und macht Lauflichter, bis man die Syntax um auf bestimmte Portpins zuzugreifen und die entsprechenden Symbole bzw. Kürzel und Schreibweisen im Schlaf beherrscht.
Marcel Hoffmann schrieb: > Da steht das PD0-PD3 Datenpins sind, wenn ich das jetzt richtig > verstanden habe, sind bei meinem LCD aber PD4-PD7 die Datenpins oder ? > Wie kann ich diese ändern ? Richtig erkannt. Wie wärs mit:
1 | // LCD DB4-DB7 <--> PORTD Bit PD4-PD7
|
2 | #define LCD_PORT PORTD
|
3 | #define LCD_DDR DDRD
|
4 | #define LCD_DB PD4
|
Die anderen analog und den R/W, weil er nicht auf dem gleichen Port sitzt auf einen freien Pin an Port D legen (Einschränkung des Codes ist, dass alle Anschlüßsse am selben Port hängen müssen). Den R/W brauchst du aber nur um Daten aus dem Displaycontroller auszulesen, das braucht man aber meistens nicht. Deshalb auch der Jumper auf der Displayplatine.
Ok danke an alle habe es jetzt hinbekommen und entschuldigung an kbuchegg das ich "etwas" aufdringlich war :) lg, marcel
phischu schrieb: > Den R/W brauchst du > aber nur um Daten aus dem Displaycontroller auszulesen, das braucht man > aber meistens nicht. Exakt. Die LCD Routinen hier aus dem Forum beispielsweise nutzen das nicht, steuern aber einen eventuellen R/W Pin auch nicht an. Daher: Jumper setzen! Die Fleury Routinen wären zb anders. Die benutzen den R/W Anschluss. Da darf dann der Jumper nicht gesetzt sein, sondern das Programm muss an die R/W Leitung rankommen, sonst hängt das Programm bereits in der Initialisierungsphase des LCD.
Marcel Hoffmann schrieb: > Ok danke an alle habe es jetzt hinbekommen > und entschuldigung an kbuchegg das ich "etwas" > aufdringlich war :) Ist schon ok. Ich hab auch ein wenig unfreundlich reagiert. Mi scusi. Aber du musst in der Lage sein, solche Dinge alleine hinzukriegen. Genau deshalb macht man ja die ganzen Vorübungen mit dem ganzen Led-Blinken-Gesocks. Nicht weil eine blinkende LED jetzt so aussergewöhnlich wäre, sondern weil man sich an die Syntax von Portzugriffen und wie das alles technisch funktioniert rantasten muss. (Und in den meisten Fällen auch, um sein C in diesem Bereich syntaxmässig auf Vordermann zu bringen)
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.