www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Reload Value für Timer berechnen??


Autor: Scott (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wie berechne ich richtig den Nachlade-Wert (reload value) für den 8 Bit
Timer0 im 90s2313? (Betrieb mit 4 Mhz prescaler 256 gewünschte zeit
384us)

4Mhz/256=15625Hz

1/15625Hz=64µs

384µs/64µs=6

==>> der reload value ist 0xfa  (er zählt von 250 bis 255 bei 256
erfolg der overflow)

Jetzt die eigentlche Frage, warum bekommt das Program AvrCalc
eine Zeit von 416,67µs herraus???? Und nicht wie ich 384µs??

vielen Dank!!!

Autor: Quark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Scott,
wenn ich bei AVRCalc 384us eingebe, bekomme ich genau
deinen Wert raus (mit Prescaler 256).
Mal andersrum:

      5*64us = 320us  --->  3125,0  Hz
      7*64us = 448us  --->  2232,1x Hz

also für 416,x us ist 6 auch der beste Wert, wieso
AVRCalc dann diesen wählt, weiss ich auch nicht.
Ich kann nur die us vorgeben, aber nicht andersrum.
Wie hast du das gemacht? (AVRCalc 2.0)
Quark

wo finde ich das richtige u = my = mü Zeichen? Danke

Autor: Scott (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also ich stelle AvrCalc 2.0 mit: 4 MHz und 256 Prescaler ein.

Jetzt möchte ich den reload Wert von folgenden Zeiten haben:

384µS -> reload value (TCNT0): 0xaf -> Zeit laut AvrCalc : 384µs

400µS -> reload value (TCNT0): 0xaf -> Zeit laut AvrCalc : 416µs

416µS -> reload value (TCNT0): 0xaf -> Zeit laut AvrCalc : 450,6µs

Wie kann das überhaubt möglich sein, dass ich für ein und denselben
reload value 3 verschiedene Zeiten rausbekomme. Mir ist das halt nur
mal irgendwann aufgefallen!

@Quark für das 'µ' Zeichen einfach:  alt Gr+m  ,drücken.

Vielen Dank,
Scott

Autor: Scott (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, da hat sich der Fehlerteufel eingeschlichen, die reload values
stimmen oben nicht. Es muss wie folgt heißen:


also ich stelle AvrCalc 2.0 mit: 4 MHz und 256 Prescaler ein.

Jetzt möchte ich den reload Wert von folgenden Zeiten haben:

384µS -> reload value (TCNT0): 0xfa -> Zeit laut AvrCalc : 384µs

400µS -> reload value (TCNT0): 0xfa -> Zeit laut AvrCalc : 416µs

416µS -> reload value (TCNT0): 0xfa -> Zeit laut AvrCalc : 450,6µs

Wie kann das überhaubt möglich sein, dass ich für ein und denselben
reload value 3 verschiedene Zeiten rausbekomme. Mir ist das halt nur
mal irgendwann aufgefallen!

@Quark für das 'µ' Zeichen einfach:  alt Gr+m  ,drücken.

Vielen Dank,
Scott

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!

ich möchte meinem avr eine frequenz vorgeben und dieser soll dann
automatisch den richtigen prescale und den reload-wert einstellen. mit
was für ner formel kann ich das ausrechnen? über ein beispiel würd ich
mich sehr freuen! ps: ich progge in bascom und es geht um den
16bit-timer eines mega16.

mfg, anfänger.

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
???

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt sagt doch mal was leute!

ich weiß, is vielleicht ne blöde frage, aber ich komm einfach nicht
drauf.

Autor: Profi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kommt darauf an, in welchem Bereich sie liegen soll und wie genau Du die
Frequenz treffen willst.
Versuche, den Prescale-Wert möglichst klein und den Reload-Wert
möglichst groß zu wählen, damit Du eine feine Frequenzauflösung
erreichst.

min.Prescale-Wert berechnen:
Fclk  Fout  65535     auf die nächste 2er-Potenz aufrunden.
Reload-Wert berechnen:
Fclk  Pres  Fout

Wenns noch genauer gehen soll:
synthetisch erzeugen, hab ich gerade mit dem 68hc908 gemacht, geht
wunderbar.
Frequenzbereich hier z.B. 0,4394 .. 14400 auf 0,4394 Hz genau.
Motorola Application Notes AN1222 (Einton) und AN1771 (Zweiton).
http://www.mikrocontroller.net/forum/read-1-110222...
http://www.mikrocontroller.net/forum/read-1-17095.html#17103
http://www.freescale.com/files/microcontrollers/do...
http://www.freescale.com/files/microcontrollers/do...
Im Anhang eine quick&dirty Testversion (überarbeitete Version der AN).

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh cool. danke!

also die frequenz soll so zwischen 0.25Hz und 10Hz liegen.

leider versteh ich nicht wirklich assemblerisch, sondern nur bascomisch
oder vielleicht noch ein wenig cisch :-)

hm, irgendwie stimmt die formel für den reloadwert nicht. oder ich bin
zu blöd.
beispiel:

16.000.000/1024/0,25 = 62500 (also ich will auf 0,25Hz kommen)

der timer-berechner von rnAVR gibt mir da 3036 als relaodwert aus.

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, bin schon selbst drauf gekommen. es muss heissen:

65536-(Fclk/Pre/Fout)

dann kommt auch das selbe wie bei rnAVR raus. danke nochmal für deine
hilfe!

greetz, anfänger

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was für ein Counter ist das?
Ein AUFWÄRTSZÄHLER!
Wie viele mögliche Zahlen gibt es bei 16 Bit?
65536!
Also, 65536, bzw. nach 65535 + 1 gibs einen Überlauf (Overflow), also
geht er danach auf 0.
Bei 65536 - 3036 kommst Du auf die errechneten 62500 die Du einsetzen
mußt.
Oder Du machst ein - (minus) davor und setzt dann -3036 ein:

 ldi r16,low(-3036)
 out TCNT1L,r16
 ldi r16,high(-3036)
 out TCNT1H,r16

Der Assembler mach aus den -3036 dann 62500.

Gruß
Andi

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Du warst wohl doch schneller als gedacht!

Gruß
Andi

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.