Forum: Mikrocontroller und Digitale Elektronik LCD Tutorial + Problem


von Daniel S. (Gast)


Lesenswert?

Hallo,
habe laut dem Tutorial auf dieser Page mal alles aufgebaut.

Scheint schon zu funktionieren, aber mit fehler

Wenn ich das Programm rauf schicke mit dem Text "Test" zeigt es
"Ts" an, mit anderen Wörter das selbe problem, es werden einfach
sachen ausgelassen oder falsche zeichen angezeigt.

danke

von Benedikt (Gast)


Lesenswert?

Dann ist dein LCD zu langsam, oder der PC zu schnell.
Kann man irgendwo eine Verzögerung einstellen ?

von Daniel S. (Gast)


Lesenswert?

ist möglich,
schau mal unter dem LCD tutorial nach, da bei den lcd-routines.asm sind
zeiten angegeben. wenn man die ändert gibt es aber fehlermeldungen.

danke

von Stefan (Gast)


Lesenswert?

hi, ich hab genau das gleiche problem, hab nen ATMega8 und ein 2x16
zeichen display...
habt ihr das problem inzwischen gelöst?

MfG
Stefan

von avusgalaxy (Gast)


Angehängte Dateien:

Lesenswert?

Probiert mal das...

von Stefan (Gast)


Lesenswert?

hi,
danke für die schnelle antwort, das problem besteht aber immer noch..
kann es an der zuleitung liegen? ich nutze ein 8poliges flachbandkabel
das ca. 50cm lang ist...

MfG
Stefan

von avusgalaxy (Gast)


Lesenswert?

Keine Ahnung....

Mit wieviel Mhz läuft dein Atmega??

von Stefan (Gast)


Lesenswert?

er läuft mit 8MHz, im tutorial steht das man die zeit anpassen muss...
hab dann mal testweiße die nop's verdoppelt... weil das tut ist ja für
4MHz geschrieben... keine veränderung

achja, meist werden die ersten 3 stellen antezeigt, es kommt dann sowas
wie "Tes" oder "Tet" die ersten beiden ziffern sind aber meist
richtig.. manchmal kommen noch ein paar komplett schwarz ausgefüllte
felder....

MfG
Stefan

PS: bin kein assambler genie.. ich kenn mich eigentlich fast garnicht
damit aus.. hatte bisher nur ein 6kanal lauflicht an meinem Mega8 ;)

von avusgalaxy (Gast)


Lesenswert?

Stell mal den internen Oszi auf 4 Mhz.., oder auf 2

von Stefan (Gast)


Lesenswert?

ganz blöde frage, wie mach ich das?

ich muss dazu doch irgendwas an den Fusebits änder oder?

MfG
Stefan

von avusgalaxy (Gast)


Lesenswert?

Ja, musst du, z.B mit dem Pony Programm.Hast  du noch überhaupt keine
Bits gesetzt? Dann läuft er normal mit einem Mhz

von Stefan (Gast)


Lesenswert?

ich nutze yaap und habe die bits so gesetzt wie in dem tutorial.. also
ich denke er läuft jetzt mit 8MHz.. hatte blos den schaltplan von einer
anderen homepage... deswegen habe ich ein 8MHz quarz und kein 4MHz...

MfG
Stefan

von avusgalaxy (Gast)


Lesenswert?

Mit yaap kenn ich mich leider nicht aus, da gibts bestimmt ein Tutorial,
wie man den internen Oszi auf 4 Mhz einstellt.

Gruß Avus

von Stefan (Gast)


Lesenswert?

ok, also prinzipiell scheint es zu funktionieren... wenn ich z.B.
"Hallo Welt" ausgeben lassen will bekomme ich "HaloWet" auf meinem
Display angezeigt ;)

ich werd mal google bemühn vielleicht find ich ja was, danke für die
hilfe

MfG
Stefan

von avusgalaxy (Gast)


Lesenswert?

Ich vermute, das der Controller einfach zu schnell ist... Normalerweise
fragt man im Programm die Enableleitung des LCD Displays ab, damit man
weiß, ob man schon wieder was senden darf oder noch warten muß. In
diesem Beispiel wurde die Enableleitung einfach auf Masse gelegt und
die Pausen so eingefügt.---> Wenn das LCD zu langsam oder der µC zu
schnell ist, dann kommt Halo Wet heraus, verstehst du mich?

Darum wäre es gut, den µC langsamer zu machen.

Gruß Avus

von Stefan (Gast)


Lesenswert?

hi,
also jetz klappt es, ich hab die fusebits so eingestellt wie sie im
auslierferungszustand waren.. allerdings nutze ich ja jetzt wieder den
internen tackt von 1MHz :( naja wenigstens es funktioniert..

danke für die hilfe

MfG
Stefan

von avusgalaxy (Gast)


Lesenswert?

bitte, bitte

Gruß Avus

von Andi (Gast)


Lesenswert?

@Stefan:
Probier mal das hier:

.equ AVRTakt=4

delay5mS:
  ldi  r24, low(5000*AVRTakt/4)
  ldi  r25, high(5000*AVRTakt/4)
  rjmp  delayuS

delay50uS:
  ldi  r24, low(50*AVRTakt/4)
  ldi  r25, high(50*AVRTakt/4)
delayuS:
  sbiw  r24,1
  brne  delayuS
  ret

Ersetze die alten delay-Routinen durch diese hier und trage in der
Konstante AVRTakt die MHz ein (4MHz = 4, 8MHz = 8 etc.).
Ist einfach und schnell auf die AVR-Frequenz abstimmbar.
Die ganzen NOP´s zwischen SBI und CBI für den Enable-Puls kannst Du
eigentlich alle weglassen da nicht mal bei 16MHz ein NOP für Enable
nötig ist.
Wenn Du willst, kannst Du in der Routine bis auf 1500/1600µS
runtergehen (1,5/1,6mS).

Gruß
Andi

von Andi (Gast)


Lesenswert?

... ich werd alt:
Wenn Du willst, kannst Du in der Routine für 5mS bis auf 1500/1600µS
runtergehen (1,5/1,6mS).

...

von Stefan (Gast)


Lesenswert?

danke, es klappt :D echt super forum und super leute hier :D

also ich geh dann ma schlafen, morgen muss ich arbeiten ;)

MfG
Stefan

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
Noch kein Account? Hier anmelden.