www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd mit pic18f242?


Autor: Tobias M. (obi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlt ein ORG:

  ORG  0x0000
Init  movlw  B'10001111'  ; RC0 .. RC3 inputs, RC4 - RC6 output, RC7 
input
    movwf  TRISC
    clrf  TRISB
.
.
.

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhh :-) vielen Dank!
jetzt gehts!
Was macht das ORG denn?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was macht das ORG denn?

Es sagt dem Assembler das er ab dem ORG an Adresse 0x0000
mit der Codegenerierung anfangen soll.

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
He holger, ich habe grad drei mal meine Antworten wieder gelöscht weil 
du so schnell bist. Sieht ja sonst aus als würde ich dir nachplappern. 
;)

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah okay ;-)
Vielen Dank für eure schnelle Hilfe!

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie äußert sich denn das Gefühl auf dem Display... ;)
Und was für ein Display ist das überhaupt? HD44780 kompatibel?

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genauer geschaut habe ich jetzt nicht. Aber benutze LATx statt PORTx, 
wenn du Ausgänge ansprichst.

Autor: Tobias M. (obi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi! es geht leider immer noch nicht. Ich habe mal mein aktuelles 
Programm angehängt...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhmmm:

BL  ;BusyLoop
  bcf  LATC, LcdRs
  bsf  LATC, LcdRw  ; Lesen
  bsf  LATC, LcdE
  nop
->  movf  LATB, w

Da solltest du schon PORTB nehmen ;)

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist denn genau der unterschied zwischen lat und port?

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi! das display läuft jetzt. sry hatte die widerstände für die 
kontrastspannung vertauscht ;-) jetzt läufts einwandfrei. danke für eure 
hilfe!

Autor: Fl0wnage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch meine momentane ASM-File.
:-) (und jetzt nicht mehr als Gast!)

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so jetzt hier nochmal der Versuch das File hochzuladen...

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du mal dein aktuelles programm posten?
bei deinem letzten programmpost wird ja nur hallo geschrieben ;-)

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier der gewünschte Code. :-)

Ich mach Feierabend, also bis moin du "Schw......" ;-)


Gruß

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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! ;-)

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
> ____________________
  ____________________
  ____________________
  ____________________

dann wird gesagt schreib was
> Na , du Sch.....____
  ____________________
  ____________________
  ____________________

dann springe in 2:
  Na , du Sch.....____
> ____________________
  ____________________
  ____________________

schreib was
  Na , du Sch.....____
> Wie geht's dir ?????
  ____________________
  ____________________

springe in 3, schreib was
  Na , du Sch.....____
  Wie geht's dir ?????
> .;.;.;.;.;.;.;.;.;.*
  ____________________

springe in 4, schreib was
  Na , du Sch.....____
  Wie geht's dir ?????
  .;.;.;.;.;.;.;.;.;.*
> .;.;.;.;.;.;.;.;.;.*

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

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
    call  LB        ; zeile 4
    movlw  B'10111100'
    movwf  LATB
    bsf    LATC, LcdE
    nop
    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äää?

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian Weiß (Firma: HellaKG) (fl0wnage)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias M. (obi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.