Samarbetet mellan TMR2 och PR2 används ofta för att skapa en PWM-cykel.
Dock ej sådär värst direkt på PIC12F1572, den har sina tre egna PWM.
Dessa ser, i nuläget, onödigt krångliga ut att använda.
Så jag tänker mig att göra den PWM jag behöver lite manuellt, typ.
(Det är säkerligen mycket bättre använda de inbyggda PWM, men hoppa över det.)
Om man tittar på hur TMR2 och PR2 så borde det vara så att det dels sätts en flagga när de möts (är lika) och dels när Timer2 flödar över.
Det ser dock inte ut som det, och av vad jag förstår så blir det hela väldigt märkligt.
TMR2 följer Fosc/4 via modifikationer från pre- & postscaler etc etc.
När den räknat sig upp till värdet av PR2 sätts TMR2IF... Eller...?
Åsså detta...
1) Om TMR2 nollas när den når PR2 - vart tar den andra delen av "duty cycle" vägen?The value of TMR2 is compared to that of the Period register, PR2, on each clock cycle. When the two values match, the comparator generates a match signal as the timer output. This signal also resets the value of TMR2 to 00h on the next cycle and drives the output counter/ postscaler (see Section20.2 “Timer2 Interrupt”).
Utan den delen kan man endast få ut en fyrkantsvåg... Lika långt till vad som nu händer.
2) Var hittar man sagda "timer output"?
3) Vad menas med "drives the output counter/ postscaler"?
Eller rättare sagt... Jag antar att TMR2IF inte sätts förrän pre och post har räknats upp till sina respektive multiplar, eller...?
Jämför man med ex PIC12F683 så finns det dels en specifierad output för när TMR2 = PR2, som även kan kopplas till en "PWM-pinne" (GP2), och dels en specifierad [avbrotts-] flagga för när TMR2 flödar över.
Vad jag frågar?
Hur fångar man (= kan avläsa) när dels TMR2 möter PR2 och dels när TMR2 flödar över?
Alltså när period börjar om och när duty cycle nås.
.