• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tema6 cc pen-pwm
 

Tema6 cc pen-pwm

on

  • 1,125 views

 

Statistics

Views

Total Views
1,125
Views on SlideShare
1,125
Embed Views
0

Actions

Likes
0
Downloads
62
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tema6 cc pen-pwm Tema6 cc pen-pwm Document Transcript

    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 1 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI ATE-UNIOVI Características generales Dos módulos con idéntico funcionamiento. Registro de captura de 16 bits. ATE-UNIOVI Registro de comparación de 16 bits. Registro de ciclo de trabajo PWM. Módulo CCP1.ATE-UNIOVI registros de 8 bits: CCPR1H y ATE-UNIOVI Consta de dos CCPR1L. Registro de control: CCP1CON. Acción especial: Generada mediante una comparación. ATE-UNIOVI Resetea Timer1. Módulo CCP2.ATE-UNIOVI Consta de dos registros de 8 bits: CCPR2H y CCPR2L. Registro de control: CCP2CON. ATE-UNIOVI Acción especial: Generada mediante una comparación. Resetea Timer1. ATE-UNIOVI Lanza una conversión A/D. Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 2 1
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI ATE-UNIOVI Condiciones de funcionamiento Temporizadores necesarios. Modo captura ⇒ TMR1 Modo comparación ATE-UNIOVI ⇒ TMR1 PWM ⇒ TMR2ATE-UNIOVI ATE-UNIOVI Interacción entre los dos módulos CCP. CCPx CCPy Interacción Captura Captura ATE-UNIOVI Misma base de tiempos definida en TMR1 La comparación debe configurarse con la acción especial, que Captura Comparación borra TMR1 La(s) comparación(es) deben configurarse con la acciónATE-UNIOVI ATE-UNIOVI Comparación Comparación especial, que borra TMR1 Las PWMs tendrán la misma frecuencia y tasa de actualización PWM PWM (interrupción TMR2) PWM Captura Ninguna PWM Comparación Ninguna ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 3 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI CCP1CON / CCP2CON (17hATE-UNIOVI Registro / 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 más significativos están en CCPRxL.ATE-UNIOVI Bits de selección del modo CCP a utilizar bit 3-0 CCPxM3:CCPxM0: ATE-UNIOVI 0000 = Comparación/Captura/PWM desactivada (reset del módulo 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 ascendenteATE-UNIOVIcomparación, CCPx=1 al igualarse (CCPxIF=1) 1000 = Modo de comparación, 1001 = Modo de ATE-UNIOVI CCPx=0 al igualarse (CCPxIF=1) 1010 = Modo de comparación, genera interrupción al igualarse (CCPx invariable, CCPxIF=1) 1011 = Modo de comparación, lanza acción especial (CCPxIF=1, CCPx invariable) CCP1 resetea TMR1 / CCP2 resetea TMR1 y lanza una conversión A/D 11xx = Modo PWM ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 4 2
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-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 lug ar a CCPx captu Cada 16º flanco de subida en CCPx CadaATE-UNIOVI de bloques del modo de captura. Diagrama ATE-UNIOVI Prescaler CCPxIF ← 1RCy / CCPx ATE-UNIOVI ÷ 1 , 4 , 16 CCPRxH CCPRxLATE-UNIOVI de Detección Habilita ATE-UNIOVI flanco y Captura TMR1H TMR1L Qs ATE-UNIOVI CCPxCON<3:0> Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 5 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI funcionamiento en el modo captura Condiciones de ATE-UNIOVI El pin CCPx debe configurarse como entrada. ATE-UNIOVI TMR1 debe funcionar en modo temporizador o en modo contador síncrono. En modo contador asíncrono puede que la captura no funcione.ATE-UNIOVI una falsa interrupción de captura al cambiar el Podría generarse ATE-UNIOVI modo de captura. Se aconseja deshabilitar CCPxIE al cambiar el modo de captura. ATE-UNIOVI También podría generarse una falsa interrupción al cambiar el prescaler. Además, un cambio directo no resetea la cuenta de flancos. Se evitan estas situaciones reseteando el módulo CCP (CCPxCON ← 0)ATE-UNIOVI un cambio de modo y/o un cambio de prescaler. antes de llevar a cabo ATE-UNIOVI CLRF CCP1CON ; Apaga el módulo CCP MOVLW NEW_CAPT_PS ; Carga en W el nuevo valor ATE-UNIOVI ; del prescaler Módulo CCP en modo PWM MOVWF CCP1CON ©ATE-Universidad de Oviedo ; Carga CCP1CON 6 con este valor 3
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVIASOCIADOS CON EL MODULO CCP REGISTROS ATE-UNIOVI EN MODO CAPTURA ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 7 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI Modo comparación 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 interrupción ia da idenc =1 lugar a coinc PxIF Cada CC Lanza una acción especialATE-UNIOVI de bloques del modo comparación. Diagrama ATE-UNIOVI TMR1 ← 0 (no alza flag TMR1F) CCPxIF ← 1 GO/DONE ← 1 ATE-UNIOVI Lanza acción especial CCPRxH CCPRxLATE-UNIOVI RCy / CCPx Q S Lógica de ATE-UNIOVI Comparador salida Coincidencia R TRISC<2> ATE-UNIOVI TMR1H TMR1L CCPxCON<3:0> Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 8 4
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI funcionamiento en el modoATE-UNIOVI Condiciones de comparación El pin CCPx debe configurarse como salida. ATE-UNIOVI TMR1 debe funcionar en modo temporizador o en modo contador síncrono.ATE-UNIOVI asíncrono puede que la comparación no funcione. En modo contador ATE-UNIOVI Cuando se selecciona generar interrupción, el pin CCPx no se ve afectado. ATE-UNIOVIATE-UNIOVI TMR1. acción especial por hardware. Se puede generar una CCP1: Resetea ATE-UNIOVI CCP2: Resetea TMR1 y lanza una conversión A/D (si está activado). En ningún caso se pone a 0 el ATE-UNIOVI flag TMR1IF Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 9 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI ATE-UNIOVI REGISTROS ASOCIADOS CON EL MODULO CCP EN MODO COMPARACION ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 10 5
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI PWM Modo ATE-UNIOVI T Genera una salida PWM de 10 bits de resolución D ATE-UNIOVI TMR2 = PR2 Diagrama de bloques del modo PWM. TMR2 = D TMR2 = 0ATE-UNIOVI Registros de Duty Cycle ATE-UNIOVI CCPRxL CCPRxH (esclavo) CCPxCON<5:4> ATE-UNIOVI Comparador R Q RCy / CCPx TMR2 (*) SATE-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 D≠0) poder crear una base de tiempos de 10 bits ATE-UNIOVI PR2 CCPRxH ← CCPRxL Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 11 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI de funcionamiento en el modo PWM Condiciones ATE-UNIOVI 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 sólo lectura en PWM. ATE-UNIOVI Cuando TMR2 (+ 2 bits) se iguala a CCPxH (+ 2 bits), CCPx ← 0. Existe una resolución (número de bits) máxima que se puede obtener con el funcionamiento en modo PWM.ATE-UNIOVI ATE-UNIOVI bits que ⎛ fosc ⎞ e ero d a definir log⎜ ⎜f ⎟ ⎟ o núm ar áxim n usar p bajo. Res = ⎝ PWM ⋅ PSTMR 2 ⎠ bits M ede tra se pu ciclo de ATE-UNIOVI log(2) el Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 12 6
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI f 1,22kHz 4,88kHz PWM ATE-UNIOVI 19,53kHz 78,12kHz 156,3kHz 208,3kHzPRESCALERTMR2 16 4 1 1 1 1 (fosc = 20MHz) PR2 Resolución 0xFFh ATE-UNIOVI 0xFFh 0xFFh 0x3Fh 0x1Fh 0x17h 10 bits 10 bits 10 bits 8 bits 7 bits 5,5 bits máximaATE-UNIOVI a seguir para definir una PWM Pasos ATE-UNIOVI 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 módulo CCP para funcionar en modo PWM. Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 13 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI ATE-UNIOVI REGISTROS ASOCIADOS CON EL MODULO CCP EN MODO PWM ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 14 7
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI PLANTEAMIENTO Se trata de realizar el diseño del programa encargado de generar el ATE-UNIOVI “ring de llamada de un teléfono”. Para eso empleamos el módulo CCP1 de un PIC16F877 y la placa de prácticas cuyo esquema eléctrico aparece a continuación (el jumper J9 debe estar puesto).ATE-UNIOVI ATE-UNIOVI ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 15 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI 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 25ms320Hz 480Hz 320Hz 480Hz ...... 320Hz 480Hz Silencio 320Hz...ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 16 8
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI SOLUCION ATE-UNIOVI Se utiliza el módulo CCP1 en modo PWM para generar dos ondas cuadradas con frecuencias de emisión 320Hz y 480Hz. Para reducirATE-UNIOVI ATE-UNIOVI armónicos, 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 interrupción. Un segundo se contabiliza por 40 interrupciones de TMR0 y 2 segundos por 80 interrupciones de TMR0.ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 17 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI SOLUCION Cuando entra una interrupción, se evalúa 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-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 18 9
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI CALCULOS PARA LAS ONDAS PWM Modo PWM ATE-UNIOVI Frecuencia: 1/frecuencia = (4/fosc) * Prescaler TMR2 * (PR2+1)ATE-UNIOVIPrescaler TMR2 = 16 (elegido) ATE-UNIOVI Con fosc=4MHz 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: para 320Hz ATE-UNIOVI CCPR1L = 97 (0x61) para 480Hz CCPR1L = 65 (0x41) ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 19 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI CALCULOS PARA TMR0 ATE-UNIOVIATE-UNIOVI = (4/fosc) * Prescaler TMR0 * (256-Precarga) Para temporizar 25ms ATE-UNIOVI Resulta: Precarga = 158 (0x9E) ATE-UNIOVIATE-UNIOVI ATE-UNIOVI ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 20 10
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI PROGRAMA - INICIALIZACION ATE-UNIOVI Algoritmo utilizado para la inicializacion: Puertos: PORTC con RC2 como salida TMR0 como temporizador y prescaler de 256ATE-UNIOVICarga de PR2 para generar 320Hz (0xC2) ATE-UNIOVI CCP1 en modo PWM TMR2 con prescaler de 16 ATE-UNIOVI Inicializamos variable ESTADO con código 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 Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 21 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI 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 TMR0ATE-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 módulo CCP en PWM cargamos PR2 y CCPR1L adecuadamente para 320HzATE-UNIOVI 320Hz) Si ESTADO ==1 (onda ATE-UNIOVI cambiamos ESTADO a 2 (onda de 480Hz) cargamos PR2 y CCPR1L adecuadamente para esa frecuencia ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 22 11
    • Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – GENERACION DE UN RING TELEFONICO EJEMPLO PRACTICO ATE-UNIOVI PROGRAMA – INTERRUPCION DE TMR0 (continuación) 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 TMR0ATE-UNIOVIRecuperamos contexto del programa ppal. ATE-UNIOVI Retornamos del programa de tratamiento de interrupción ATE-UNIOVI Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 23 Diseño de Aplicaciones Prácticas con Microcontroladores PICATE-UNIOVI – MODIFICACION PROPUESTA TELEFONICO EJEMPLO PRACTICO GENERACION DE UN RING ATE-UNIOVI Alimentación J2 VCC J3 VCC ATE-UNIOVI de CC P1 1 1 Alimentación 2 2 z en ve CCP2 S e usa J5 1 BNCATE-UNIOVI ATE-UNIOVI J1 RC1/CCP2 2 Q1 BC547 1 RC1/CCP2 2 RC2/CCP1 3 3 Conexión de Conexión 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 GNDATE-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 25ms250Hz 400Hz 250Hz 400Hz ATE-UNIOVI ...... 250Hz 400Hz Silencio 250Hz... Módulo CCP en modo PWM ©ATE-Universidad de Oviedo 24 12