Estoy tratando de leer dos encoders usando los timer 0 y 1, ademas de transmitir la cuenta de los pulsos cada segundo por rs232 a una computadora, el programa se compila sin ningun problema y simulado en proteus funciona, pero cuando programo el pic y realizo la comunicacion entre este y la computadora, el pic no transmite la cuenta de pulsos, solo manda ceros. No me explico que pueda ser estoy usando el compilador CCS v4.068 en el que apenas empieso.
Pongo el codigo que funciona en proteus pero no en la vida real, nose porque... nose si haya omitido algo que proteus corrije en la simulacion.
#include <18f452.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT
#use DELAY (CLOCK=4000000)
#use rs232(baud=9600, UART1)
#use STANDARD_IO (a)
#use STANDARD_IO (c)
//#include <bootloader.h>
int16 counter1=0;
int16 counter2=0;
int segundo=0;
int segundos=0;
//*************** INT TIMER1*********************
#int_TIMER3
void TIMER3_isr(void)
{
segundo = segundo + 1;
if (segundo == 2)
{
segundo=0;
segundos= segundos + 1;
printf("%6lu t0 %6lu t1 %6u seg \n \r", counter1,counter2,segundos);
set_timer0(0); //Borrado contador
set_timer1(0);
}
set_timer3(3036); // Recarga a 0.5s
}
//**********************************************
VOID MAIN()
{
PORT_B_PULLUPS(TRUE);
setup_timer_0(rtcc_ext_l_to_h|rtcc_off); //Configuración TMR0
setup_timer_1(T1_external|T1_DIV_BY_2);
setup_timer_3(T3_internal|T3_DIV_BY_8); //Configuración TMR1
set_timer0(0); //Borrado contador
set_timer1(0);
set_timer3(3036); //Carga a 0.5s
enable_interrupts(int_timer3);
enable_interrupts(global); //Habilitación interrupciones
WHILE (1)
{
counter1=get_timer0(); //Lectura contador TMR0
counter2=get_timer1(); //Lectura contador TMR1
}
}