Autor Tema: Interrupcion On Change PIC16LF18313  (Leído 2078 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado frank150

  • PIC10
  • *
  • Mensajes: 1
Interrupcion On Change PIC16LF18313
« en: 28 de Enero de 2020, 14:38:19 »
hola que tal, un saludo para todos los del foro, soy nuevo aqui y estoy comenzando a familiarizarme con los pic, la cuestion principal es que estoy haciendo un codigo para que el pic16lf18313, para que se duerma despues de un tiempo de inactividad (3 segundos), para poder salir del modo sleep usare una interrupcion on change, este va resetear un contadorque hará que el pic permanezca activo, mientras el pic este activo, se encendera un led, cuando entre a modo sleep, este led se apagará, ya declare todo pero sigue sin funcionar.....
les agradecería su ayuda
saludos...

les dejo el codigo..

#include<16LF18313.h>

//Configuracion de fuses
#fuses NOMCLR              //Master Clear pin used for I/O
#fuses NOPUT               //No Power Up Timer
#fuses NOWDT               //No Watch Dog Timer
#fuses NOBROWNOUT          //No brownout reset
#fuses NOLVP               //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#fuses NOPROTECT           //Code not protected from reading
#use delay(internal=31KHz)

//pines e interrupciones
#define LED       PIN_A0     //led conectado en el pin A0
//variables
int8 contador = 0;
int8 tfs = 3;     //tiempo para irse a dormir (segundos)

//funcion principal
void main (){
set_tris_a(0b010000);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32|RTCC_8_BIT);    //1.0 s overflow
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_IOC);
enable_interrupts(GLOBAL);
output_high(led);
   //funcion loop
   while(true){
      if(contador >= tfs){
         output_low(led);
         //sleep();
      }
         if(contador < tfs){
            output_high(led);
         }
  }
}
#INT_TIMER0
void TIMER0_isr(void) {
  contador += 1;
}

#INT_IOC
void  IOC_isr(void) {
   //SI SE DETECTA UNA INTERRUPCION RESETEA EL CONTADOR Y DESPIERTA
   if (interrupt_active(INT_IOC_A4)) {
       contador = 0;
       clear_interrupt(INT_IOC_A4);
  }
}
« Última modificación: 28 de Enero de 2020, 14:47:28 por frank150 »