Aktivera PWM för 16F877A

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Aktivera PWM för 16F877A

Inlägg 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?
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg 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."
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Skriver jag CCP0CON = %00001100 så går det inte igenom kompileringen.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Nej, men du måste anropa dem som

HPwm 1,127,1500
HPwm 0,127,1500

setupen är riktig
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg 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...)
Chrille
Inlägg: 523
Blev medlem: 24 september 2003, 23:54:12
Ort: Torekov
Kontakt:

Inlägg av Chrille »

Fick det att fungera, tackar.
Skriv svar