Hi, hab vor ein oder zwei Wochen mit einem 2313 (den 4433 hab ich aus versehen gegrillt) angefangen ein LCD im 8Bit-Modus anzusteuern. Kam mir relativ N00p-freundlich vor. Ich habs jetzt auch geschafft das Teil zum Laufen zu bringen, hab mich ein bisschen am Tutorial orientiert und Routinen geschrieben. Jetzt ist aber das problem, dass der Cursor (bzw. das ganze erste Feld) blinkt, aber sonst nichts passiert...Ich hab wahrscheinlich irgendwas bei der Initialisierung falsch gemacht, vielleicht könntet ihr euch das mal anschauen. Hier noch ein paar Daten, die vielleicht ganz nützlich sind: LCD: HD44780 20x4 von reichelt Programmer: Sercon 2 Mini Software: "AT-prog" + AVR Assembler 1.30 AVR: 2313 Belegung: PB0-PB7 (AVR) ist DB0-DB7 (LCD) // RS=PD0 // E=PD1 MFG bearmann2k Anbei die Routinen im nächsten Post dann das eigentliche Programm (weiß leider nich, wie man 2 dateien gleichzeitig anhängen kann, sry)
Hier das eigentliche Programm...es soll zum test nur ein Buchstabe ausgegeben werden... MFG bearmann2k
Hi! Was ist mit Stack-Init, bei call's brauchst du den doch. Ein Port-Init(Ausgang) finde ich auch nicht????? Oder habe habe ich das übersehen? Gruss Uwe
Bin wohl doch etwas erblindet. Port-Init ist ok, aber Stack fehlt irgendwie. Gruss Uwe
Danke für die Antwort, obwohl sichs schon 16 Leute gesaugt haben, hat wohl abgesehen von dir noch keiner ne Idee...aber zurück zum Stack. Stimmt, hab ich vergessen, ich hab das einfach mal aus dem Tutorial kopiert: ldi r23, RAMEND ;Stackpointer initialisieren out SPL, r23 Geht aber trotzdem nicht...jetzt blinkt in der 4. Zeile das erste Feld... MFG bearmann2k
Hat denn sonst keiner ne Idee, was ich falsch mach...hab damit echt erst angefangen und hab keinen Plan warums nich läuft !!! MFG bearmann2k
ldi data, 'T' ;"S" auf dem Display ausgeben rcall lcd_data ;lcd_data aufrufen ;????????????????? UND WIE GEHTS WEITER ???????????????????? .include "lcdrout.asm" ;lcdrout einfügen Dein Programm läuft also in "lcdrout.asm" rein, kriegt nen Stack-underflow und schmiert ab. Das ist so, wie einen Zug weiterfahren zu lassen, auch wenn keine Schienen mehr da sind. Du kannst ihn ja z.B. im Kreis fahren lassen: rjmp PC Peter
Hi, hab jetzt den Stack initialisiert und den rjmp Befehl eingefügt, aber es funzt trotzdem noch nicht. Die Verkabelung stimmt und der programmer is auch richtig. Hat irgendeiner ne Ahnung, woran es liegen könnte, dass es immernoch nich geht ? hier nun der überarbeitet Quellcode. MFG bearmann2k PS: @ Uwe, vielen Dank für die Mail !!!
Hab ich vergessen, der Cursor blinkt in der 4. Zeile im ersten Feld...es ist kein Buchstabe oder ähnliches zu sehn.
Hi! Da haben wir doch was übersehen sbi portd,1 ; RS auf High für Daten RS ist doch auf PD0!! Also sbi portd,0 !!! Ändere das mal schnell, Auch weiter unten ist es falsch. Gruss Uwe
Wer keine ".equ" Anweisungen benutzt, den bestraft das Leben ! Ich habs bei mir z.B. so gemacht: .equ lcd_ddr = ddrb .equ lcd_port = portb .equ lcd_e = PB3 .equ lcd_rs = PB4 .equ lcd_ck = PB0 Und dann im Code: sbi lcd_port, lcd_rs Peter
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.