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.