a pic18f26k22 can have 5 different pwm streams with 3 different frequencies all with individual duty cycles, old clunker chips like 16f876a are much less capable of course
here is 3 streams 3 frequencies
i find the hpwm command pretty inflexible and seldom use it [the clock defines are not correct in mho] , pwm is not difficult to setup manually
Code:
'****************************************************************
'* Name : PWM demo.pbp *
'* Author : Richard *
'* Notice : *
'* : *
'* Date : 21/12/2024 *
'* Version : 1.0 *
'* Notes : TMR2 CCP4 10K, TMR4 CCP5 12.5K, TMR6 CCP1 8K *
'* :18f26k22 @64Mhz *
'****************************************************************
#CONFIG
CONFIG FOSC = INTIO67
CONFIG PLLCFG = ON
CONFIG PRICLKEN = ON
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRTEN = ON
CONFIG BOREN = SBORDIS
CONFIG BORV = 190
CONFIG WDTEN = ON
CONFIG WDTPS = 32768
CONFIG CCP2MX = PORTC1
CONFIG PBADEN = OFF
CONFIG CCP3MX = PORTB5
CONFIG T3CMX = PORTC0
CONFIG HFOFST = ON
CONFIG P2BMX = PORTB5
CONFIG MCLRE = EXTMCLR
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG
DEFINE OSC 64
ANSELB=0
ANSELC=0
ANSELA=0
trisa=% 11101111
trisb=% 11111110
trisc=% 11111001
OSCCON=$70
OSCTUNE.6=1
T2CON=6 ;PRESCALE 16 TMR ON
T4CON=6 ;PRESCALE 16 TMR ON
T6CON=6 ;PRESCALE 16 TMR ON
PR2=$63 ;10 KHZ
PR4=$4F ;12.5 KHZ
PR6=$7C ;8 KHZ
CCP4CON = $0C ;PWM MODE + DUTY LSB 2 BITS
CCPR4L = $32 ;DUTY MSB 8 BITS
CCP5CON = $0C ;PWM MODE + DUTY LSB 2 BITS
CCPR5L = $27 ;DUTY MSB 8 BITS
CCP1CON = $0C ;PWM MODE + DUTY LSB 2 BITS
CCPR1L = $3E ;DUTY MSB 8 BITS
CCPTMRS1 = 4 ;TMR2 CCP4, TMR4 CCP5
CCPTMRS0 = 2 ;TMR6 CCP1
main:
goto main
Bookmarks