I'm not sure if I fully understand the description of PWM in the datasheet... You have selected HFINTOSC as clock source for PWM. I think this should be Fosc .
I modified my code to run the 12f1572 at 8MHz with INTOSC_NOCLKOUT and
added your code for PWM (but with Fosc as clock source)
With the following (essential part of the) code I get a 5 KHz signal on pin_A1 with 50% dutycycle:

PWM1CON = 0b11000000        -- enable module and pwm pin, standard pwm mode
PWM1CLKCON = 0b00000000     -- No prescaler, source: Fosc
PWM1PH = 800                -- phase count high (for 50% dutycycle)
PWM1DC = 1600               -- PWM1 phase count
PWM1PR = 1600               -- PWM1 period count
APFCON_P1SEL = 0            -- PWM1 output on pin_A1
pin_A1_direction = OUTPUT

Rob_H



On 15-12-2024 16:14, vsurducan wrote:
Thx Rob for the feedback!

Well. I've checked the hardware, I have a PCB manufactured in lab, A4 goes to a connector only.
I suspect a defective chip. It also has a weird behavior on PWM.
There are five registers to be written to get the standard PWM mode as shown in the code below.
The PWM clock source was set to Fosc (PWM1CLKCON_CS = 00)
That is meaning according to my understanding that changing the Foc from 8Mhz to 32MHz and keeping the PWM registers unchanged, the PWM frequency will increase 4 times on 32Mhz compared with 8 Mhz. However, the frequency reamains exactly the same, 10KHz at 8Mhz or 32Mhz ( verified on RA4)  so the PWM clock arhitecture from datasheet seems to be wrong, or the chip is bad.

PWM1CLKCON = 0b00000001 -- No prescaler, divide clk source by 1
PWM1CON = 0b11000000

PWM1PH = 800    --100uS, 0.5duty
PWM1DC = 1600   ; PWM1_duty = (PWM1DC - PWM1PH)/(PWM1PR+1)
PWM1PR = 1600   ; PWM1_period = (PWM1PR + 1)*prescaler/ PWM1CLK
                ; PWM1CLK = 1/(target_clock/4) =  0.5uS  at 8MHz

On Sun, Dec 15, 2024 at 4:41 PM Rob Hamerling <[email protected]> wrote:


    Just tested the jallib blink sample (which is running at 4 MHz).
    At pin_A4 see a freq. of 0.998 MHz. So it seems like you have a
    hardware/wiring problem..

    On 14-12-2024 12:15, vsurducan wrote:
    Hi Rob,
    I'm trying to understand the PWM in PIC12F1572, for which the pwm
    library can not be used.

    I need to see the system clock.
    The problem is that I can not make it visible on clockout pin.
    The following code should do it?

    include 12f1572                     -- target PICmicro
    --
    ;pragma target clock    32_000_000       -- oscillator frequency
    pragma target clock    8_000_000       -- oscillator frequency
    --
    pragma target OSC      INTOSC_NOCLKOUT           -- internal
    oscillator
    pragma target PLLEN    DISABLED                  -- PLL off
    pragma target CLKOUTEN ENABLED                  -- clock output
    enabled
    pragma target WDT      DISABLED                  -- watchdog
    pragma target BROWNOUT DISABLED                  -- no brownout reset
    pragma target LVP      ENABLED                   -- low voltage
    programming
    pragma target MCLR     EXTERNAL                  -- external reset
    --

    OSCCON_SCS = 0                      -- select primary oscillator
    OSCCON_IRCF = 0b1110                -- 8 MHz
    ;OSCCON_SPLLEN = ENABLED               -- software PLL on   8x4=32MHz
    OSCCON_SPLLEN = DISABLED    - 8Mhz OSC
    --
    enable_digital_io()                 -- make all pins digital I/O
    pin_A4_direction = output ; output osc/4
-- You received this message because you are subscribed to the
    Google Groups "jallib" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected].
    To view this discussion visit
    
https://groups.google.com/d/msgid/jallib/CAM%2Bj4qskr5urcQxa_Ok3gHTeq4nMBAtz%2BkmziB4kBf1HBuHCJg%40mail.gmail.com
    
<https://groups.google.com/d/msgid/jallib/CAM%2Bj4qskr5urcQxa_Ok3gHTeq4nMBAtz%2BkmziB4kBf1HBuHCJg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- *Rob H*amerling, Vianen, NL -- You received this message because you are subscribed to the Google
    Groups "jallib" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected].
    To view this discussion visit
    
https://groups.google.com/d/msgid/jallib/1c978896-3436-41c8-be39-b2d1bd05dc3b%40gmail.com
    
<https://groups.google.com/d/msgid/jallib/1c978896-3436-41c8-be39-b2d1bd05dc3b%40gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "jallib" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/jallib/CAM%2Bj4qsF4Ew0bxJG1h_CkC4cHSxyS%3DTEGtHeVtwFzm4h%2B53y5Q%40mail.gmail.com <https://groups.google.com/d/msgid/jallib/CAM%2Bj4qsF4Ew0bxJG1h_CkC4cHSxyS%3DTEGtHeVtwFzm4h%2B53y5Q%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
*Rob H*amerling, Vianen, NL

--
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/jallib/7f22d2e1-7fbb-4e45-b68f-5ef134aa285f%40gmail.com.

Reply via email to