Hi! Ich möchte gerne ein lcd mit einem 18f242 ansteuern, aber ich weiß
nicht, wo der Fehler im Code ist.
Im Anhang steht der Code.
Bei mir wird dann diese Fehlermeldung ausgegeben:
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 55 : Overwriting previous
address contents (0006)
Und dies mehrmals.
Was ist falsch?
Danke schonmal
Hallo obi,
der Code den du gepostet hast und die Fehlermeldung passen irgendwie
nicht zusammen. Wenn ich deine lcd.asm in MPLAB betrachte, sehe ich nur
eine Leerzeile in Zeile 55. Vor allem irritiert mich, dass diese Meldung
mehrmals kommen soll. Steht in allen Meldungen am Ende "LCD.ASM 55 :" ?
Mit welchen Tools arbeitest du?
Gruss,
Edson
komisch...jetzt habe ich nocheinmal alles übersetzen lassen und jetzt
ist sind die zeilen auch anders...aber egal.
Ich benutze auch MPLAB. Ich muss zugeben den Cade habe ich von
www.sprut.de und wollte ihn für mich umändern...aber das ist wohl nicht
so einfach ;-)
Hier einmal die komplette Fehlerliste:
----------------------------------------------------------------------
Release build of project `K:\my progs\18f242_lcd\pic18f242_lcd.mcp'
started.
Thu Jul 10 18:58:51 2008
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "K:\my progs\18f242_lcd\pic18f242_lcd.mcs".
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F242
"lcd.asm" /l"lcd.lst" /e"lcd.err"
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 50 : Address exceeds maximum
range for this processor.
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 50 : Overwriting previous
address contents (0006)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 51 : Address exceeds maximum
range for this processor.
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 51 : Overwriting previous
address contents (0008)
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 51 : Overwriting previous
address contents (0009)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 52 : Address exceeds maximum
range for this processor.
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 52 : Overwriting previous
address contents (000A)
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 52 : Overwriting previous
address contents (000B)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 53 : Address exceeds maximum
range for this processor.
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 53 : Overwriting previous
address contents (000C)
Error[118] K:\MY PROGS\18F242_LCD\LCD.ASM 53 : Overwriting previous
address contents (000D)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 54 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 56 : Argument out of range
(005E not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 56 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 56 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 60 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 61 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 62 : Argument out of range
(00BE not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 62 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 62 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 63 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 64 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 65 : Argument out of range
(00BE not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 65 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 65 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 66 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 67 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 68 : Argument out of range
(00BE not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 68 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 68 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 69 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 70 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 71 : Argument out of range
(00BE not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 71 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 71 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 72 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 73 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 74 : Argument out of range
(00BE not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 74 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 74 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 77 : Argument out of range
(003C not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 77 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 77 : Address exceeds maximum
range for this processor.
Warning[202] K:\MY PROGS\18F242_LCD\LCD.ASM 87 : Argument out of range.
Least significant bits used.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 87 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 88 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 89 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 90 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 91 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 92 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 93 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 94 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 95 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 96 : Argument out of range
(0044 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 96 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 96 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 98 : Address exceeds maximum
range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 99 : Argument out of range
(0040 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 99 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 99 : Address exceeds maximum
range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 100 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 106 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 107 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 108 : Argument out of range
(0040 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 108 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 108 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 110 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 111 : Argument out of range
(0088 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 111 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 111 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 113 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 114 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 115 : Argument out of range
(0040 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 115 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 115 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 117 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 118 : Argument out of range
(0088 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 118 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 118 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 119 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 120 : Argument out of range
(0088 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 120 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 120 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 121 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 122 : Argument out of range
(0088 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 122 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 122 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 123 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 127 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 128 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 129 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 130 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 131 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 132 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 133 : Argument out of range
(0040 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 133 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 133 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 134 : Address exceeds
maximum range for this processor.
Error[113] K:\MY PROGS\18F242_LCD\LCD.ASM 138 : Symbol not previously
defined (RP0)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 138 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 139 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 140 : Address exceeds
maximum range for this processor.
Error[113] K:\MY PROGS\18F242_LCD\LCD.ASM 141 : Symbol not previously
defined (RP0)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 141 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 143 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 144 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 145 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 146 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 147 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 148 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 149 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 150 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 154 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 155 : Argument out of range
(00A2 not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 155 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 155 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 156 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 157 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 158 : Address exceeds
maximum range for this processor.
Error[126] K:\MY PROGS\18F242_LCD\LCD.ASM 163 : Argument out of range
(009A not between 0000 and 3FFF)
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 163 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 163 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 164 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 165 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 166 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 167 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 168 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 169 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 170 : Address exceeds
maximum range for this processor.
Warning[220] K:\MY PROGS\18F242_LCD\LCD.ASM 171 : Address exceeds
maximum range for this processor.
Halting build on first failure as requested.
----------------------------------------------------------------------
Release build of project `K:\my progs\18f242_lcd\pic18f242_lcd.mcp'
failed.
Thu Jul 10 18:58:53 2008
----------------------------------------------------------------------
BUILD FAILED
So jetzt habe ich das Programm übertragen und wollte testen, nun habe
ich aber das gefühl, dass das display nicht richtig initialisiert wird.
kann mir jemand helfen?
das gefühl äußert sich so, dass nur die beleuchtung angeht ;-) aber ich
schätze die initialisierung passt nicht ganz.
display habe ich das EA W204B-NLW von Electronic Assembly. Dies hat 4x20
zeichen und hat den kontroller hd44780
Wenn es ein hd44780 ist solltest du dies DREIMAL tun:
movlw B'00110000' ; D4,5 setzen,
0011(8Bit-Modus)0(einzeigig)0(5x7Dot)
call C8b
movlw D'40' ; 40 ms Pause
movwf loops
call WAIT
Und danach:
movlw B'00111000' ; D4,5 setzen,
0011(8Bit-Modus)1(mehrzeilig)0(5x7Dot)
call C8b
movlw D'40' ; 40 ms Pause
movwf loops
call WAIT
40ms braucht man nur beim ersten 0x30. Danach kann man weiter runter
gehen.
Siehe Datenblatt zum hd44780. Länger warten schadet aber nicht.
Ansonsten auch mal am Kontrast drehen.
Das mit den LATx ist sicher auch ne gute Idee.
Hi Tobias
Poste mir doch mal bitte deinen "fertigen" Quellcode.
Ich versuche auch krampfhaft ein LCD 4x20 mit nem 18F242 anzusteuern,
aber es läuft nicht.
Wenn ich die Schaltung an meine 5V lege geht die hintergrundbeleuchtung
des Displays an und mein Quarz schwingt schön.
Im Einschaltmoment sind der 1ten und 3ten Zeile überlall Quadrate zu
sehen,
die nach kurzer Zeit verschwinden und dann tut sich nichts mehr.
Die Ansteuerung habe ich genauso wie du vorgenommen aber es funzt halt
nicht.
Woran könnte das liegen???
Vielen Dank für schnelle Hilfe im Vorraus.
MfG
Flo
Hi!
Im Anhang findest du mein file. Es funktioniert aber im Moment auch
nicht so ganz. in der vierten Zeile ist irgendwie ein Fehler.
Bin im Moment dabei alles irgendwie in C zu schreiben ;-)
Ich hoffe mein Code hilft dir weiter. Ich hätte die "Buchstaben" für das
Display ins Main geschrieben und von der Init die Main aufgerufen.
Vielleicht hilft das ja was ;-)
Gruß
Tobias
Hi,
mein LCD funktioniert nun auch!!! ;-)
Nur das die Zeichen, die in der 4ten Zeile erscheinen sollten, in die
2te Zeile geschrieben werden.
Woran das liegt versuche ich aber noch herraus zu finden!!!
Danke für die Hilfe.
MfG
Florian
hast du mein programm dafür verwendet?
bei mir ist das auch leider so...und keiner kann mir sagen wieso ;-)
also erst wird in der vierten zeile begonnen, dann nach 5 zeichen oder
so gehts in der dritten weiter und nach einem zeichen ab inne
zweite...hast du das auch so?
Gruß
Tobias
Ne,
Ich hab auch das "Sprutprogramm" abgeändert und versucht für mich
maßzuschneidern.
Bei mir werden die Zeilen 1 bis 3 ganz normal beschrieben, aber Das was
in die 4te Zeile gehört erscheint in der 2ten Zeile.
Warum das so ist hab ich noch nicht so ganz verstanden! :-|
Bist du schon weiter gekommen??? :-)
Gruß
Flow
So habs mal bei mir getestet...das hat den selben fehler wie mit meinem
alten programm...also er schreibt die erste, dann die zweite, dann die
dritte und nach 3 zeichen inner vierten springt er bei mir auf das
letzte zeichen der dritten zeile, schreibt da ein zeichen hin und
anschließend schreibt er die restlichen zeichen in die zweite
zeile...nicht schön..
nur ich finde keinen fehler bei mir ;-)
Hi,
den Ablauf den du mit deiner letzten Antwort geschildert hast, zeigt
dein Display mit dem Code den ich gepostet habe?
Weil mein Display zeigt mit dem von mir geposteten Code folgendes an:
Die 1te Zeile wird normal beschrieben, dannach die 2te, dann die 3te und
mit den Symbolen(Punkte) die dann in der 4ten Zeile erscheinen sollten,
überschreibt er mir den Text in der 2ten Zeile!
War das verständlich? :-)
Gruß
Flow
ja das war verständlich ;-)
bei mir hatter aber den von mir geschilderten Ablauf...ist ja irgendwie
blöd...mit nem anderen Display, was ich noch hier habe ist es auch
nochmal anders... da isses so wie bei dir... komisch das
also bei meinem "Hauptdisplay" was ist normal benutze kommt folgendes(;
ist der Punkt in der Mitte und * das ausgefüllte):
Na , du Sch.....
Wie geht's dir ?????
.;.;.;.;.;.;.;.;.;.*
.;.
und dann gehts so weiter(ein Zeichen ans Ende der dirtten):
Na , du Sch.....
Wie geht's dir ?????
.;.;.;.;.;.;.;.;.;.;
.;.
und dann:
Na , du Sch.....
.;.;.;.;.;.;.;.*????
.;.;.;.;.;.;.;.;.;.;
.;.
und bei dem anderen Display sieht das Endresultat halt so aus(_ = leer):
Na , du Sch.....
.;.;.;.;.;.;.;.;.;.*
.;.;.;.;.;.;.;.;.;.*
__________________
das ist irgendwie blöd ;-)
weißt du woran das liegt?
Gruß
Guten Morgen erstmal! :-)
Also ich denke ich weiß wo dein Problem herkommt.
Ich benutze ein 4-zeilliges-Standart-LCD mit -->20 ZEICHEN<-- pro Zeile.
Aber bei den Displays ist es ja so, das die 1te und die 3te Zeile
Hardwaremäßig zusammen gehören, sowie die 2te und die 4te es eine
zusammenhängende Zeile sind.
Beweis: Ich hatte ja bei mir das Problem, dass meine Zeichen, die in der
4ten Zeile erscheinen sollten, einfach die 2te Zeile überschrieben
haben!
Jetzt habe ich meinen Code soweit geändert, das ich nicht mehr mit der
"WAIT"-Schleife arbeite, sondern das Busy-Flag com LCD-Controller
abfrage.
Somit erscheinen alle Zeichen gleichzeigt auf dem Display und nicht wie
vorher nach und nach.
Dann habbe ich dass was ich in der 4ten Zeile haben wollte einfach an
die Zeichen der 2ten Zeile angehängt und siehe da.
Die 4te Zeile wird beschrieben, und zwar richtig! :-)
Gruß
Flow
PS:kann es sein das du ein 4x16 LCD benutzt? das würde zu deinem
Fehlerbild passen! ;-)
jaa...da hatte ich auch schonmal was ausprobiert ;-)
alles hintereinader weg ist okay...dann läufts :-) und das mit dem wait
hab ich gemacht, damit ich sehen konnte wieso er was falsches
anzeigt...also wie die zeichen nacheinander geschrieben werden.
aber der aufbau ist ja so...
es wird gesagt: springe in die erste
1
> ____________________
2
____________________
3
____________________
4
____________________
dann wird gesagt schreib was
1
> Na , du Sch.....____
2
____________________
3
____________________
4
____________________
dann springe in 2:
1
Na , du Sch.....____
2
> ____________________
3
____________________
4
____________________
schreib was
1
Na , du Sch.....____
2
> Wie geht's dir ?????
3
____________________
4
____________________
springe in 3, schreib was
1
Na , du Sch.....____
2
Wie geht's dir ?????
3
> .;.;.;.;.;.;.;.;.;.*
4
____________________
springe in 4, schreib was
1
Na , du Sch.....____
2
Wie geht's dir ?????
3
.;.;.;.;.;.;.;.;.;.*
4
> .;.;.;.;.;.;.;.;.;.*
so müsste es ja normal aussehen ;-)
aber wieso macht er nach dem dritten Zeichen einfach woanders weiter?
Ich gebe ihm keinen Steuerbefehl oder sonstiges...lediglich dass er ab
der Adresse des ersten Zeichens der vierten Zeile weiterschreiben
soll...
Nur wo liegt der Fehler?
Wenn man alles voll schreibt funktionierts ja normal...also muss ja
irgendwas im Code sein, womit er nicht klar kommt...
PS: nehme auch standart 4x20 ;-) so blöd bin ich auch nicht ;-)
PS2: das was du da machst ist ja quasi pfuschen...das kann ich auch
;-)nur normal müsste es mit den Sprüngen ja auch klappen
Also erstmal: Ich pfusche nicht, ich improvisiere! :-P
Desweiteren habe ich keine Ahnung warum dein Display so "Faxen" macht.
Vor allem weil ja die ersten drei Zeichen in die 4te Zeile geschrieben
werden und er dann in ne andere Zeile springt.
Poste mal dein Programm, würd mir das gern mal angucken.
Oder gib mir einfach mal den Steuerbefehl um in der 4ten Zeile, erstes
Zeichen weiterzuschreiben. Weil das bei mir gar nicht so funktioniert
mit dem Sprung in die 4te Zeile. Dabei beginnt der Speicherbereich für
die 4te Zeile doch bei 45h, oder nicht?
Gruß
Flow
jaa... der spruch mit dem improvisieren ;-) der ist bekannt :-P
mein display macht ja nicht solche faxen sondern deins auch ;-)
mein Programm habe ich oben schon gepostet...und das hast du auch shcon
für deine zwecke umgeschrieben und somit könntest du theoretisch auch
deins zum debuggen nehmen ;-)
aber es ist ja auch komisch, dass ein und der selbe Code bei 2 Displays
mit gleichem Chip unterschiedliche Folgen hat.
woher hast du denn die 45? meiner Meinung nach wäre das die 54?!
vielleicht hilft es ja 2 nop mehr einzufügen und die ansteuerzeiten
allgemein zu verlängern?
z.b. bei
1
call LB ; zeile 4
2
movlw B'10111100'
3
movwf LATB
4
bsf LATC, LcdE
5
nop
6
bcf LATC, LcdE
einfach mal nach dem "movwf LATB" 2 nop einfügen?
und zwischen den enable auch 2 nop...kannst du das mal austesten?
aber warte mal...adresse 54 wäre ja 1101 0100 oder hab ich das gerade
falsch? (bit7 wegen dd-adresse) irgendwie bin ich glaube ich gerade
verwirrt...hab mir nen anderes programm mal angesehen und da schreibt er
in die vierte zeile mit D9(mit bit 7) also 59 (ohne bit 7)
häää?
du hast doch bestimmt gerade den pc an und den programmer am laufen
oder? könntest du dann mal 11011001 für die vierte zeile testen? und
überall wo ich geschrieben hatte 1-2 nop zwischen?
Gruß
Tobias
Hi.
Also erstmal, ja ich meinte die 54H!!!
Ich habs mit der "11011001" ausprobiert. Geht nicht!
Aber dann hab ich folgendes gemacht: In "meinem" Prog war die 2te Zeile
ab der Speicheradresse 28H angesprochen, was ja eingentlich durch eine
40H ersetzt werden müsste. Gesagt getan, ich hab ne 40H für die 2te
Zeile reingeschrieben und der 4ten wieder ganz normal die 54H
zugewiesen.
Und es funktioniert!!! :-)
Teste es mal aus....hab den Code ja angehangen.
Gruß
fl0w
Hey, Programm umgeschrieben und es funktioniert ;-)
Wer hätte das gedacht ;-)
Wie lange sitze ich da jetzt schon dran? uff...ziemlich lange und nie
isses mir aufgefallen...und den anderen hier wohl auch nicht ;-)
Ja vielen dank für deine Bugsuche :-)
ES FUNKTIONIERT!!!
Eine neue Erkenntnis: Wenn man alles richtig macht, funktioniert es auch
richtig XD
Wünsche dir noch viel Spaß mit PICs und deinem Display und viel Glück!
Gruß
Tobias