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!!
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
Das ist der Code den ich eigentlich will, wegen dem Zeileproblem dieses LCD-Treibers.
Aber selbst das Programm das vorher funktionierte geht nicht mehr:
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
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.
Lesezeichen