Enviar búsqueda
Cargar
Modulos ccp v2(ring telefono)
•
0 recomendaciones
•
454 vistas
P
panchito24mayo
Seguir
modulos ccp con pic
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 18
Descargar ahora
Descargar para leer sin conexión
Recomendados
Módulos ccp pic 16f887
Módulos ccp pic 16f887
whendygarcia
Ccpx
Ccpx
Jair BG
Ejemplos De Ccp
Ejemplos De Ccp
Luis Zurita
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
Eduardo Henriquez
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
Fernando Aparicio Urbano Molano
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
Luis Zurita
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
Fernando Aparicio Urbano Molano
Pwm
Pwm
Eliud Hernandez
Recomendados
Módulos ccp pic 16f887
Módulos ccp pic 16f887
whendygarcia
Ccpx
Ccpx
Jair BG
Ejemplos De Ccp
Ejemplos De Ccp
Luis Zurita
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
Eduardo Henriquez
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
Fernando Aparicio Urbano Molano
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
Luis Zurita
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
Fernando Aparicio Urbano Molano
Pwm
Pwm
Eliud Hernandez
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Fernando Aparicio Urbano Molano
Clase Timer 1
Clase Timer 1
Fernando Aparicio Urbano Molano
Timer 0 - Pic16F877A
Timer 0 - Pic16F877A
Fernando Aparicio Urbano Molano
Clase USART
Clase USART
Fernando Aparicio Urbano Molano
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
SANTIAGO PABLO ALBERTO
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
Micro2 tema 3
Micro2 tema 3
Luis Zurita
Ccp2009170309
Ccp2009170309
Luis Zurita
Curso Micro Tema 4
Curso Micro Tema 4
Luis Zurita
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores pucesi
David Narváez
Curso Micro Tema 3 2
Curso Micro Tema 3 2
Luis Zurita
Timers
Timers
efcastillo
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
Fernando Aparicio Urbano Molano
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
marco calderon layme
Pwm
Pwm
negocio familiar
4. interrupciones y temporizadores
4. interrupciones y temporizadores
David Narváez
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
Alejandro Garcia
Conversor ADC
Conversor ADC
Fernando Aparicio Urbano Molano
UNIDAD IV
UNIDAD IV
Luis Zurita
Timer0 PIC16F84A
Timer0 PIC16F84A
Williams Ernesto Limonchi Sandoval
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
Hamiltonn Casallas
Compare capture pwm mode 5
Compare capture pwm mode 5
georgemanson69
Más contenido relacionado
La actualidad más candente
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Fernando Aparicio Urbano Molano
Clase Timer 1
Clase Timer 1
Fernando Aparicio Urbano Molano
Timer 0 - Pic16F877A
Timer 0 - Pic16F877A
Fernando Aparicio Urbano Molano
Clase USART
Clase USART
Fernando Aparicio Urbano Molano
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
SANTIAGO PABLO ALBERTO
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
Micro2 tema 3
Micro2 tema 3
Luis Zurita
Ccp2009170309
Ccp2009170309
Luis Zurita
Curso Micro Tema 4
Curso Micro Tema 4
Luis Zurita
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores pucesi
David Narváez
Curso Micro Tema 3 2
Curso Micro Tema 3 2
Luis Zurita
Timers
Timers
efcastillo
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
Fernando Aparicio Urbano Molano
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
marco calderon layme
Pwm
Pwm
negocio familiar
4. interrupciones y temporizadores
4. interrupciones y temporizadores
David Narváez
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
Alejandro Garcia
Conversor ADC
Conversor ADC
Fernando Aparicio Urbano Molano
UNIDAD IV
UNIDAD IV
Luis Zurita
Timer0 PIC16F84A
Timer0 PIC16F84A
Williams Ernesto Limonchi Sandoval
La actualidad más candente
(20)
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Clase Timer 1
Clase Timer 1
Timer 0 - Pic16F877A
Timer 0 - Pic16F877A
Clase USART
Clase USART
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Micro2 tema 3
Micro2 tema 3
Ccp2009170309
Ccp2009170309
Curso Micro Tema 4
Curso Micro Tema 4
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores pucesi
Curso Micro Tema 3 2
Curso Micro Tema 3 2
Timers
Timers
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
Pwm
Pwm
4. interrupciones y temporizadores
4. interrupciones y temporizadores
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
Conversor ADC
Conversor ADC
UNIDAD IV
UNIDAD IV
Timer0 PIC16F84A
Timer0 PIC16F84A
Similar a Modulos ccp v2(ring telefono)
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
Hamiltonn Casallas
Compare capture pwm mode 5
Compare capture pwm mode 5
georgemanson69
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
Hamiltonn Casallas
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
Hamiltonn Casallas
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
Daniel Remondegui
Sistemas operativos
Sistemas operativos
jbersosa
Niple diapopsitiva
Niple diapopsitiva
silviavega101
Niple diapopsitiva
Niple diapopsitiva
silviavega101
Niple diapopsitiva
Niple diapopsitiva
silviavega101
Usart PIC config LANDA
Usart PIC config LANDA
dave
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Daniel Pardo
Ejercicio 07 Timers
Ejercicio 07 Timers
Jaime E. Velarde
TEMA 5 PROGRAMACION DEL MODULO CCP DEL MICROCONTROLADOR.pdf
TEMA 5 PROGRAMACION DEL MODULO CCP DEL MICROCONTROLADOR.pdf
CocosAlbertoPalmeraz
In terrupciones pic
In terrupciones pic
Arquitecto bogota
Compilador CCS.ppt
Compilador CCS.ppt
andresraulBrunoSarav
Adc y usart pic16 f887
Adc y usart pic16 f887
Derlis Hernandez Lara
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
Hamiltonn Casallas
Introducpic2
Introducpic2
conalep
Introducpic
Introducpic
conalep
final PWM
final PWM
Lautaro Narvaez
Similar a Modulos ccp v2(ring telefono)
(20)
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
Compare capture pwm mode 5
Compare capture pwm mode 5
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
Sistemas operativos
Sistemas operativos
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Niple diapopsitiva
Usart PIC config LANDA
Usart PIC config LANDA
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Ejercicio 07 Timers
Ejercicio 07 Timers
TEMA 5 PROGRAMACION DEL MODULO CCP DEL MICROCONTROLADOR.pdf
TEMA 5 PROGRAMACION DEL MODULO CCP DEL MICROCONTROLADOR.pdf
In terrupciones pic
In terrupciones pic
Compilador CCS.ppt
Compilador CCS.ppt
Adc y usart pic16 f887
Adc y usart pic16 f887
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
Introducpic2
Introducpic2
Introducpic
Introducpic
final PWM
final PWM
Último
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
JOSEMANUELHERNANDEZH11
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
ssuserf18419
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
pabonheidy28
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
La era de la educación digital y sus desafios
La era de la educación digital y sus desafios
Fundación YOD YOD
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
BRAYANJOSEPHPEREZGOM
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
GiovanniJavierHidalg
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
IsabellaMontaomurill
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
WilbisVega
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
AlanCedillo9
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Keyla Dolores Méndez
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
FacuMeza2
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
GDGSucre
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
Iván López Martín
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
SergioMendoza354770
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
Fundación YOD YOD
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
soporteupcology
Último
(19)
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
La era de la educación digital y sus desafios
La era de la educación digital y sus desafios
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
Modulos ccp v2(ring telefono)
1.
Módulos CCP ©ATE-Universidad de
Oviedo 1 Módulos CCP ©ATE-Universidad de Oviedo 2 MÓDULO CCP (Captura/Comparación/PWM) • Un microcontrolador de la gama media de los PIC16 puede tener hasta 2 módulos CCP. • Cada módulo CCP tiene un registro de 16 bits que se puede utilizar de 3 formas distintas: 1. Como registro de 16 bits para captura de tiempo al producirse un evento. 2. Como registro de 16 bits para compararlo con el valor de cuenta del temporizador TMR1, pudiendo provocar un evento cuando se alcanza el valor contenido en este registro. 3. Como registro de 10 bits del ciclo de trabajo de una señal PWM generada por el microcontrolador. • Los 2 módulos CCP disponibles se comportan casi idénticamente, salvo el caso del funcionamiento por disparo de evento especial (special event trigger) que tiene una pequeña diferencia si se trata del módulo CCP1 ó del módulo CCP2. • Tras un reset, el módulo CCP está apagado (al forzar los bits de configuración al valor 0). • En las siguientes transparencias se describirá el funcionamiento de CCP1. El funcionamiento de CCP2 es idéntico (salvo la excepción indicada anteriormente) pero cada uno tiene sus propios registros de carga y configuración (véase tabla adjunta).
2.
Módulos CCP ©ATE-Universidad de
Oviedo 3 La siguiente tabla muestra qué temporizadores utiliza el módulo CCP en cada uno de sus modos de funcionamiento: MÓDULO CCP (Captura/Comparación/PWM) La siguiente tabla muestra las posibles interacciones entre los módulos CCP, donde CCPx es uno de los módulos y CCPy es el otro: Módulos CCP ©ATE-Universidad de Oviedo 4 CCPxCON -- CCP1CON (17h) Y CCP2CON (1Dh): Registros de control de cada módulo CCP bit 7-6 No implementados: Leídos como ‘0’. bit 5-4 DCxB1:DCxB0: Bits 0 y 1 del valor que fija el ciclo de trabajo en el modo PWM. Modo Captura: No se usa Modo Comparación: No se usa Modo PWM: Estos bits son los 2 LSBs para el ciclo de trabajo. Los 8 bits más significativos están en CCPRxL. bit 3-0 CCPxM3:CCPxM0: Bits de selección del modo de funcionamiento del módulo CCPx: 0000= Captura/Comparación/PWM off (resetea el módulo CCPx) 0100= Modo Captura, cada flanco de bajada 0101= Modo Captura, cada flanco de subida 0110= Modo Captura, cada 4 flancos de subida 0111= Modo Captura, cada 16 flancos de subida 1000= Modo comparación, el pin CCPx se pone a “1” cuando TMR1 alcanza el valor del registro de 16 bits (CCPRxH:CCPRxL). El bit CCPIF se pone a 1. 1001= Modo comparación, el pin CCPx se pone a “0” cuando TMR1 alcanza el valor del registro de 16 bits (CCPRxH:CCPRxL). El bit CCPIF se pone a 1. 1010= Modo comparación, generación de interrupción software cuando se produce la igualdad. CCPIF se pone a 1. El pin CCPx no se ve afectado. 1011= Modo comparación, generación de disparo de evento especial (special event trigger). CCPIF se pone a 1. El pin CCPx no se ve afectado. CCP1 resetea el TMR1; CCP2 resetea el TMR1 y lanza una conversión A/D nueva (si el módulo del conversor A/D está habilitado. 11xx= modo PWM
3.
Módulos CCP ©ATE-Universidad de
Oviedo 5 MODO CAPTURA • En modo Captura, los registros CCPRxH:CCPRxL toman el valor de 16 bits que tenga el TMR1 cuando se produce un determinado evento en el pin CCPx (RC2/CCP1 para el módulo CCP1 y RC1/T1OSI/CCP2 para el módulo CCP2). Los posibles eventos son: • Cada flanco de bajada. • Cada flanco de subida. • Cada 4 flancos de subida. • Cada 16 flancos de subida. El evento se configura con los bits CCPxM3:CCPxM0 de los registros CCP1CON y CCP2CON respectivamente. • El bit CCP1IF (PIR1<2>) ó CCP2IF (PIR2<0>) se ponen a “1” cuando se produce el evento configurado, pudiendo provocar un salto a la rutina de interrupción. El correspondiente flag debe limpiarse por software. • Si se produce otra captura antes de que se lea el valor del registro CCPRx, el último valor sobreescribe el valor anterior (que se pierde). • En modo captura, el pin RC2/CCP1 y/o el pin RC1/T1OSI/CCP2 deben configurarse como entrada por puesta a uno de los bits TRISC<2> y TRISC<1> respectivamente. Si el bit RC2/TRISC1 y/o RC1/CCP2 se configura como salida, una escritura a este pin del puerto podría originar una captura. ¿ Cuenta ? Módulos CCP ©ATE-Universidad de Oviedo 6 Prescaler ÷ 1 , 4 , 16 Detección de flanco y CCPRxH CCPRxL TMR1H TMR1L CCPxCON<3:0> Qs CCPxIF ← 1 RCy/CCPx Captura T1SYNC Reloj internoT1CKPS1:T1CKPS0 TMR1ON On/off TMR1CS Prescaler 1 , 2 , 4 , 8 Entrada de reloj sincronizada 2 Detección de sincronización 1 0 fOSC/4 Reloj interno 0 1 T1OSCEN Habilita oscilador T1OSC RC0 T1OSO T1CKl RC1 T1OSI CCP2 Módulo CCP Módulo TMR1 MODO CAPTURA: Hay que configurar módulo CCP y módulo TMR1
4.
Módulos CCP ©ATE-Universidad de
Oviedo 7 MODO CAPTURA • FUNCIONAMIENTO DEL TMR1 PARA EL MODO CAPTURA: El TMR1 debe estar corriendo en modo temporizador ó en modo contador síncrono para que el módulo CCP produzca la comparación. No puede funcionar en modo contador asíncrono. • CAMBIO ENTRE MODOS CAPTURA: Si se cambia de un modo captura (p.e. de 4 flancos) a otro (p.e. de cada flanco), el cambio puede generar una falsa interrupción. El usuario debe por software limpiar el bit CCPxIE para deshabilitar las interrupciones, limpiar el flag CCPxIF y luego cambiar el modo de captura. El cambio entre dos modos captura debe realizarse según el siguiente subprograma: CLRF CCP1CON ; Apaga el módulo CCP MOVLW NEW_CAPT_PS ; Preparo en W el nuevo prescaler y preparo CCP ON MOVWF CCP1CON ; Cargo CCP1CON el valor • CONTADOR DE FLANCOS DEL CCP (PRESCALER DEL CCP): Si en medio de una cuenta de 4 ó 16 flancos de subida se apaga el módulo CCP o se pasa a un modo que no sea el modo Captura (mediante los bits CCPxM3:CCPxM0), el prescaler del CCP se resetea. • FUNCIONAMIENTO EN MODO DORMIDO: En modo dormido, el TMR1 no se incrementa (esta en modo síncrono ó temporizador). Pero, el prescaler del CCP sí puede continuar incrementando el contador de eventos y cuando llega al valor configurado pone el bit CCPxF a “1” provocando que el micro se “despierte”. No obstante, el contenido del TMR1 se transfiere a los CCPR pero el TMR1 no se ha visto incrementado y por tanto, el valor cargado no tiene un significado dado. Módulos CCP ©ATE-Universidad de Oviedo 8 EJEMPLO DE INICIALIZACIÓN EN MODO CAPTURA CLRF CCP1CON ; Módulo CCP1 OFF CLRF TMR1H ; limpio TMR1H CLRF TMR1L ; limpio TMR1L CLRF INTCON ; Deshabilito interrupciones BSF STATUS, RP0 ; Banco 1 BSF TRISC, CCP1 ; Pin RC2/CCP1 entrada CLRF PIE1 ; Deshabilito interrupciones de periféricos BCF STATUS, RP0 ; Banco 0 CLRF PIR1 ; limpio flags de interrupciones de periféricos MOVLW 0x06 ; Modo captura, cada 4º flanco de subida MOVWF CCP1CON ; BSF T1CON, TMR1ON ; Timer 1 ON ; En este ejemplo no usamos la interrupciones del CCP1 ; se muestrea el flag de CCP para detectar cuándo se produce una captura ; Si se quisiera utilizar interrupciones habría que habilitarlas en el proceso de ; inicialización ; Evento que provoca una captura Evento_captura BTFSS PIR1, CCP1IF GOTO Evento_captura ; ; Si llegamos aquí es que se han producido 4 flancos de subida en el pin CCP1 ; BCF PIR1, CCP1IF ; Se debe limpiar el flag para una nueva comparación
5.
Módulos CCP ©ATE-Universidad de
Oviedo 9 REGISTROS ASOCIADOS CON EL MÓDULO CCP EN MODO CAPTURA Módulos CCP ©ATE-Universidad de Oviedo 10 MODO COMPARACION • En modo comparación, el valor de 16 bits almacenado en los registros CCPRx es comparado continuamente con el valor de los registros del TMR1. Cuando se produce una igualdad, el pin CCPx puede experimentar o no un evento, que puede ser: • Puesta a “1”. • Puesta a “0”. • Sin cambio. • El evento viene fijado por el valor de los bits CCPxM3:CCPxM0 (CCPxCON<3:0>) (véase 4ª transparencia de esta presentación). • Al mismo tiempo que se produce un evento en el pin se puede producir una interrupción ya que el flag CCPxIF (de PIR1 ó PIR2) se pone a “1”. • TMR1 debe estar funcionando en modo temporizador ó modo contador síncrono para que el módulo CCP funcione correctamente en el modo comparación. En modo contador asíncrono, el modo comparación no funciona.
6.
Módulos CCP ©ATE-Universidad de
Oviedo 11 Q S R Lógica de salida CCPRxH CCPRxL TMR1H TMR1L CCPxCON<3:0> TRISC<2> CCPxIF ← 1 RCy / CCPx Coincidencia Comparador Lanza acción especial T1SYNC Reloj internoT1CKPS1:T1CKPS0TMR1CS Prescaler 1 , 2 , 4 , 8 2 Detección de sincronización 1 0 fOSC/4 Reloj interno T1OSCEN Habilita oscilador T1OSC RC0 T1OSO T1CKl RC1 T1OSI CCP2 1 0 TMR1ON On/off Módulo CCP Módulo TMR1 Configuraciones para modo Comparación Módulos CCP ©ATE-Universidad de Oviedo 12 MODO COMPARACION • CONFIGURACION DEL PIN CCPx PARA MODO COMPARACION: El pin CCPx que quiera verse modificado debe configurarse como salida, limpiando el bit del registro TRISC correspondiente. En el momento que se selecciona el modo de comparación deseado, el pin CCP se pone al nivel contrario al que tiene que cambiar cuando se produzca la igualdad entre los registros CCPRx y TMR1. Si la igualdad no afecta al pin CCPx, este tendrá el valor que se le haya dado previamente en el registro PORTC. • MODO INTERRUPCION SOFTWARE: En este modo, el pin CCPx no se ve afectado, solo se activará al flag CCPxIF a 1 y se generará la interrupción si está habilitada. • MODO DISPARO DE EVENTO ESPECIAL: Cuando se produce la igualdad, el registro TMR1 se resetea convirtiéndose por tanto, en un registro que marca la periodicidad del evento. En el caso del módulo CCP2, además de resetear el TMR1 se lanza una nueva conversión A/D (si el módulo de conversión A/D está activo) permitiendo programar la conversión A/D a periodos de tiempo fijos. • FUNCIONAMIENTO EN MODO DORMIDO: Al no funcionar el TMR1 (modo síncrono) en modo dormido, el módulo CCP en modo comparación no funciona. El pin CCPx tendrá el valor que tenía antes de entrar en modo SLEEP y “despertará” con ese valor. • TRAS UN RESET: El módulo CCP está apagado.
7.
Módulos CCP ©ATE-Universidad de
Oviedo 13 EJEMPLO DE INICIALIZACIÓN EN MODO COMPARACION CLRF CCP1CON ; Modulo CCP1 OFF CLRF TMR1H ; limpio TMR1H CLRF TMR1L ; limpio TMR1L ;aquí podriamos cargar el valor de la comparación en CCPR1H y CCPR1L CLRF INTCON ; Deshabilito interrupciones BSF STATUS, RP0 ; Banco 1 BCF TRISC, CCP1 ; Pin RC2/CCP1 SALIDA CLRF PIE1 ; Deshabilito interrupciones de perifericos BCF STATUS, RP0 ; Banco 0 CLRF PIR1 ; limpio flags de interrupciones de periféricos MOVLW 0x08 ; Modo comparación, a 1 el pin CCP1 cuando se iguale MOVWF CCP1CON ; BSF T1CON, TMR1ON ; Timer 1 ON ; En este ejemplo no usamos la interrupciones del CCP1 ; se muestrea el flag de CCP para detectar cuando se produce la igualdad de la comparación ; Si se quisiera utilizar interrupciones habría que habilitarlas en el proceso de inicialización Evento_comparacion BTFSS PIR1, CCP1IF GOTO Evento_comparación ; ; Si llegamos aquí es que se ha producido una igualdad entre TMR1 y CCP1RH:CCP1RL ; BCF PIR1, CCP1IF ; Se debe limpiar el flag para una nueva comparación Módulos CCP ©ATE-Universidad de Oviedo 14 REGISTROS ASOCIADOS CON EL MÓDULO CCP EN MODO COMPARACIÓN
8.
Módulos CCP ©ATE-Universidad de
Oviedo 15 MODO PWM • En modo PWM (MODULACIÓN DE ANCHO DE PULSO - Pulse Width Modulation), el objetivo es obtener a través de alguna de las patillas CCPx una forma de onda como la mostrada en la figura donde tanto el periodo como el ciclo de trabajo (Duty cycle) puede variar con el objetivo, por ejemplo, de regular la velocidad de un motor, la luminosidad de una bombilla, etc. • El periodo de la señal viene fijado por la configuración de TMR2 y por el contenido del registro PR2 (0x92). Este registro de 8 bits contiene los 8 bits más 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. TMR2 = 0 TMR2 = PR2 TMR2 = D T D Módulos CCP ©ATE-Universidad de Oviedo 16 MODO PWM • PERIODO DE LA ONDA PWM: Se calcula utilizando la siguiente fórmula: Cuando TMR2 es igual a PR2, en el siguiente incremento de ciclo se producen tres acciones: • El TMR2 se resetea. • El pin CCPx se pone a 1. Salvo si el ciclo de trabajp esta fijado a 0 donde el pin CCPx no se pondrá a 1 nunca (el biestable RS es de borrado prioritario). • El nuevo ciclo de trabajo es cargado desde el registro CCPRxL al registro CCPRxH que es el que realmente se compara con el TMR2 para fijar el ciclo ce trabajo. T = (PR2 + 1) · 4 · TOSC · PRESCALERTMR2
9.
Módulos CCP ©ATE-Universidad de
Oviedo 17 MODO PWM CICLO DE TRABAJO DE LA ONDA PWM: • El ciclo de trabajo viene definido por el valor que se carga en el registro CCPR1L (8bits más significativos) junto con los bits CCP1CON<5:4> (2 bits menos significativos). Por tanto se consigue una resolución de 10 bits (DCxB9:DCxB0). La siguiente ecuación se utiliza para calcular el ciclo de trabajo (duty cycle) de la onda PWM: • Los registros CCPR1L y los bits CCP1CON<5:4> pueden escribirse en cualquier instante de tiempo, pero no se cargan en CCPR1H y por tanto, no tiene efecto, hasta que finalice el periodo de la onda PWM actual. • Si el ciclo de trabajo de la onda PWM es mayor que el periodo, la señal que sale por la patilla CCPx está siempre a 1. T ON = (CCPRxL:CCPxCON<5:4>) · TOSC · PRESCALERTMR2 Módulos CCP ©ATE-Universidad de Oviedo 18 TRISC<y> RCy/CCPx R Q S CCPRxL CCPxCON<5:4> TMR2 ← 0 CCPx ← 1 (si D≠0) CCPRxH ← CCPRxL (*) TMR2 se concatena con un reloj interno de 2 bits con frecuencia fosc para poder crear una base de tiempos de 10 bits Registros de Duty Cycle Comparador TMR2 (*) Comparador PR2 CCPRxH (esclavo) T2CKPS1:T2CKPS0 Prescaler 1 , 4 , 16 2 fOSC/4 Reloj interno Configuraciones para MODO PWM Módulo CCP Módulo TMR2 El postscaler de TMR2 no se utiliza para determinar la frecuencia PWM pero sí se puede emplear para contar periodos completos de esa señal
10.
Módulos CCP ©ATE-Universidad de
Oviedo 19 MODO PWM • La máxima resolución (máximo nº de bits que resultan útiles para definir el ciclo de trabajo) que se puede obtener para una onda PWM generada en este módulo viene dada por la siguiente fórmula: • La siguiente tabla muestra frecuencias y resoluciones que se pueden obtener con un oscilador de 20 MHz • La máxima resolución (en tiempo) viene fijada por el prescaler escogido para el TMR2: ( ) bits 2log log Res 2 ⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ ⋅ = TMRPWM osc PSf f Nmax * Tosc * Prescaler TMR2 = 1/fPWM Módulos CCP ©ATE-Universidad de Oviedo 20 MODO PWM Pasos para configurar el módulo CCP para funcionar en modo PWM: 1. Definir el periodo de la onda PWM escribiendo en el registro PR2. 2. Definir el ciclo de trabajo (tiempo en estado alto) escribiendo en los registros CCPRxL y en los bits CCPxCON<5:4>. 3. Definir el pin CCPx como salida, poniendo a “0” el bit TRISC<2> (para CCP1) y/o el bit TRISC<1> (para CCP2). 4. Seleccionar el valor del prescaler del TMR2 y habilitar el TMR2 por puesta a 1 del nit TMR2ON (T2CON<2>). 5. Configurar el módulo CCP1 para funcionar en modo PWM En modo SLEEP, el TMR2 no se incrementa y por tanto el estado del módulo CCP no cambia. Si el pin CCPx está a un determinado nivel (0 ó 1) cuando se ejecuta la instrucción SLEEP, el pin continuará en ese valor y se despertará con ese valor. No se puede generar una onda periódica en esa situación
11.
Módulos CCP ©ATE-Universidad de
Oviedo 21 Ejemplo: Cálculo de PR2 para obtener una onda PWM cuya frecuencia sea de 78,125 kHz. La Fosc es de 20 MHz y el prescaler del TMR2 = 1. 1/78,125kHz = [(PR2)+1] * 4 * 1/20MHz * 1 12,8us = [(PR2)+1] * 4 * 50ns * 1 PR2 = 63 Encontrar la máxima resolución del ciclo de trabajo que puede usarse con una frecuencia PWM de 78,125 KHz y un oscilador de 20 MHz TPWM = 2N * TOSC 1/78,125kHz = 2N * 1/20MHz * 1 12,8 us = 2N * 50 ns * 1 256 = 2N N= 8 MODO PWM Por tanto, un ciclo de trabajo con una resolución de 8 bits es la que se obtiene si se quiere obtener una onda PWM de 78,125 kHz de frecuencia con un oscilador de 20 MHz. Es decir los valores a cargar para el ciclo de trabajo estan en el margen 0 ≤ DCxB9:DCxB0 ≤ 255. Cualquier valor mayor de 255 provocará que el ciclo de trabajo sea del 100% del periodo de la onda PWM. La resolución será mayor si la frecuencia de la onda PWM es menor. Si la frecuencia crece, la resolución decrece. Módulos CCP ©ATE-Universidad de Oviedo 22 EJEMPLO DE INICIALIZACIÓN EN MODO PWM ; Suponemos T2CON a 00h, por tanto, prescaler a 1 y apagado. Suponemos oscilador de 20 MHz CLRF CCP1CON ; Módulo CCP off CLRF TMR2 ; limpio Timer2 MOVLW 0x7F ; PR2 = 7Fh = 127 MOVWF PR2 ; PeriodoPWM= (127 + 1) * 4 * 50ns * 1 = 25,6 us MOVLW 0x1F ; 8 bits altos del registro del duty a b’00011111’ MOVWF CCPR1L ; CLRF INTCON ; Deshabilito interrupciones BSF STATUS, RP0 ; Banco 1 BCF TRISC, PWM1 ; Pin RC2/CCP1 salida PWM CLRF PIE1 ; Deshabilito interrupciones de periféricos BCF STATUS, RP0 ; Banco 0 CLRF PIR1 ; Limpio flags de periféricos MOVLW 0x2C ; modo PWM, 2 LSBs del duty a b’10’ MOVWF CCP1CON ; registro del duty b’0001111110’ = 126d ;por tanto duty = 126 * 50ns * 1 = 6,3 us 6,3us/25,6us = 24,6% de duty BSF T2CON, TMR2ON ; Timer2 ON ; ; La interrupción de CCP1 no está activa en este modo PWM ; el final del periodo se detecta por muestreo del TMR2IF ; Periodo_PWM BTFSS PIR1, TMR2IF GOTO Periodo_PWM ;OJO, solo se detecta el final del periodo si el postscaler del TMR2 está a 1:1 BCF PIR1, TMR2IF En el modo PWM los flags CCP1IF y CCP2IF no se utilizan
12.
Módulos CCP ©ATE-Universidad de
Oviedo 23 REGISTROS ASOCIADOS CON EL MÓDULO CCP EN MODO PWM Módulos CCP ©ATE-Universidad de Oviedo 24 Características eléctricas del módulo CCP Entrada en modo captura Salida en modo comparación o PWM
13.
Módulos CCP ©ATE-Universidad de
Oviedo 25 Ejemplo de uso del módulo CCP – modo PWM para la generacion de un “ring” de llamada telefónica Se trata de realizar el diseño del programa encargado de generar el “ring de llamada de un teléfono”. Para eso empleamos el módulo CCP1 de un PIC16F877 y la placa de prácticas que dispone de un zumbador cuyo esquema eléctrico aparece a continuación (el jumper J9 debe estar puesto). Se emplea un oscilador de 4MHz para el microcontrolador. Módulos CCP ©ATE-Universidad de Oviedo 26 GENERACION DE UN RING TELEFÓNICO 320Hz....Silencio480Hz320Hz......480Hz320Hz480Hz320Hz 25ms25ms25ms25ms25ms25ms25ms25ms 1s (sonido) 2s1s (sonido) El timbre de llamada consistirá 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í sucesivamente.
14.
Módulos CCP ©ATE-Universidad de
Oviedo 27 Planteamiento: Se utiliza el módulo CCP1 en modo PWM para generar dos ondas cuadradas con frecuencias de emisión 320Hz y 480Hz. Para reducir 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, mediante interrupción. Un segundo se contabiliza por 40 interrupciones de TMR0 y 2 segundos por 80 interrupciones de TMR0. Cuando entra una interrupción, se evalúa el estado actual y las posibles modificaciones en el mismo de acuerdo con el siguiente diagrama de estados: GENERACION DE UN RING TELEFÓNICO Estado 0 Silencio CCP1 inactivo Estado 1 PWM generando 320Hz 80 interrupciones de TMR0 (2s) en Estado 0 Estado 2 PWM generando 480Hz Interrupción de TMR0 (25µs) Interrupción de TMR0 (25µs) 40 interrupciones de TMR0 (1s) en Estados 1 ó 2 Módulos CCP ©ATE-Universidad de Oviedo 28 Cálculos: Modo PWM Frecuencia: 1/frecuencia = (4/fosc) * Prescaler TMR2 * (PR2+1) Con fosc=4MHz Prescaler TMR2 = 16 (elegido) Resulta: para 320Hz PR2= 194 (0xC2) para 480Hz PR2=129 (0x81) Ancho de pulso (tiempo en estado alto): 1/(2*frecuencia) = (1/fosc) * Prescaler TMR2 * (CCPR1L+2bits) Tomamos los 2 bits de menor peso a cero Resultando: para 320Hz CCPR1L = 97 (0x61) para 480Hz CCPR1L = 65 (0x41) TMR0: Para temporizar 25ms = (4/fosc) * Prescaler TMR0 * (256-Precarga) Resulta: Precarga = 158 (0x9E) GENERACION DE UN RING TELEFÓNICO
15.
Módulos CCP ©ATE-Universidad de
Oviedo 29 Algoritmo utilizado –PROGRAMA PRINCIPAL: •INICIALIZACIÓN •Puertos: PORTC con RC2 como salida •TMR0 como temporizador y prescaler de 256 •Carga de PR2 para generar 320Hz (0xC2) •CCP1 en modo PWM •TMR2 con prescaler de 16 •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) •Borramos flag T0IF y activamos interrupciones de TMR0 •Ponemos en marcha TMR2 •BUCLE PRINCIPAL INFINITO (Del que sólo se saldrá por interrupción debida a TMR0) GENERACION DE UN RING TELEFÓNICO Módulos CCP ©ATE-Universidad de Oviedo 30 INICIO bsf STATUS,RP0 ;Paso al banco 1 bcf TRISC,2 ;Defino pin RC2/CCP1 como salida ; Para temporizar 25ms con TMR0: 25ms = (4/4MHz)* 256 * (256-158) ; precarga de TMR0: 158 (0x9E) movlw b'00000111' ;TMR0 modo temporizador movwf OPTION_REG ;y prescaler de 256 ; 1/320Hz = (PR2+1)* Prescaler_TMR2 (=16) * 4/4MHz ---> PR2= 194 (0xC2) movlw 0xC2 ;Cargo PR2 para 320Hz movwf PR2 ;aprovecho que estamos en banco 1 bcf STATUS,RP0 ;Vuelvo al banco 0 movlw b'00001111' ;Definimos CCP1 movwf CCP1CON ;en modo PWM movlw b'00000011' ;Defino TMR2 con prescaler 16 movwf T2CON ;y parado al principio movlw 0x01 ;Inicializo señal PWM de f=320Hz movwf ESTADO ;en variable ESTADO clrf CONTADOR ;Pongo a 0 contador de interrupciones ; Registro de duty: 1/(2*320Hz)=(CCPR1L_2bits) * PrescalerTMR2 * 1/4MHz ; CCPR1L=97 (0x61) movlw 0x61 ;Cargo registro de duty movwf CCPR1L ;para ton = 1/(2*320Hz) movlw 0x9E ;Precargo TMR0 movwf TMR0 ;para que desborde tras 25ms movlw b'10100000' ;Pongo a 0 flag de TMR0 y activo movwf INTCON ;sus interrupciones bsf T2CON,TMR2ON ;Pongo en marcha TMR2 BUCLE goto BUCLE ;Bucle infinito en espera de interrupción
16.
Módulos CCP ©ATE-Universidad de
Oviedo 31 Algoritmo utilizado para Tratamiento de INTERRUPCION: Se comprueba que T0IF=1 si no está a 1, salimos de inmediato Salvamos el contexto del programa ppal. (W y STATUS) Precargamos TMR0 puesto que desbordó Incrementamos CONTADOR de interrupciones Verificamos ESTADO actual para evaluar posibles cambios Si ESTADO==0 (silencio) y CONTADOR == 80 (2s) ponemos CONTADOR a cero cambiamos ESTADO a 1 (onda de 320Hz) activamos módulo CCP en PWM cargamos PR2 y CCPR1L adecuadamente para 320Hz Si ESTADO ==1 (onda 320Hz) cambiamos ESTADO a 2 (onda de 480Hz) cargamos PR2 y CCPR1L adecuadamente para esa frecuencia Si ESTADO ==2 (onda 480Hz) cambiamos ESTADO a 1 (onda de 320Hz) cargamos PR2 y CCPR1L para generar 320Hz Si ESTADO era 1 ó 2 Si CONTADOR ==40 (ha pasado 1s emitiendo) ponemos CONTADOR a cero cambiamos ESTADO a 0 (silencio) desactivamos CCP2 Ponemos a cero el flag de TMR0 (T0IF) Recuperamos contexto del programa ppal. (W y STATUS) Retornamos del programa de tratamiento de interrupción Módulos CCP ©ATE-Universidad de Oviedo 32 PTI btfss INTCON,T0IF ;Si entramos aquí por otro motivo retfie ;distinto a T0IF=1 salimos de inmediato movwf W_temp ;Salvamos el registro W swapf STATUS,W ;y el registro STATUS por movwf ST_temp ;si acaso se manipulan para el principal movlw 0x9E ;Precargamos de nuevo TMR0 movwf TMR0 ;para otros 25ms incf CONTADOR,F ;Incrementamos el Contador de 25ms ;Ahora miramos en qué estado estábamos movf ESTADO,F ;Comparamos ESTADO con 0 btfsc STATUS,Z goto SILENCIO ;Si era el 0 es de Silencio movf ESTADO,W ;Comparamos ESTADO con 0x01 xorlw 0x01 btfsc STATUS,Z goto A_320Hz ;Si era el 1 estaba a 320HZ movf ESTADO,W ;Comparamos estado con 2 xorlw 0x02 btfsc STATUS,Z goto A_480Hz ;Si era el 2 estaba a 480Hz goto SALIR_PTI ;Si no era ninguno de los conocidos salimos RUTINADEINTERRUPCION
17.
Módulos CCP ©ATE-Universidad de
Oviedo 33 SILENCIO movf CONTADOR,W ;Si el ESTADO era de Silencio, salimos xorlw d'80' ;al cabo de 2s (80 interrupciones) btfss STATUS,Z goto SALIR_PTI ;si no llegamos a 80 salimos sin cambiar clrf CONTADOR ;si ya pasaron 2s borramos contador movlw 0x01 ;y cargamos 0x01 para codificar el movwf ESTADO ;paso a ESTADO de 320Hz movlw b'00001111' ;Activamos el módulo CCP en modo PWM movwf CCP1CON ;de nuevo si había que cambiar bsf STATUS,RP0 movlw 0xC2 ;Cargo PR2 para 320Hz movwf PR2 ;PR2 está en banco 1 bcf STATUS,RP0 movlw 0x61 ;Cargo también registro de duty movwf CCPR1L ;para ton = 1/(2*320Hz) goto SALIR_PTI ;Vamos a salir de la interrupción RUTINADEINTERRUPCION Módulos CCP ©ATE-Universidad de Oviedo 34 A_320Hz movlw 0x02 ;El Estado era de generar onda movwf ESTADO ;de 320Hz, tenemos que cambiar a 480Hz ; 1/480Hz = (PR2+1)* Prescaler_TMR2 (=16) * 4/4MHz ---> PR2= 129 (0x81) bsf STATUS,RP0 movlw 0x81 ;Precarga de PR2 para 480Hz movwf PR2 bcf STATUS,RP0 ; Registro de duty: 1/(2*480Hz)=(CCPR1L_2bits) * PrescalerTMR2 * 1/4MHz ; CCPR1L=65 (0x41) movlw 0x41 ;Cargamos el Ton también movwf CCPR1L ;para la mitad del periodo goto FIN_TONOS A_480Hz movlw 0x01 ;El Estado era generando onda de 480Hz movwf ESTADO ;hay que cambiar de Estado a 320Hz bsf STATUS,RP0 movlw 0xC2 ;Modificamos PR2 para 320Hz movwf PR2 bcf STATUS,RP0 movlw 0x61 ;Cargamos también Ton movwf CCPR1L RUTINADEINTERRUPCION
18.
Módulos CCP ©ATE-Universidad de
Oviedo 35 FIN_TONOS ;Parte final común de emisión movf CONTADOR,W ;Comparamos contador con 40 xorlw d'40' ;para ver si ha pasado ya 1 segundo btfss STATUS,Z goto SALIR_PTI ;Si no hemos llegado, salimos clrf CONTADOR ;si ya hemos llegado ponemos a 0 CONTADOR clrf ESTADO ;pasamos a estado de Silencio bcf PORTC,1 ;y anulamos salida clrf CCP1CON ;Desactivamos el módulo CCP2 en silencio SALIR_PTI bcf INTCON,T0IF ;ponemos a cero el flag para la sig. interrupción swapf ST_temp,W ;Recuperamos el registro STATUS con un SWAPF movwf STATUS swapf W_temp,F ;Recuperamos también el W con dos SWAPF swapf W_temp,W retfie ;Retornamos de programa de tratamiento de ;interrupción RUTINADEINTERRUPCION
Descargar ahora