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.
jetzt sagt doch mal was leute! ich weiß, is vielleicht ne blöde frage, aber ich komm einfach nicht drauf.
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.html#110533 http://www.mikrocontroller.net/forum/read-1-17095.html#17103 http://www.freescale.com/files/microcontrollers/doc/app_note/AN1222.pdf http://www.freescale.com/files/microcontrollers/doc/app_note/AN1771.pdf Im Anhang eine quick&dirty Testversion (überarbeitete Version der AN).
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.