Hola compañeros, estoy cerca de volverme lelo, no entiendo qué es lo que estoy haciendo mal.
Estoy haciendo el PFC con un PIC18F2550 y ahora he tenido la necesidad de meter mano a las interrupciones del timer0.
El código que pongo a continuación es un pequeño algoritmo para probar estas interrupciones.
Como resultado, lo que veo en mi led es que parpadea cada 1,3 segundos aproximadamente, y en teoría el tic del timer0 debería ser de 2,73ms.
¿Alguien ve algo anormal en el código?
Muchísimas gracias de antemano.
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000) //el cristal es de 20mhz pero el reloj es de 48mhz
#USE RS232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7, stream=PC)
#define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 1 buffer (1 byte)
#define USB_EP1_RX_SIZE 1 //size to allocate for the rx endpoint 1 buffer (1 byte)
//#define USB_CON_SENSE_PIN PIN_B2 //pin B2 detecta si USB conectado
#include <pic18_usb.h>
#include <PicModem.h> //Configuración del USB y los descriptores para este dispositivo
#include <string.h>
#include <usb.c>
#define LED1 PIN_B7
#define LED2 PIN_B6
#define LED_ON output_high
#define LED_OFF output_low
int tics=0;
int flag=0;
#int_TIMER0
RTCC_isr()
{
if(flag==0)
flag=1;
else
flag=0;
}
void main(void)
{
setup_counters(RTCC_INTERNAL,RTCC_DIV_128);
enable_interrupts(global);
enable_interrupts(INT_RTCC);
while (TRUE)
{
if(flag==1)
{
LED_ON(LED1);
}
else
{
LED_OFF(LED1);
}
}
}