MPLAB Code Configurator fungerar utmärkt för att leta fram inställning av SFR.
Visst blir det lite bök med att förenkla detta till Assembler, men alla små detaljer kommer med. Finns där, om man bara lyckas finna dem i texten.
Exempelvis paketet för PWM3.
Dock förfaller värdet för Duty Cycle inte kommit med.
Jag hittar bara:
PWM3CON = 0xC0 // ; POL active_hi EN enabled OUT OE enabled MODE standard_PWM
PWM3CLKCON = 0x50 // ; CS FOSC PS Divide_clock_src_by_32
Alltså inställningarna som sådana. Men det känns som om jag tappat en "ej 0x00", jag har för mig det var tre av dem.
Det är väl dessa jag missat få med...
PWM1DCL = 0x10; //PWM1DCL 16;
PWM1PRL = 0x1F; //PWM1PRL 31;
PWM1OFL = 0x01; //PWM1OFL 1;
...eller så var de satta till 0x00.
När jag gick igenom vad jag tagit över från MCC och tittade på den medföljande dokumentationen gick det att urskilja hur det var tänkt vara byggt.
Sedan blev det lite hastigt mot dagens slut, så överföringen hit månne gått mindre väl.
Inget att oroa sig för, alla pusselbitar är på plats.
OK, det är förhållande mellan PWMxTMR, PWMxPR och PWMxDC.
Men hur hänger det egentligen ihop, med PWMxOUT?
Om vi, för enkelhetens skull, håller oss till väldigt korta register, en nibble, så blir det enklare med exempel etc.
Vi borde kunna stryka "PWMx" oxå, eller...?
Vad jag förstått räknar TMR upp och när den DC slås OUT av och när den räknat vidare upp till PR så slås OUT på igen.
Vilket visas i Figur 22-4 p190. IOFS är även PH med, men bortse från det här och nu. Dvs jag har inte tänkt använda någon fasförskjutning här.
Min första stötesten är varför man skiljer på TMR och PR alls. Jag bryr mig inte om det har med saken att göra i andra mode än standard eller vid standard med phase eller offset, det har inget med här och nu att göra.
Vad finns det för nytta med att sätta TMR till 16d, PR till 7d och DC till 4d?
Hm... Bättre fråga vad effekten blir.
Vad blir effekten av att sätta TMR till 16d, PR till 7d och DC till 4d?