TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: eldelaesquina en 21 de Mayo de 2013, 17:04:16
-
Hola.
Algo simple pero que no he conseguido entender y es lo siguiente:
Para la medición del período de fuente externa mediante el módulo CCP, selecciono la interrupción por el flanco de subida mediante los bits CCP1CON(3:0), si además lo tengo que utilizar como preescalador , por ejemplo 1/4, ¿Cómo hago para utilizar estos bits para dos conceptos a la vez?.
¿Puede alguien aclarármelo?.
Gracias.
-
primero unos enlaces...
algo en castellano:
http://www.ate.uniovi.es/8693/documentos/LECC10ce.pdf
ingles! (pero Vos estás en Europa, no tienés sordera a otros idiomas, entenderás)
http://ww1.microchip.com/downloads/en/devicedoc/31014a.pdf
y obvio mira la AN594 de Microchip.
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011064
Cuando haces una pregunta de este tipo, tenés que indicar algún micro que estés empleando y el lenguaje (porque no somos adivinos).
En los pic 16F87x & 16F81x, con los bits que nombrás en el registro CCP1CON, como has dicho controlas cuando querés que se realice la captura, en el flanco de subida, bajada, cada cuatro flancos, o cada dieciseis flancos, estas condiciones son las que disparan la interrupción en cuestión.
Y .. y! también podes jugar con el TIMER1 que es la base de tiempo de todo esto, a ese lo programas como siempre un alguno de los valores de su post-escalador (1, 2, 4, ú 8 ) empleando su respectivo registro. ¿Caes?
Casualmente estoy en eso de diseñar un velocímetro, y la verdad que estos pic's me resultaron limitados, por ejemplo funcionando a 8Mhz, haciendo números, anda demasiado rápido 'la base de tiempo', caigo en que tengo que instalar un cristal externo para el TMR1 de 32768hz.
-
Hola AleSergi.
Muchas gracias por responder a mis dudas, te lo agradezco mucho.
El funcionamiento en teoría lo conozco bien, creo, pero me llama la atención de que en todos los esquemas sobre este tema, por ejemplo en modo captura a través del módulo CCP, y como es lógico, aparece siempre un preescalador propio para ese módulo, al margen del preescalador del temporizador TMR1 que tiene el suyo. En este proceso en que ambos utilizan cada cual el suyo y además tienen algunos divisores distintos. Mi pregunta es: si se utilizan los mismos bits para definir el flanco que quiero leer, como voy a decirle también que quiero un preescaler de 1/4.
El pic con el cual estoy haciendo pruebas es el 16F887.
Gracias por la documentación aportada y gracias por tu atención. Si te he expuesto de forma clara mi duda y tienes una respuesta te la agradecería.
-
Se me olvidaba decir que estas prácticas las trato de hacer en mikroC.
-
Casualmente estoy en eso de diseñar un velocímetro, y la verdad que estos pic's me resultaron limitados, por ejemplo funcionando a 8Mhz, haciendo números, anda demasiado rápido 'la base de tiempo', caigo en que tengo que instalar un cristal externo para el TMR1 de 32768hz.
Se puede utilizar la base de tiempos de 8Mhz. Sólo hay que capturar las interrupciones que se producen cuando se desborda el timer y aumentar otro registro.
si el reloj es de Fosc=8Mhz la frecuencia medida es de 2Mhz (4 veces menor)
2Mhz / 65536 = 30 veces por segundo habrá que aumentar otro contador.
A la hora de leer la captura primero se espera que actuen las interrupciones. Luego se comprueba el valor de la captura. Si vale mucho (cerca de 65536) hay que comprobar que no se ha producido desbordamiento, para restarle en caso de que se haya producido.
Al final consigues una medida de 16 bits (timer) + 16 bits (desbordamiento) = 32 bits.
Saludos.
-
finalmente hice como indicas, habilitando las interrupciones del TMR1, que suman a un contador, sus desbordamientos, cada vez que se produce una interrupción del CCP1, sumo todos los acumuladores y dejo listo para hacer la cuenta desde fuera de las rutinas de interrupción y obtener la velocidad.
Lo que me pone nervioso, es no saber o no tener el control sobre las interrupciones, como en el caso del ASM, lo me hace pensar que en algún momento se puedan interferir entre ellas, por ahora no veo efecto colateral alguno. Supongo que es solo mi poco tiempo en el uso del 'c' en este caso CCS.-