Sei sulla pagina 1di 12

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
1

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVICaractersticas generalesATE-UNIOVI
Dos mdulos con idntico funcionamiento.
Registro de captura de 16 bits.
ATE-UNIOVI
Registro de comparacin de 16 bits.
Registro de ciclo de trabajo PWM.

Mdulo CCP1.
ATE-UNIOVI
Consta de dos registros de 8 bits: CCPR1H y ATE-UNIOVI
CCPR1L.
Registro de control: CCP1CON.
Accin especial: Generada mediante una comparacin.
ATE-UNIOVI
Resetea Timer1.

Mdulo CCP2.
ATE-UNIOVI Consta de dos registros de 8 bits: CCPR2H y CCPR2L.
Registro de control: CCP2CON. ATE-UNIOVI
Accin especial: Generada mediante una comparacin.
Resetea Timer1.
ATE-UNIOVI
Lanza una conversin A/D.

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


2

1
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
Condiciones de funcionamiento
Temporizadores necesarios.
Modo captura TMR1
Modo comparacin ATE-UNIOVI
TMR1
PWM TMR2

ATE-UNIOVI ATE-UNIOVI
Interaccin entre los dos mdulos CCP.
CCPx CCPy Interaccin
Captura Captura
ATE-UNIOVI
Misma base de tiempos definida en TMR1
La comparacin debe configurarse con la accin especial, que
Captura Comparacin
borra TMR1
La(s) comparacin(es) deben configurarse con la accin
ATE-UNIOVI ATE-UNIOVI
Comparacin Comparacin
especial, que borra TMR1
Las PWMs tendrn la misma frecuencia y tasa de actualizacin
PWM PWM
(interrupcin TMR2)
PWM Captura Ninguna
PWM Comparacin Ninguna ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
3

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
Registro CCP1CON / CCP2CON (17h / 1Dh)
- - CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM0

bit 5-4 CCPxX:CCPxY: Bits menos significativos del PWM


En modo PWM: ATE-UNIOVI
Los dos bits menos significativos del ciclo de trabajo.
Los ocho bits ms significativos estn en CCPRxL.

ATE-UNIOVI ATE-UNIOVI
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
0110
=
=
ATE-UNIOVI
Modo de captura, cada flanco ascendente
Modo de captura, cada 4 flanco ascendente
0111 = Modo de captura, cada 16 flanco ascendente

ATE-UNIOVI ATE-UNIOVI
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


ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
4

2
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI Modo captura ATE-UNIOVI


Captura en CCPRxH:CCPRxL los 16 bits de TMR1.
Cada flanco de bajada en CCPx
IF=1
ATE-UNIOVI
Cada flanco de subida en CCPx
Cada 4 flanco de subida en CCPx ra d a lugar a
CCPx

captu
Cada 16 flanco de subida en CCPx Cada

ATE-UNIOVI ATE-UNIOVI
Diagrama de bloques del modo de captura.

Prescaler CCPxIF 1
RCy / CCPx
ATE-UNIOVI
1 , 4 , 16

CCPRxH CCPRxL

ATE-UNIOVI
Deteccin de Habilita ATE-UNIOVI
flanco y Captura

TMR1H TMR1L
Qs
ATE-UNIOVI
CCPxCON<3:0>

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


5

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
Condiciones de funcionamiento en el modo captura
El pin CCPx debe configurarse como entrada.

ATE-UNIOVI
TMR1 debe funcionar en modo temporizador o en modo contador
sncrono.
En modo contador asncrono puede que la captura no funcione.
ATE-UNIOVI ATE-UNIOVI
Podra generarse una falsa interrupcin de captura al cambiar el
modo de captura.
Se aconseja deshabilitar CCPxIE al cambiar el modo de captura.
ATE-UNIOVI
Tambin podra generarse una falsa interrupcin al cambiar el
prescaler. Adems, un cambio directo no resetea la cuenta de flancos.
Se evitan estas situaciones reseteando el mdulo CCP (CCPxCON 0)
ATE-UNIOVI ATE-UNIOVI
antes de llevar a cabo un cambio de modo y/o un cambio de prescaler.
CLRF CCP1CON ; Apaga el mdulo
CCP
MOVLW NEW_CAPT_PS ; Carga en W el
nuevo valor ATE-UNIOVI
; del prescaler
Mdulo CCP en modo PWM MOVWF CCP1CON
ATE-Universidad de Oviedo ; Carga CCP1CON
6
con este valor

3
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
REGISTROS ASOCIADOS CON EL MODULO CCP
EN MODO CAPTURA

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
7

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI Modo comparacin ATE-UNIOVI


Cuando CCPRx coincide con TMR1 (en sus 16 bits):
El pin RCy/CCPx se pone a 1
ATE-UNIOVI
El pin RCy/CCPx se pone a 0
Se genera una interrupcin ide ncia d
a lug
ar a

coinc PxIF=1
Cada CC
Lanza una accin especial

ATE-UNIOVI ATE-UNIOVI
Diagrama de bloques del modo comparacin.

TMR1 0 (no alza flag TMR1F) CCPxIF 1


GO/DONE 1
ATE-UNIOVI
Lanza accin
especial

CCPRxH CCPRxL

ATE-UNIOVI
RCy / CCPx Q S
Lgica de ATE-UNIOVI
Comparador
salida Coincidencia
R
TRISC<2>
ATE-UNIOVI
TMR1H TMR1L
CCPxCON<3:0>

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


8

4
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Condiciones de funcionamiento en el modoATE-UNIOVI
comparacin
El pin CCPx debe configurarse como salida.

ATE-UNIOVI
TMR1 debe funcionar en modo temporizador o en modo contador
sncrono.
ATE-UNIOVI ATE-UNIOVI
En modo contador asncrono puede que la comparacin no funcione.

Cuando se selecciona generar interrupcin, el pin CCPx no se ve


afectado. ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI
Se puede generar una accin especial por hardware.
CCP1: Resetea TMR1.
CCP2: Resetea TMR1 y lanza una conversin A/D (si est activado).
En ningn caso
se pone a 0 el
ATE-UNIOVI
flag TMR1IF

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


9

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
REGISTROS ASOCIADOS CON EL MODULO CCP
EN MODO COMPARACION

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
10

5
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Modo PWM ATE-UNIOVI
T
Genera una salida PWM de 10 bits
de resolucin D
ATE-UNIOVI TMR2 = PR2

Diagrama de bloques del modo PWM. TMR2 = D


TMR2 = 0
ATE-UNIOVI
Registros de Duty Cycle ATE-UNIOVI
CCPRxL CCPRxH (esclavo)

CCPxCON<5:4> ATE-UNIOVI
Comparador R Q RCy / CCPx

TMR2 (*)
S
ATE-UNIOVI
(*) TMR2 se concatena con
ATE-UNIOVI
TRISC<2>

un reloj interno de 2 bits Comparador


TMR2 0
con frecuencia fosc para
CCPx 1 (si D0)
poder crear una base de
tiempos de 10 bits ATE-UNIOVI
PR2 CCPRxH CCPRxL

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


11

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
Condiciones de funcionamiento en el modo PWM
El periodo T se indica en el registro PR2.

ATE-UNIOVI
T = (PR2 + 1) 4 TOSC PRESCALERTMR2

El ciclo de trabajo D se indica en CCPRxL y en CCPxCON<5:4>.

ATE-UNIOVI
D = (CCPRxL:CCPxCON<5:4>) T OSC ATE-UNIOVI
PRESCALERTMR2

CCPRxH es de slo lectura en PWM.

ATE-UNIOVI
Cuando TMR2 (+ 2 bits) se iguala a CCPxH (+ 2 bits), CCPx 0.

Existe una resolucin (nmero de bits) mxima que se puede


obtener con el funcionamiento en modo PWM.
ATE-UNIOVI ATE-UNIOVI
bits
que
fosc ero d
e
efinir
log im o nm ar para d
x jo.
Res = fPWM PSTMR 2 bits M
ed e n u s
traba
se pu ciclo de
ATE-UNIOVI
log(2) el

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


12

6
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
f 1,22kHz 4,88kHz
PWM ATE-UNIOVI
19,53kHz 78,12kHz 156,3kHz 208,3kHz

PRESCALERTMR2 16 4 1 1 1 1
(fosc = 20MHz)
PR2
Resolucin
0xFFh
ATE-UNIOVI
0xFFh 0xFFh 0x3Fh 0x1Fh 0x17h

10 bits 10 bits 10 bits 8 bits 7 bits 5,5 bits


mxima

ATE-UNIOVI ATE-UNIOVI
Pasos a seguir para definir una PWM
1. Establecer el periodo T escribiendo en el registro PR2.
ATE-UNIOVI
2. Establecer el ciclo de trabajo D en CCPRxL y en CCPxCON<5:4>.

3. Configurar el pin CCPx como salida.


ATE-UNIOVI ATE-UNIOVI
4. Fijar el prescaler de TMR2 y activar el temporizador. (T2CON)

ATE-UNIOVI
5. Configurar el mdulo CCP para funcionar en modo PWM.

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


13

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
REGISTROS ASOCIADOS CON EL MODULO CCP
EN MODO PWM

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
14

7
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
PLANTEAMIENTO
Se trata de realizar el diseo del programa encargado de generar el
ATE-UNIOVI
ring de llamada de un telfono. Para eso empleamos el mdulo CCP1
de un PIC16F877 y la placa de prcticas cuyo esquema elctrico
aparece a continuacin (el jumper J9 debe estar puesto).
ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
15

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
PLANTEAMIENTO
Se emplea un oscilador de 4 MHz para el microcontrolador.
ATE-UNIOVI
El timbre de llamada consiste en un intervalo de 1s de sonido (en
el que se van alternando dos tonos de 320Hz y de 480Hz durante
25ms cada uno), seguido de un intervalo de silencio de 2s y as
ATE-UNIOVI
sucesivamente. ATE-UNIOVI

ATE-UNIOVI
1s (sonido) 2s 1s(sonido)
25ms 25ms 25ms 25ms 25ms 25ms 25ms 25ms
320Hz 480Hz 320Hz 480Hz ...... 320Hz 480Hz Silencio 320Hz...

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
16

8
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
SOLUCION

ATE-UNIOVI
Se utiliza el mdulo CCP1 en modo PWM para generar dos ondas
cuadradas con frecuencias de emisin 320Hz y 480Hz. Para reducir
ATE-UNIOVI ATE-UNIOVI
armnicos, se hace que stas ondas sean cuadradas (t en estado alto =
t en estado bajo)

Se utiliza el temporizador TMR0 para temporizar intervalos de 25ms,


ATE-UNIOVI
mediante interrupcin. Un segundo se contabiliza por 40 interrupciones
de TMR0 y 2 segundos por 80 interrupciones de TMR0.

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
17

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
SOLUCION
Cuando entra una interrupcin, se evala el estado actual y las posibles
ATE-UNIOVI
modificaciones en el mismo de acuerdo con el siguiente diagrama de
estados:

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
18

9
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
CALCULOS PARA LAS ONDAS PWM
Modo PWM
ATE-UNIOVI
Frecuencia:
1/frecuencia = (4/fosc) * Prescaler TMR2 * (PR2+1)

ATE-UNIOVIPrescaler
Con fosc=4MHz
TMR2 = 16 (elegido)
ATE-UNIOVI
Resulta: para 320Hz PR2= 194 (0xC2)
para 480Hz PR2=129 (0x81)
ATE-UNIOVI
Ancho de pulso (tiempo en estado alto):
1/(2*frecuencia) = (1/fosc) * Prescaler TMR2 * (CCPR1L+2bits)
ATE-UNIOVI Tomamos los 2 bits a cero
Resultando:
ATE-UNIOVI
para 320Hz CCPR1L = 97 (0x61)
para 480Hz CCPR1L = 65 (0x41)

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
19

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
CALCULOS PARA TMR0

ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI
Para temporizar 25ms = (4/fosc) * Prescaler TMR0 * (256-Precarga)

Resulta: Precarga = 158 (0x9E)


ATE-UNIOVI

ATE-UNIOVI ATE-UNIOVI

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
20

10
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
PROGRAMA - INICIALIZACION

ATE-UNIOVI
Algoritmo utilizado para la inicializacion:

Puertos: PORTC con RC2 como salida


TMR0 como temporizador y prescaler de 256
ATE-UNIOVICarga de PR2 para generar 320Hz (0xC2) ATE-UNIOVI
CCP1 en modo PWM
TMR2 con prescaler de 16
ATE-UNIOVI
Inicializamos variable ESTADO con cdigo de onda de 320Hz
Ponemos a cero CONTADOR de interrupciones
Cargamos registro de ancho del pulso (duty) CCPR1L (0x61)
Precarga de TMR0 para desbordar tras 25ms (0x9E)
ATE-UNIOVIBorramos flag T0IF y activamos interrupciones de TMR0 ATE-UNIOVI
Ponemos en marcha TMR2
BUCLE PRINCIPAL INFINITO

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
21

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
PROGRAMA INTERRUPCION DE TMR0

ATE-UNIOVI
Se comprueba que T0IF=1 si no salimos de inmediato
Salvamos el contexto del programa ppal. (W y STATUS)
Precargamos TMR0
ATE-UNIOVI
Incrementamos CONTADOR de interrupciones ATE-UNIOVI
Verificamos ESTADO actual para evaluar posibles cambios
Si ESTADO==0 (silencio) y CONTADOR == 80 (2s)
ponemos CONTADOR a cero
ATE-UNIOVI
cambiamos ESTADO a 1 (onda de 320Hz)
activamos mdulo CCP en PWM
cargamos PR2 y CCPR1L adecuadamente para 320Hz
ATE-UNIOVI
Si ESTADO ==1 (onda 320Hz)
ATE-UNIOVI
cambiamos ESTADO a 2 (onda de 480Hz)
cargamos PR2 y CCPR1L adecuadamente para esa frecuencia
ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
22

11
Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI
EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO
PROGRAMA INTERRUPCION DE TMR0 (continuacin)

ATE-UNIOVI
Si ESTADO ==2 (onda 480Hz)
cambiamos ESTADO a 1 (onda de 320Hz)
ATE-UNIOVI cargamos PR2 y CCPR1L para generar 320Hz ATE-UNIOVI
Si ESTADO era 1 2
Si CONTADOR ==40 (ha pasado 1s emitiendo)
ATE-UNIOVI
ponemos CONTADOR a cero
cambiamos ESTADO a 0 (silencio)
desactivamos CCP2
Ponemos a cero el flag de TMR0
ATE-UNIOVIRecuperamos contexto del programa ppal. ATE-UNIOVI
Retornamos del programa de tratamiento de interrupcin

ATE-UNIOVI
Mdulo CCP en modo PWM ATE-Universidad de Oviedo
23

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI MODIFICACION PROPUESTA ATE-UNIOVI


EJEMPLO PRACTICO GENERACION DE UN RING TELEFONICO

Alimentacin
J2 VCC J3 VCC

ATE-UNIOVI de CC
P1
1 1
Alimentacin 2 2
z
en ve
CCP2
S e usa
J5
1

BNC

ATE-UNIOVI ATE-UNIOVI
J1 RC1/CCP2 2 Q1
BC547
1 RC1/CCP2
2 RC2/CCP1
3

3 Conexin de
Conexin del
4 J7 Altavoz
5
LS1
PORTC 6 1
7 2
8 3
9 J4 4

ATE-UNIOVI
BNC SPEAKER
10 RC2/CCP1
PORTC

J6
GND

ATE-UNIOVI ATE-UNIOVI
1
Para test con 2 RC2/CCP1
Osciloscopio 3 RC1/CCP2
4

1s (sonido) 2s 1s(sonido)
25ms 25ms 25ms 25ms 25ms 25ms 25ms 25ms
250Hz 400Hz 250Hz 400Hz
ATE-UNIOVI ...... 250Hz 400Hz Silencio 250Hz...

Mdulo CCP en modo PWM ATE-Universidad de Oviedo


24

12

Potrebbero piacerti anche