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!!!
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
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
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
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.
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.
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
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