Hallo, ich kämpfe gerade mal wieder mit dem Tiny26 und habe das Problem, dass ich dein Timer0 nicht richtig eingestellt bekomme. Ich hätte gerne, dass ich mit einer Frequenz von 100kHz (Taktfrequenz 4MHz) einen Interrupt bekomme. Nach welcher Formel berechnet sich die Timerfrequenz beim Timer0, habe im Manual des Tiny26 leider nichts gefunden! Gibt es bei diesem Timer keinen max. Wert bei dem der IR ausgelöst wird, muss dieser immer 255 sein, oder kann ich dies über den Timer reset Wert (TCNT0) einstellen?
Hallo, ohne jetzt im Datenblatt zu blättern... Du willst durch 4000kHz/100kHz = 40 teilen. Also Vorteiler 1 und Counter 40 oder Vorteiler 2 und Counter 20 oder Vorteiler 4 und Counter 10 usw. usw. Welche Kombination Dir gefällt, hängt einmal davon ab, welche Vorteiler beim konkreten Timer möglich sind (Datenblatt) und welcher Mode möglich ist (CTC oder Standard). Bei CTC also z.B Vorteiler 1, Compareregister auf 40 und Compare-IRQ eintragen. Bei Standardmode (zählt aufwärts) 255-40 in Counterregister, Overflow-IRQ eintragen und nicht vergessen, in der IRQ den Counter wieder auf 255-40 zu setzen. PS: Ob da jetzt eine Differenz von 1 drin ist, mal im Datenblatt nachschauen, wie das genaue Verhalten bei CTC, Standard usw. ist, also Zählrichtung, wann wird der IRQ erzeugt, was macht der Timer danach. Gruß aus Berlin Michael
Bernd Edlinger wrote: > Hallo, > ich kämpfe gerade mal wieder mit dem Tiny26 und habe das Problem, dass > ich dein Timer0 nicht richtig eingestellt bekomme. Ich hätte gerne, dass > ich mit einer Frequenz von 100kHz (Taktfrequenz 4MHz) einen Interrupt > bekomme. 40 Zyklen ist aber verdammt knapp. Ein leerer Interrupt kostet ja schon 10 Zyklen. Peter
In der ISR des Timer0 erhöhe ich nur einen Counter und setze den Counterwert des Timers wieder auf 215.
Bernd Edlinger wrote: > In der ISR des Timer0 erhöhe ich nur einen Counter "nur" kannst Du zwar sagen, obs aber in 40 Zyklen paßt, heißt das noch lange nicht. Du mußt schon in das Listing schauen. > und setze den > Counterwert des Timers wieder auf 215. Wenn Du das nicht per Addition unter Berücksichtignung der für die Addition benötigten Zeit machst, kanns auch nie stimmen. Schau mal ins Listing, wie spät das Reload gemacht wird. Peter
Hallo Peter, welcher Listing meinst du? (sorry bin leider kein so Profi...) mfg Bernd
Hallo, selbst wenn es "nur" 10 weitere Zyklen sind, macht das mit IRQ-Aufruf, SREG retten und zurück usw. ganz schnell 30 Zyklen. Das sind dann aber 75% CPU-Last, was soll das Kerlchen dann sonst noch so machen? Gruß aus Berlin Michael
Hallo, also wäre es sicher mal von Vorteil, wenn ich auf einen 12MHz oder 16MHz Quarz wechseln würde!
Bernd Edlinger wrote: > Hallo Peter, > welcher Listing meinst du? (sorry bin leider kein so Profi...) avr-gcc.exe -xc -Os -mmcu=attiny26 -Wall -g -o test.out *.c avr-objdump.exe -h -S test.out >test.lst Peter
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.