Forum: Mikrocontroller und Digitale Elektronik Assembbler Pause für LCD


von tuxianer (Gast)


Lesenswert?

hi,
ich wollte für mein LCD diese Pause einfügen...ich benutze 16MHz.

Nun wollte ich das so berechnen:


http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Lass_den_Assembler_rechnen


allerdings habe ich das nicht verstanden wie ich dort bei 16 MHZ auf die 
Pausen komme. Kann mir das nochmal jemand erklären?

von Jörg X. (Gast)


Lesenswert?

> "... Bei 4 Mhz werden also 4000000 / 3 * 50 / 1000000 = 66.6 Durchläufe
> durch die Schleife benötigt um eine Verzögerungszeit von 50µs (0.000050
> Sekunden) zu erreichen, hexadezimal ausgedrückt: $42 ..."
steht direkt darunter ;)
Einfach die 4000000(Hz) durch deine 16Mio. ersetzen. Und du musst die 
Zahl ja nicht unbedingt als Hexzahl in den Code schreiben ;)

hth. Jörg

von tuxianer (Gast)


Lesenswert?

das geht ja nicht den bei der Rechnung mit 16MHz kommt das Raus:



((16 000 000 / 3) * 50) / 1 000 000 = 266.666667


was nicht Möglich ist

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

doch dein register kann bis 255 dann isses halt aa bisschen weniger...

von Jörg X. (Gast)


Lesenswert?

> dann isses halt aa bisschen weniger...
Bleibt die Frage, ob das reicht, d.h. wie genau die 50µs eingehalten 
werden müssen (steht im Datenblatt des Displays bzw. dessen 
Controllers).

Wenn die 255 (oder auch 0 ;) ) nicht gehen, kannst du noch ein "nop" 
einbauen:
1
.equ XTAL  = 16000000 ;muss irgendwo an den Anfang ;)
2
...
3
delay50us:                              ; 50us Pause
4
           ldi  temp1, ( XTAL * 50 / 4 ) / 1000000
5
delay50us_:
6
           dec  temp1
7
           nop                          ; tu nichts
8
           brne delay50us_
9
           ret
In der Formel steht jetzt eine 4, weil die schleife länger dauert.

hth. Jörg

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Oder zwei schleifen a 25µS..

von tuxianer (Gast)


Lesenswert?

@ Jörg X

wird das jetz nicht weniger pause

von Thomas B. (yahp) Benutzerseite


Lesenswert?

> das geht ja nicht den bei der Rechnung mit 16MHz kommt das Raus:
> ((16 000 000 / 3) * 50) / 1 000 000 = 266.666667
> was nicht Möglich ist

Genau das steht ja auch im Tut. drinnen ;-)

>doch dein register kann bis 255 dann isses halt aa bisschen weniger...

Das geht eben nicht, wenn man es den Assembler ausrechnen lässt.

von Jörg X. (Gast)


Lesenswert?

>> wird das jetz nicht weniger pause
Nein, die Schleife dauert ja länger ;)

hth. Jörg

von tuxianer (Gast)


Lesenswert?

ok...ich dachte es liegt an den pausen, das dass nicht geht


Beitrag "cbi und sbi jedoch mit variablen"

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.