Hallo, ich habe gemäß des avr-gcc Tutorials ein 2x16 LCD von Reichelt (KS0070B) mit einem ATmega8 angesteuert. Das geht soweit auch erstmal. Schreibe ich nun allerdings mit lcd_data('x'); mehrere Zeichen und komme an Stelle 16, dann bekomme ich keine oder eine ganz fehlerhafte Ausgabe. Lasse ich das letzte Zeichen aus und gehe dann mit set_cursor(0,2); in Zeile 2, dann kann ich auch bis einschließlich Zeichen 15 schreiben, das 16. verursacht auch diesen Fehler. Woran liegt das? Wie kann ich das vermeiden? Der Codeschnipsel: lcd_init(); set_cursor(0,1); lcd_data('1'); // 1 lcd_data('2'); // 2 lcd_data('3'); // 3 lcd_data('4'); // 4 lcd_data('5'); // 5 lcd_data('6'); // 6 lcd_data('7'); // 7 lcd_data('8'); // 8 lcd_data('9'); // 9 lcd_data('0'); // 10 lcd_data('A'); // 11 lcd_data('B'); // 12 lcd_data('C'); // 13 lcd_data('D'); // 14 lcd_data('E'); // 15 lcd_data('F'); // 16 lasse ich diese Stelle weg, gehts set_cursor(0,2); lcd_data('1'); // 1 lcd_data('2'); // 2 lcd_data('3'); // 3 lcd_data('4'); // 4 lcd_data('5'); // 5 lcd_data('6'); // 6 lcd_data('7'); // 7 lcd_data('8'); // 8 lcd_data('9'); // 9 lcd_data('0'); // 10 lcd_data('A'); // 11 lcd_data('B'); // 12 lcd_data('C'); // 13 lcd_data('D'); // 14 lcd_data('E'); // 15 lcd_data('F'); // 16 lasse ich diese Stelle weg, gehts Danke für Eure Hilfe! Grüße Pascal
Kann es sein dass das _delay_us(42) bei Dir nicht richtig geht? Ich hatte grad eben erst sowas mit Compileroption -o0. Mit -o1 funzt das _delay_us() korrekt.
Ja, stimmt. Es liegt wirklich an _delay_us(42). Mit -O1 funktioniert es einwandfrei. Leider wird so mein Code eine ganze Ecke größer... Weiß jemand ob man irgendwie noch das Problem in den Griff bekommen kann? Zwischenzeitlich hatte ich auch mal die lcdlibrary von P. Fleury getestet, leider kann ich trotz Anpassungen in der .h dem Display kein Zeichen entlocken. Es stehen in der oberen (1.) Zeile nur schwarze Quadrate. Das Hardware-Setup ist dasselbe. Habe auch im Forum schon alle Beiträge durchgelesen, leider ohne Erfolg. Die lcdlibrary würde ich gerne nehmen, nur weiß ich nicht wie ich die mit dem KS0070B zum Laufen bekommen soll... Grüße Pascal
Nochmal Hallo! Also ich habe irgendwie Probleme mit dem Timing oder so... Ich habe mal eine ganze Zeit eine perfekte Anzeige, dann wieder zeigt das LCD mir nur Wirr-Warr. Wie kann ich den Fehler eingrenzen und beseitigen? Grüße Pascal
Pascal wrote: > Ja, stimmt. Es liegt wirklich an _delay_us(42). Mit -O1 funktioniert es > einwandfrei. Leider wird so mein Code eine ganze Ecke größer... > Weiß jemand ob man irgendwie noch das Problem in den Griff bekommen > kann? Denn geh mal auf die Compileroption -Os oder -O3 > Zwischenzeitlich hatte ich auch mal die lcdlibrary von P. Fleury > getestet, leider kann ich trotz Anpassungen in der .h dem Display kein > Zeichen entlocken. Es stehen in der oberen (1.) Zeile nur schwarze > Quadrate. Das Hardware-Setup ist dasselbe. > Habe auch im Forum schon alle Beiträge durchgelesen, leider ohne Erfolg. > Die lcdlibrary würde ich gerne nehmen, nur weiß ich nicht wie ich die > mit dem KS0070B zum Laufen bekommen soll... Das klingt alles nach Timingproblemen. Such mal alle Warteschleifen, die damit im Zusammenhang stehen, und mach die Konstanten etwas größer. Aber Achtung: Wenn die _delay_xx Funktionen benutzt werden, dann muss (!) der Optimizer des Compilers eingeschaltet sein, ansonsten stimmt das Timing überhaupt nicht.
..und er gibt doch auch eine Warnung in dieser Richtung aus oder(hab grad keinen zur Hand, hatte das aber schon mal)?
Hallo bin noch ein Anfänger und möchte gern wissen, wie man den Inhalt von Variablen auf dem LCD ausgibt und ob es möglich ist ein 4x20 LCD anzuschließen ohne große Veränderungen am Source. Benutze den Source aus dem avr-gcc Tut. Schonmal Danke für eure Hilfe!
Ein Variablenausgabebeispiel ergänze ich gerade. Veränderungen in der Source können notwenig sein bei 1/ einem anders anzusteuernden LCD-Controller auf dem Ersatz-LCD. Das kann die Initialiserung (Timing, Kommandos) und/oder die Kommandosequenzen (CURSOR_HOME...) betreffen. Näheres hierzu im Datenblatt des LCD-Controllers 2/ bei anderer Adresslage der einzelnen Zeichen in den Zeilen/Spalten (Funktion set_sursor). Näheres hierzu ebenfalls im Datenblatt des LCD-Controllers.
@ Christian A. (angst) >bin noch ein Anfänger und möchte gern wissen, wie man den Inhalt von >Variablen auf dem LCD ausgibt Festkommaarithmetik > und ob es möglich ist ein 4x20 LCD >anzuschließen ohne große Veränderungen am Source. Benutze den Source aus >dem avr-gcc Tut. Ja. MFG Falk
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.