Hola , bueno la idea del programa , es basicamente que realize 4 rutinas distintas dependiendo de que pin (B4-7) interrumpa, espero este todo bien configurado
. El pic es el 16f84.
He leido sobre interrupciones , se programar en c, pero en PIC soy bastante novato.. por eso quiero me digan en que me estoy equivocando en el codigo, porque estoy seguro que ahi esta el problema, y si puede ser un poco de informacion asi sigo aprendiendo gracias!
Aclaro que se que en las interrupciones hay q hacer rutinas rapidas , pero bueno si o si necesito que sean asi (no tan rapidas ja), espero se pueda sino haganmelo saber.
Hay 3 funciones ext(), s_delantero() y s_trasero() que son definidas por mi.. ahora no las adjunto pero si hace falta las subo.
Otra cosa mas, lo intente simular en proteus y me da un error que dice :
Internal Exception: acces violation in module '<UNKNOWNN>'No se si sera error del proteus (version 7.4 SP3) o el error realmente esta en el codigo. Igual me inclino a que sea error del codigo.
Ahi les dejo codigo, sin las funciones (uso CCS compiler):
#include <16f84.h>
#FUSES NOWDT,XT,NOPUT,NOPROTECT
#use delay(clock=4000000)
#use fixed_io (A_outputs=PIN_A0,PIN_A1,PIN_A4)
#use fixed_io (B_outputs=PIN_B1,PIN_B2,PIN_B3)
// Los pines B4-7 estan puestos en 4 pulsadores, ¿ estaria bien que pregunte por el 1 ?
// ¿o deberia saber, si o si, el estado anterior?
// gracias
int ctrl=1; // defino variable global de control
#int_RB
void RB_isr(){
if(input(PIN_B6))output_high (ret);
if(input(PIN_B7))ext();
if(input(PIN_B4))s_delantero();
if(input(PIN_B5))s_trasero();
}
void main(){
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
while(TRUE){
if(ctrl==1)output_high(PIN_A4); // prendo LED para saber si esta en SLEEP
if(ctrl==0)output_low(PIN_A4);
}
}
Desde ya gracias, saludos a todos desde Cordoba, Argentina
EDIT: gracias por las respuestas , probe lo de agregar la instruccion , pero compilar , compila perfecto , pero cuando lo voy a simular no funciona.
Tira ese error el proteus. En otro mensaje posteo el otro trozo de codigo