13.11.2012 Views

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

El preescalador del CCP<br />

El valor del preescalador se configura mediante los bits CCP1M3:CCP1M0. Sin embargo, al realizar un<br />

cambio <strong>en</strong> la configuración del preescalador se puede g<strong>en</strong>erar una interrupción falsa, para evitar lo anterior se<br />

deberá apagar el modulo CCP (limpiando el registro CCP1CON) previam<strong>en</strong>te al cambio de valor del<br />

preescalador.<br />

Este preescalador es indep<strong>en</strong>di<strong>en</strong>te al preescalador del Timer 1 (el cual puede usarse como ya se explicó con<br />

sus posibles divisores de 1/1, 1/2, 1/4, 18).<br />

Configuraciones:<br />

Se debe configurar el CCP1 como <strong>en</strong>trada a través del registro TRISB<br />

El Timer1 debe estar <strong>en</strong> modo temporizador o modo contador sincronizado<br />

Al cambiar el modo de captura hay que t<strong>en</strong>er inhabilitadas las interrupciones y borrar el flag para<br />

evitar interrupciones espúreas.<br />

Si el pin RB3/CCP1 es configurado como salida, se deberá t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta que una escritura al puerto<br />

B puede causar una condición de captura.<br />

Ejemplo:<br />

Para ejemplificar el uso del modulo CCP <strong>en</strong> modo captura vamos a realizar la medida del periodo de una onda<br />

cuadrada para así determinar su frecu<strong>en</strong>cia. La forma de trabajar va a ser la sigui<strong>en</strong>te:<br />

Configuramos CCP modo captura con cada transición de subida del pin RB3/CCP1 con Timer1 modo<br />

temporizador 1/1.<br />

Al llegar un flanco asc<strong>en</strong>d<strong>en</strong>te, reseteamos Timer1 y esperamos al sigui<strong>en</strong>te flanco asc<strong>en</strong>d<strong>en</strong>te, <strong>en</strong> el cual se<br />

guarda el valor capturado y lo <strong>en</strong>viamos a la PC para poder determinar la frecu<strong>en</strong>cia de la señal. Lo que hemos<br />

capturado es la cantidad de ciclos de reloj transcurridos <strong>en</strong> un ciclo de la señal a medir. Con este valor y el<br />

Tosc al cual trabaja el microcontrolador podemos determinar el periodo de la señal.<br />

Con un cristal de 20 MHz podemos medir desde aprox. 77Hz hasta los 500kHz, claro que a más frecu<strong>en</strong>cia<br />

más error <strong>en</strong> las mediciones. Por ejemplo, con algunos <strong>en</strong>sayos que he realizado a 1kHz se ti<strong>en</strong>e un error de +-<br />

1Hz, 10kHz +-5Hz, 100kHz +- 0.5kHz, 200kHz +- 2kHz, etc.<br />

Autor: Suky Mail: inf.pic.suky@live.com.ar Web: www.micros-designs.com.ar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!