www.mikrocontroller.net

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


Autor: tuxianer (Gast)
Datum:

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


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

Autor: Jörg X. (Gast)
Datum:

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

Autor: tuxianer (Gast)
Datum:

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

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch dein register kann bis 255 dann isses halt aa bisschen weniger...

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
.equ XTAL  = 16000000 ;muss irgendwo an den Anfang ;)
...
delay50us:                              ; 50us Pause
           ldi  temp1, ( XTAL * 50 / 4 ) / 1000000
delay50us_:
           dec  temp1
           nop                          ; tu nichts
           brne delay50us_
           ret
In der Formel steht jetzt eine 4, weil die schleife länger dauert.

hth. Jörg

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder zwei schleifen a 25µS..

Autor: tuxianer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jörg X

wird das jetz nicht weniger pause

Autor: Thomas B. (yahp) Benutzerseite
Datum:

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

Autor: Jörg X. (Gast)
Datum:

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

hth. Jörg

Autor: tuxianer (Gast)
Datum:

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


Beitrag "cbi und sbi jedoch mit variablen"

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.