hola a todos, estoy tratando de medir las rpm de un motor haciendo uso de las interrupciones por timer0 y timer1, estoy usando un pic 18f2550, un LCD conectado al puerto B y por RA4 del pic esta la senal proveniente del motor, el problema que tengo es que cuando lo simulo en proteus no hace nada, ah estoy tabajando con el compilador CCS. el codigo que tengo hasta ahora es el siguiente:
#include <18F2550.h>
#device adc=8
#FUSES WDT1;FUSES XT;USES NOPROTECT;#FUSES BROWNOUT;#FUSES BORV20;#FUSES NOPUT;#FUSES NOCPD;
#FUSES STVREN;#FUSES NODEBUG;#FUSES NOLVP;#FUSES NOWRT;#FUSES NOWRTD;#FUSES IESO;#FUSES FCMEN;#FUSES NOXINST
#include <lcd.c>
#use STANDARD_IO (a)
int16 counter=0;
//**********INTERRUPCION CON TIMER_1**************
#int_TIMER1
void TIMER1_isr(void)
{
counter=get_timer0(); //lectura del contador timer0
counter=counter*2*120;
lcd_gotoxy(1,1); //conversion a rpm
printf(lcd_putc,"%6lu rpm", counter);
set_timer0(0); //reinicia cuenta
set_timer1(3036); //recarga a 0.5s
}
void main()
{
// setup_adc_ports(NO_ANALOGS|VSS_VDD);
// setup_adc(ADC_OFF);
// setup_timer_2(T2_DISABLED,0,1);
// setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
// setup_comparator(NC_NC_NC_NC);
// setup_vref(FALSE);
// Setup_Oscillator parameter not selected from Intr Oscillotar Config tab
lcd_init();
lcd_gotoxy(2,1);
lcd_putc("tacometro");
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_2);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer0(0);
set_timer1(3036);
enable_interrupts(int_timer1);
enable_interrupts(global);
}
Cuando compilo el programa me arroja los siguientes warning:
interrupts disabled during call to prevent re-entrancy (lcd_putc)
interrupts disabled during call to prevent re-entrancy (lcd_gotoxy)
si en el codigo de interrupcion coloco como comnetaio lo que esta escrito en rojo desaparacen los warning, pero igual no consigo simular el circuito.
no se donde estara el problema espero que me puedan ayudar