TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: AKENAFAB en 10 de Enero de 2009, 00:41:39
-
Hola amigos!
Comparto con ustedes este fragmento de código .xD
En mi aplicación ocupe la dichosa interrupcion externa en mi pic16f88 IntRB0 para medir el timepo entre flancos.
Use practicamente todos los pines , excepto RA4/T0CKI que tiene la funcion de entrada externa del TIMER0.
NEcesito detectar cuando unos rieles llegan a los limites de estos.
Asi que use el TIMER0 en modo CONTADOR y aprovecho la interrupcion por desborde.FF-00
ENtonces esto queda asi :
Configuro el pin como entrada digital
Selecciono el Incremento por subida o bajada segun sea la necesidad.
Configuro el TIMER0 en modo contador
Cargo el TIMER0 con 255
HAbilito interrupcion.
Cargo con 255 , asi cuando mi pin cambie de estado alto a bajo incremente y desborde el timer produciendo la interrupcion.
Al salir de la interrupcion cargo nuevamente el timer.
//INterrupcion desborde timer0
#int_timer0
void stop_switch(){
clear_interrupt(INT_TIMER0); //Limpiamos flag
flag=1; // Bandera de desborde
}
main(){
set_tris_a(0b00110000)
//--------- Configuracion Interrupcion Switch Overflow ---//
SETUP_TIMER_0(RTCC_DIV_1 | RTCC_EXT_H_TO_L); //1:1 _Incremento por ALto-Bajo
SET_TIMER0(255); //CArga del timer con 0xFF
//--------------------------------------------------------//
enable_interrupts(INT_TIMER0); //HAbilitamos interrupcion
while(1){
//loop
}
}
-
oeee que buena idea, es una cosa por otra, ganas un pin pero pierdes un Timer :mrgreen: :mrgreen: :mrgreen:, oye gracias por compartir la información.
-
oeee que buena idea, es una cosa por otra, ganas un pin pero pierdes un Timer :mrgreen: :mrgreen: :mrgreen:, oye gracias por compartir la información.
:mrgreen:Buen punto!
Para mi suerte no necesite el timer0 xD
Pero si uso el timer2 y el timer1
Buen punto!
-
Muy ingenioso. Gracias por compartirlo
-
La verdad que interesante, queda guardado en favoritos :-).