Doch, Timer0 des Mega16 kann vier Operationsmodi:
Es existiert nur ein OutputCompareUnit.
(*) Timer steht, ist weder an den Systemtakt, noch das externe Bein gekoppelt.
In der Bascom-Onlinehilfe ist das leider nicht ganz eindeutig, es sieht so aus, als wenn "Config Timer0" das nicht unterstützt, PWM taucht da absurderweise nur mit "Config Timer2" auf. Hat ja da eigentlich nix zu suchen...
Du kannst den Timer aber problemlos selbst einstellen - sind ja nur drei Register für den Timer selbst, und zwei weitere für die Interruptanbindung.
Ein Konfigurationsregister (TCCR0), ein Zählerregister (der eigentliche Timer, TCNT0), ein Compareregister (OCR0). Interrupt-Flags befinden sich im Timer Interrupt Flag Register (TIFR), die Enable-Bits im Timer Interrupt Mask Register (TIMSK) .
Beim Tiny24/44/84 besitzt Timer0 zwei OC-Units, kann damit zwei zusätzliche Operationsmodi (frequenzkorrigierter single-/dualslope-PWM, OutputCompare-Unit A legt dann den Überlaufs-/Umkehrpunkt fest, Unit B ist für PWM nutzbar).
Da der Timer mehr Konfigurationsmöglichkeiten bietet, benötigt er mehr Einstellbits, besitzt zwei Konfigurationsregister (TCCR0A, TCCR0B), außerdem besitzt jeder Timer ein eigenes TIFR und TIMSK.
Wie gesagt, wenn man sich mit de eigentlichen Hardware der Controller beschäftigt, ist es manchmal einfacher direkt die Register zu beschreiben, als herauszufinden welchen Config-Befehl man da verwenden muß, und welche Parameter da was bewirken.
Der Hintergrund ist hier konkret der, daß die älteren Controller an Timer0 teilweise gar kein PWM besaßen (ATtiny11, 12, 15, 26, beim 28 bin ich mir nicht sicher, ebenso bei den AT90... Dinosaurier halt). Also nur Timer/Counter mit Überlauf 0xFF->0x00 und Überlaufinterrupt.
Inzwischen gibt es deutlich mehr Variabilität zwischen den Controllern (ohne, mit einem, mit zwei, mit drei OC-Units, mit oder ohne IC-Unit, 8 oder 16Bit. Bei den neuen XTinies gibt es auch 12bit-Timer oder 16bit-Timer die in zwei 8bit-Timer gesplitted werden können).
Wenn man da alles mit einem Config-Befehl erschlagen will, wird dessen Parametrisierung komplexer als die Register eines einzelnen Controllers sind.
- normaler Timer, single slope mit Überlauf 0xFF->0x00
- phasenkorrekter PWM, dual slope 0x00->0xFF->0x00
- CTC, "frequenzkorrigierter" Normalmodus, singleslope, das Output Compare Unit bestimmt den Überlauf nach 0x00
- fastPWM, single slope, Überlauf 0xFF->0x00
Es existiert nur ein OutputCompareUnit.
(*) Timer steht, ist weder an den Systemtakt, noch das externe Bein gekoppelt.
In der Bascom-Onlinehilfe ist das leider nicht ganz eindeutig, es sieht so aus, als wenn "Config Timer0" das nicht unterstützt, PWM taucht da absurderweise nur mit "Config Timer2" auf. Hat ja da eigentlich nix zu suchen...
Du kannst den Timer aber problemlos selbst einstellen - sind ja nur drei Register für den Timer selbst, und zwei weitere für die Interruptanbindung.
Ein Konfigurationsregister (TCCR0), ein Zählerregister (der eigentliche Timer, TCNT0), ein Compareregister (OCR0). Interrupt-Flags befinden sich im Timer Interrupt Flag Register (TIFR), die Enable-Bits im Timer Interrupt Mask Register (TIMSK) .
Beim Tiny24/44/84 besitzt Timer0 zwei OC-Units, kann damit zwei zusätzliche Operationsmodi (frequenzkorrigierter single-/dualslope-PWM, OutputCompare-Unit A legt dann den Überlaufs-/Umkehrpunkt fest, Unit B ist für PWM nutzbar).
Da der Timer mehr Konfigurationsmöglichkeiten bietet, benötigt er mehr Einstellbits, besitzt zwei Konfigurationsregister (TCCR0A, TCCR0B), außerdem besitzt jeder Timer ein eigenes TIFR und TIMSK.
Wie gesagt, wenn man sich mit de eigentlichen Hardware der Controller beschäftigt, ist es manchmal einfacher direkt die Register zu beschreiben, als herauszufinden welchen Config-Befehl man da verwenden muß, und welche Parameter da was bewirken.
Der Hintergrund ist hier konkret der, daß die älteren Controller an Timer0 teilweise gar kein PWM besaßen (ATtiny11, 12, 15, 26, beim 28 bin ich mir nicht sicher, ebenso bei den AT90... Dinosaurier halt). Also nur Timer/Counter mit Überlauf 0xFF->0x00 und Überlaufinterrupt.
Inzwischen gibt es deutlich mehr Variabilität zwischen den Controllern (ohne, mit einem, mit zwei, mit drei OC-Units, mit oder ohne IC-Unit, 8 oder 16Bit. Bei den neuen XTinies gibt es auch 12bit-Timer oder 16bit-Timer die in zwei 8bit-Timer gesplitted werden können).
Wenn man da alles mit einem Config-Befehl erschlagen will, wird dessen Parametrisierung komplexer als die Register eines einzelnen Controllers sind.