Sida 1 av 1
Aktivera PWM för 16F877A
Postat: 10 maj 2005, 00:26:55
av Chrille
Jag försöker aktivera dom båda PWM kanalerna som finns i PIC 16F877A men jag lyckas inte riktigt. Har läst i databladet och jag fattar det som att jag måste sätta vissa bitar i några register för att först aktivera PWM läget men måste jag även sedan aktivera några timrar?
Har provat med följande kod, kör med PicBasic.
TRISC = %00000000
CCP1CON = %00001100
CCP2CON = %00001100
HPwm 1,127,1500
HPwm 2,127,1500
Kan någon förklara detta med vad som måste aktiveras för att båda PWM kanalerna ska fungera?
Postat: 10 maj 2005, 08:05:22
av bengt-re
De heter 0 och 1, inte ett och 2.
"CCPx is a variable or constant of 0 or 1 that specifies the PWM
hardware to use. The 16F876 has two PWMs available. The first is
on pin C2 which is selected by setting a value of 1. The second is on
pin C1 and is selected by using a value of 0 for CCPx."
Postat: 10 maj 2005, 18:09:40
av Chrille
Skriver jag CCP0CON = %00001100 så går det inte igenom kompileringen.
Postat: 10 maj 2005, 19:47:31
av bengt-re
Nej, men du måste anropa dem som
HPwm 1,127,1500
HPwm 0,127,1500
setupen är riktig
Postat: 10 maj 2005, 21:31:28
av $tiff
Snipp från ett program i PICBasic där jag använder båda PWM-kanalerna.
Det är bara att ställa CCPR*L-registerna för pulskvot.
Kod: Markera allt
'PWM config
TRISC.2 = 0 'PortC.2 output (PWM1)
TRISC.1 = 0 'PortC.1 output (PWM2)
CCP1CON = %00001100 'Mode select = PWM1 on
CCP2CON = %00001100 'Mode select = PWM2 on
T2CON = %00000100 'Timer2 ON + 1:1 prescale
PR2 = $FF '~19,53 kHz @ 20MHz OSC
CCPR1L = 0 'No duty (set in program...)
CCPR2L = 0 'No duty (set in program...)
Postat: 10 maj 2005, 23:00:58
av Chrille
Fick det att fungera, tackar.