TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: MerLiNz en 17 de Abril de 2013, 22:16:03
-
Hace poco me ha surgido una duda, ni viendo los datasheets me queda claro asi que la pongo aqui por si alguien lo sabe.
Digamos que tenemos un timer que se incrementa con una señal externa (PWM), aqui todo bien.
Ahora mi duda viene:
¿Si activamos el timer justo cuando la señal PWM esta en 1 logico el timer se incrementa en ese momento? ¿O se incrementa en el siguiente edge?
Segun el datasheet de mi pic (dspic33e256mu810) existen 3 tipo de timers, tipo a, tipo b y tipo c, los del tipo A-B incrementan el timer despues del segundo rising edge, y los del tipo C lo hacen en el primer rising edge, el tema es que no se si lo hacen cuando detectan del 0-1 o cuando lo activas directamente incrementa 1.
-
Bueno, he probado una forma a ver que pasaba.
Le conecto VDD al pin del timer (C) y veo que ocurre, segun he visto lo incrementa 1, asi que creo que si activas el timer cuando esta en 1 logico este se incrementa, creo que un timer del tipo A-B lo haria a partir del siguiente rising edge.
-
Efectivamente, lo acabo de probar con un timer del tipo B y no se ha incrementado.
Doy este tema como auto-solucionado 8)
-
Rectifico mi respuesta, en realidad no cuenta si activas el timer y esta el pin en high, lo cuenta en la siguiente deteccion de subida. Para solucionarlo simplemente use:
if (pin) TMRx=1;
else TMRx=0;
asi, si al activar el timer esta en 1 entonces ya se cuenta ese estado.