Vielen Dank
Nur langsam wirds wirklich Frustbastelei...
Erst hab ich ewig rumprogrammiert...irgendwann erschienen dann wie durch Zufall auf dem LCD die heiligen Worte "Hallo Welt".
Voller Freunde hab ich dann das Sample runtergehauen, meinen eigentlichen Code drauf und seit dem ist die LCD Ansteuerung wieder tot.
Auch wenn ich nun den alten Code draufspiele geht absolut nichts mehr, nada...
Ich habe den AVR schon auf Funktion getestet. Er hat keine Schäden, führt jeden normalen Befehl (Tasterdruck -> LED leuchtet) korrekt aus, sofort aber das LCD ins Spiel kommt scheint alles zusammenzubrechen und er macht gar nichts mehr auch nicht mehr das mit dem Tasterdruck.
Ich versteh das nicht wieso er nun den alten Code nicht mehr ausführt...
Ich habe bei allen relevanten Pins nochmal den Kaltlötstellentest gemacht. Alle Lötstellen sind ok!
Man muss sagen, dass bei mir Bascom auch ein bissl spinnt, hängt sich manchmal auf aber wenn es dann mal speichert, dann durchaus brauchbaren Code.
Ich habe hier mal meinen LCD-Code. Bitte checkt den Mal, das muss doch gehen!!
Das ist der Code den ich eigentlich will, wegen dem Zeileproblem dieses LCD-Treibers.Code:$regfile = "m162def.dat" $crystal = 11059200 Declare Sub Lcdinit Declare Sub Lcdwrite(byval Zeichen As Byte) Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2 'Config Lcd = 20 * 4a 'ich habs mit und ohne versucht, nichts geht... Waitms 100 Call Lcdinit Cls Do Lcd "Hallo Welt" 'Displayausgabe für den Benutzer Waitms 5000 Cls 'Display löschen Loop Sub Lcdinit Call Lcdwrite(&B00101100) Call Lcdwrite(&B00001001) Call Lcdwrite(&B00101000) Call Lcdwrite(&B00000110) Call Lcdwrite(&B00001100) End Sub 'Schreibt die Initialisierungs - Bits zum LCD Sub Lcdwrite(byval Zeichen As Byte) ' Höherwertiges Nibble setzen If Zeichen.4 = 1 Then Portb.2 = 1 Else Portb.2 = 0 If Zeichen.5 = 1 Then Portb.3 = 1 Else Portb.3 = 0 If Zeichen.6 = 1 Then Portb.4 = 1 Else Portb.4 = 0 If Zeichen.7 = 1 Then Portb.5 = 1 Else Portb.5 = 0 ' Höherwertiges Nibble übertragen Portb.0 = 1 Waitms 1 Portb.0 = 0 Waitms 1 ' Niederwertiges Nibble setzen If Zeichen.0 = 1 Then Portb.2 = 1 Else Portb.2 = 0 If Zeichen.1 = 1 Then Portb.3 = 1 Else Portb.3 = 0 If Zeichen.2 = 1 Then Portb.4 = 1 Else Portb.4 = 0 If Zeichen.3 = 1 Then Portb.5 = 1 Else Portb.5 = 0 ' Niederwertiges Nibble übertragen Portb.0 = 1 Waitms 1 Portb.0 = 0 Waitms 1 End Sub End
Aber selbst das Programm das vorher funktionierte geht nicht mehr:
Wie gesagt, ich vermute sehr sehr stark dass es ein softwaretechnisches Problem gibt, denn vor dem ersetzen dieses Codes durch einen anderen funktionierte das Ding 1A. Das LCD scheint auch zu gehen. Man kann am Poti 1A den Kontrast verändern. Das ging ganz am Anfang noch nicht.Code:'=============================================================================== ' Compiler '=============================================================================== $regfile = "m162def.dat" $crystal = 11059200 '------------------------------------------------------------------------------- '=============================================================================== ' LCD Parametrieren '=============================================================================== Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2 Config Lcd = 20 * 4 Cls Cursor Off Noblink '______________________________________________________________________________ Do Cls Lcd "Hallo" Waitms 2000 Loop End







Zitieren

Lesezeichen