Hallo, ich benutze die LCD-Routine aus dem AVR-GCC Tutorial, da ist der Code aber für die Datenpins PD0-PD3 angepasst, jetzt habe ich aber das problem das ich auch den USART benötige und somit die PINS PD0 und PD1 schon belegt sind, also habe ich ich jetzt die Datenpins auf PD4-PD7 verlegt, was natürlich eine Änderung veränderung im bestehenden Code benötigt, jetzt habe ich die zuweisungen nach LCD_PORT &= 0x0F; geändert, funktionieren tut es aber nicht, es kommen nur kryptische zahlen am LCD an, vllt. kann mir jemand einen Tipp gegeben was ich falsch mache.
Pins vertauscht? Adressierung korrekt? Aufschluss "kann" die Zeichentabelle des Datenblattes bieten, da kann man ablesen, was man vertauscht hat :) Reagiert es denn überhaupt sauber auf die Commands, also Steuerbefehle wie CURSOR HOME etc??? Klaus.
> jetzt habe ich die zuweisungen nach LCD_PORT &= 0x0F; geändert
Aha...... schön
Aber mit C allgemein hast du nicht so deine Probleme oder??
Klaus R. wrote: > Pins vertauscht? Adressierung korrekt? Aufschluss "kann" die > Zeichentabelle des Datenblattes bieten, da kann man ablesen, was man > vertauscht hat :) > > Reagiert es denn überhaupt sauber auf die Commands, also Steuerbefehle > wie CURSOR HOME etc??? > > Klaus. Ne, reagiert im mom. nur mit kryptischen Zeichen, als ich die datenpins des LCD noch wie im tutorial beschrieben an PD0-PD3 angeschlossen hatte funktionierte alles wunderbar, ich denke eher ich hab da einen denkfehler bei der anpassung der bestehenden lcd-routine, habe ja bis jetzt nur alle zeilen mit :LCD_PORT &= 0xF0 in LCD_PORT &= 0x0F umgeändert, weiß nicht ob das reicht. Pinbelegung ist im moment: RS PD2 EN PD3 DB4 PD4 DB5 PD5 DB6 PD6 DB7 PD7
Peter Dannegger wrote: > LCD an völlig beliebigen Pins: > > http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip > > > Peter Wollte eigentlich die bestehende Routine verwenden, es muss doch mit einer kleinen Änderung möglich sein, die Datenpins anzupassen?
...weiß nicht ob das reicht. -> Rate mal... Du musst erstmal den Port initialisieren, also ob die Pins ein oder ausgänge sind, dann ob mit oder ohne pullup und ob, falls ausgang, hi oder low. woher soll der uC wissen, welche daten/commandleitung überhaupt an welchen pin angeschlossen ist??? also, tasse tee kochen, hinsetzen und NOCHMAL alles lesen im avr tutorial - denn verstanden hast du es scheinbar noch nicht, oder?! Klaus.
Klaus R. wrote: > ...weiß nicht ob das reicht. > > -> Rate mal... > > Du musst erstmal den Port initialisieren, also ob die Pins ein oder > ausgänge sind, dann ob mit oder ohne pullup und ob, falls ausgang, hi > oder low. > > woher soll der uC wissen, welche daten/commandleitung überhaupt an > welchen pin angeschlossen ist??? > > also, tasse tee kochen, hinsetzen und NOCHMAL alles lesen im avr > tutorial - denn verstanden hast du es scheinbar noch nicht, oder?! > > Klaus. Ne so ganz habe ich das noch nicht verstanden, kann mir denn mal jemand diese Zeile erläutern: LCD_DDR = LCD_DDR | 0x0F | (1 << LCD_RS) | (1 << LCD_EN); 1 << LCD_RS und 1 << LCD_EN ist klar, also die Pins PD2 und PD3 als Ausgang initialisieren, aber was wird mit dem 0x0F gemacht, ein bestimmter bereich ausmaskiert?
Habe es jetzt selbst geschafft, den bestehende code so umzuändern das er für meine pinbelegung passt, man lernt so warscheinlich viel mehr als wenn man einfach die lösung serviert bekommt, das habt ihr euch wohl auch gedacht, deshalb ein dank an alle die mir geholfen haben.
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.