Modulo CCP
Modulo CCP
Modulo CCP
bit 5-4 CCPxX:CCPxY: Bits menos significativos del PWM En modo PWM: Los dos bits menos significativos del ciclo de trabajo. Los ocho bits ms significativos estn en CCPRxL. bit 3-0 CCPxM3:CCPxM0: Bits de seleccin del modo CCP a utilizar 0000 = Comparacin/Captura/PWM desactivada (reset del mdulo CCP) 0100 = Modo de captura, cada flanco descendente 0101 = Modo de captura, cada flanco ascendente 0110 = Modo de captura, cada 4 flanco ascendente 0111 = Modo de captura, cada 16 flanco ascendente 1000 = Modo de comparacin, CCPx=1 al igualarse (CCPxIF=1) 1001 = Modo de comparacin, CCPx=0 al igualarse (CCPxIF=1) 1010 = Modo de comparacin, genera interrupcin al igualarse (CCPx invariable, CCPxIF=1) 1011 = Modo de comparacin, lanza accin especial (CCPxIF=1, CCPx invariable) CCP1 resetea TMR1 / CCP2 resetea TMR1 y lanza una conversin A/D 11xx = Modo PWM
El periodo de la seal viene fijado por la configuracin de TMR2 y por el contenido del registro PR2 (0x92). Este registro de 8 bits contiene los 8 bits ms significativos de una cuenta de 10 bits. El ciclo de trabajo o ciclo til (duty cycle) viene definido por el contenido del valor del registro CCPRxL junto con los bits CCP1CON<5:4> antes de comenzar un nuevo periodo. El temporizador base con el que se compara el contenido de estos registros es el TMR2.
10
11
00h) 04h) 05h) 06h) 07h) 08h) 09h) 0Ah) 0Bh) 0Ch) 1Ch) 2Ch) 3Ch)
12
Variables definidas en 16F876.h long CCP_1; #byte CCP_1 = 0x15 #byte CCP_1_LOW = 0x15 #byte CCP_1_HIGH = 0x16
long CCP_2; #byte CCP_2 = 0x1B #byte CCP_2_LOW = 0x1B #byte CCP_2_HIGH = 0x1C
13
14
15
16
RS RW E 4 5 6
9 10 1 2 3 4 5 6 7
RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT
21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18
PIC16F876
Simular y Montar
7 8 9 10 11 12 13 14
1 2 3
U1
D0 D1 D2 D3 D4 D5 D6 D7
17
18
Mediante los bit 3-0 CCPxM3:CCPxM0 (Bits de seleccin del modo CCP) se puede configurar Modo de comparacin: CCP2 resetea TMR1 y lanza una conversin A/D. Cargando el CCP2 con el valor adecuado se consigue que, cuando coincida con el valor de TMR1, se produzca una conversin AD (si est habilitada). Con el valor obtenido de la conversin (0 a 1023) se puede obtener una seal PWM proporcional ha este valor. Si dicha seal es filtrada con un filtro paso bajo se obtiene una continua proporcional al valor de la conversin. Como aplicacin se puede aplicar esta seal a una barra de leds y obtener una seal luminosa proporcional a la seal adquirida.
19
RV2 BAT3
5 RV2(3) 1k
R3
10k 3 C1(1) 5
U1
10 9 8 7 6 5 4 3 2 1 10 11 12 13 14 15 16 17 18 1 20 19 18 17 16 15 14 13 12 11
U2
1 2 3 4 5 6 7 8 9 10 LED-BARGRAPH-GRN
V+
C1 U3
9 10 1 2 3 4 5 6 7 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT 21 22 23 24 25 26 27 28 11 12 13 14 15 16 17 18 1uF
7 6 4 8 9
BAT1
10
R1
1k
V-
LM3914
R2
2.7k
Simular en ISIS
PIC16F876
20