Ik probeer om PWM van 38 Khz op een PIC16F628A te krijgen. Dat lukt wel. Maar PWM van deze PIC gebruikt Timer 2.
Als ik daarnaast nog een timer interrupt wil van 10Khz, dan lukt dat niet, omdat bv Timer0 en Timer3 geen PR kennen.

Hoe kan ik dit toch voor elkaar krijgen?

Je kunt een timer pre-loaden. Je laadt de timer met een bepaalde waarde in het begin van de interrupt. Als je die waarde goed kiest komt de volgende interrupt precies op tijd.

Simpelste is een 16F1826/27/47 te gebruiken, die heeft 3 identieke timers (timer 2/4/6) die je ook voor PWM kunt gebruiken.
Met timer 0 en 1 en preload kan het ook, maar ik gebruik dat nooit (te veel gedoe)

Zijn pin compatible.

Op 26 december 2023 17:55:04 schreef Arco:
Simpelste is een 16F1826/27/47 te gebruiken, die heeft 3 identieke timers (timer 2/4/6) die je ook voor PWM kunt gebruiken.
Met timer 0 en 1 en preload kan het ook, maar ik gebruik dat nooit (te veel gedoe)

Zijn pin compatible.

Ja, ik weet het. De 1847 is altijd al wel een van mijn 'favorieten' geweest, een heel veelzijdige processor in een 18 pins dil uitvoering.
Maar het was een beetje een uitdaging om het met 628's re doen, daar heb ik er nog een vracht van liggen.
Maar ik kan hier geen preload van timer0 en 1 ontdekken (geen pr0 of pr1).
Tenzij je het zelf programmeert met een eigen tellertje o.i.d

Preload doe je door de gewenste waarde in TMR0 (voor timer 0) of TMR1L/H (voor timer 1) te schrijven tijdens een interrupt.
(die timers hebben geen auto-reload, als je geen reload doet start 'ie weer op 0x00)

Uitgebreidere timers omschrijving in Ch11/12/13 van de Reference Manual:

16xxref-man.pdf

Op 26 december 2023 19:26:32 schreef Arco:
Preload doe je door de gewenste waarde in TMR0 (voor timer 0) of TMR1L/H (voor timer 1) te schrijven tijdens een interrupt.
(die timers hebben geen auto-reload, als je geen reload doet start 'ie weer op 0x00)

Uitgebreidere timers omschrijving in Ch11/12/13 van de Reference Manual:
[bijlage]

Ik heb de PIC16F1847 maar weer van stal gehaald. Dat is zeker een stuk makkelijker dan die 628A, inderdaad met die PIC een hoop 'gedoe'.

Ik heb in de Datasheet van de 1847 gelezen dat Timer2 wordt gebruikt voor de PWM, terwijl Timer4 en Timer6 vrij zijn te gebruiken. Zij kennen ook een Prescale en Postscale.

Voor de registers zorgen de PWM-Routines van MikroBasic (Init, Start, Stop, Duty_Cycle). Daar heb ik dan geen omkijken naar.

Je kunt zelf instellen welke timer PWM gebruikt (Timer 2/4/6)