Forum: Compiler & IDEs Mal wider LCD über AVR ansteuern


von Zoomie (Gast)


Angehängte Dateien:

Lesenswert?

Hi !

Ich verzweifle langsam an der ansteuerung eines hd44780 kompatiblen
displays in c.
In ASM war das alles kein problem aber jetzt in c bekomm ichs nicht hin
!
hab auch schon gesucht aber leider nichts gefunden.

das einzige was der code macht ist, dass auf dem display ein p
angezeigt wird (auch wenn lcd_text auskommentiert wird).

das p kommt glaub ich aus der zeile:

init = 0b00001110;
LCD_command();

kann jamand sich vielleicht mal den code anschauen und sagen was ich
falsch mache? wär wirklich super nett ! und der code is ja nicht so
lang.

Vielen Dank !

von Hubert.G (Gast)


Lesenswert?

Wie wäre es mit einer fertigen Routine.
Suche in diesem Forum nach "Fleury"
Hubert

von Malte (Gast)


Lesenswert?

Wie lautet deine Pinbelegung?
Wo befindet sich die Funtkion *lcd_renew()* ?
Was bringt es dir in *LCD_init()* später ständig die Variable init zu
setzten, obwohl du danach nur die Funktion *LCD_command()* aufrufst, die
unabhängig von init ist ?

von Zoomie (Gast)


Lesenswert?

normal müsst des so aussehen:

init = 0b00001110;
LCD_command(init);

lcd_renew() ist lcd_enable(). (wurde nur zu debug zwecken verwendet.)

ich versteh langsam nix mehr! es wird immer nur son p angezeigt egal
was ich mach !
ich saß an dem code jetzt sicher schon 20 std und bekomms net hin !
die fertige routine will ich nicht verwenden, weil die zu kompliziert
für mich ist und ich wills schliesslich lernen !

MFG Zoomie

von Hubert.G (Gast)


Lesenswert?

Ich verwende eine etwas abgewandelte Routine ohne R/W. LCD_init wird nur
einmal aufgerufen um z.b.den 4-Bit Modus zu aktivieren.
lcd_renew kenne ich nicht.
In der zugehörigen Lib sind alle Funktionen beschrieben.

Hubert

von Peter D. (peda)


Lesenswert?

Hauptschleife vergessen !!!

main() darf niemals beendet werden !!!

Du hast ja kein OS wohin Du zurückkehren kannst.


Peter

von Zoomie (Gast)


Lesenswert?

hab jetzt for(;;); eingefügt hat nix verändert....warum denn auch des
display behält des ja eh im speicher und dann isses doch egal wenn der
mc "abstürtzt". Und interrupts hab ich eh keine drinne.
Ich bin voll am verzweifeln....
MfG

von Peter D. (peda)


Lesenswert?

Füg mal noch die komplette Anschlußbelegung zu und ersetze die Zahlen
durch Pin Namen (z.B. LCD_E usw.).

Peter

von Zoomie (Gast)


Angehängte Dateien:

Lesenswert?

Hallo! ich hab mal ein schaltplan in zu meinen aufbau gemacht.
mich wundert es, dasses mit asm auf anhieb funktioniert hat.
In prinzip funktioniert ja die initialisierung, weil das display ca. 1
sec nach dem start ein "p" anzeigt und das zeigt es auch an wenn ich
die  funktion LCD_Text() nicht aufrufe. das p wird nach dem

  init = 0b00001110;
  LCD_command(init);

angezeigt.
kann es sein, dass mit dem timeing was nicht stimmt ?

MfG simon

von OldBug (Gast)


Lesenswert?

int init = 0b00000111;

Das geht doch mit der aktuellen Version des avr-gcc bzw. WinAVR noch
gar nicht!?

von Jörg Wunsch (Gast)


Lesenswert?

Doch, Eric hat meinen Patch stillschweigend ins WinAVR aufgenommen, da
es ein frequently requested item ist.

von Zoomie (Gast)


Lesenswert?

habs hinbekommen ! Danke nochmal an alle

von Malte (Gast)


Lesenswert?

Woran lag es denn jetzt? Nur für den Fall das irgendwann jemand mit
einem ähnlichem Problem diesen Thread liest. :-)

von Zoomie (Gast)


Lesenswert?

keine ahnung ! hab die komplette routine selber geschriben (mit hilfe
von der asm datei), und dann gings (und das sogar auf anhieb) ! Und das
ohne probleme !

MfG Zoomie

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.