LCD Tutorial + Problem

Gast #136194
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
Gast #136201
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 ;)
Gast #136205
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
Gast #136207
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
Gast #136208
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
Gast #136209
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
Gast #136211
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren