#define USB_CON_SENSE_PIN PIN_A7
#include <24FJ256GB110.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOJTAG //JTAG disabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES ICSP1 //ICD uses PGC1/PGD1 pins
#FUSES WINDIS //Watch Dog Timer in non-Window mode
#FUSES WPOSTS16 //Watch Dog Timer PostScalar 1:32768
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES PR_PLL //Primary Oscillator with PLL
#FUSES NOCKSFSM //Clock Switching is disabled, fail Safe clock monitor is disabled
#FUSES OSCIO //OSC2 is general purpose output
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOIOL1WAY //Allows multiple reconfigurations of peripheral pins
#FUSES WPEND_HIGH
#FUSES WPCFG
#FUSES WPDIS
#FUSES PLL6 //Divide By 6(24MHz oscillator input)
#FUSES DISUVREG
#FUSES NOWPFP
#use delay(clock=32000000)
#include <usb_desc_iapser2.h>
#include <pic24_usb.h>
#include <usb.c>
#include <ctype.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#BIT CPDIV0=0x0744.6
#BIT CPDIV1=0x0744.7
#USE RTOS(timer=1, minor_cycle=1000ms)
#task (rate=1000ms, max=1000ms) //Creamos tarea para el arranque
void arranque();
#task (rate=1000ms, max=1000ms) //Creamos tarea principal USB1
void Main_USB_1();
#task (rate=1000ms, max=1000ms) //Creamos tarea principal USB2
void Main_USB_2();
unsigned int8 instru[4];
void main()
{
instru[0]=0xFF;
instru[1]=0xFF;
// TODO: USER CODE!!
usb_init_cs();
CPDIV0=0; //Habilita el procesador a 32MHz
CPDIV1=0; //Habilita el procesador a 32MHz
setup_wdt(WDT_OFF);
//setup_timer1(TMR_DISABLED);
//setup_timer1(TMR_INTERNAL|TMR_DIV_BY_1);
//setup_timer1(TMR_EXTERNAL|TMR_DIV_BY_1);
//setup_timer1(TMR_EXTERNAL|T1_EXTERNAL_SYNC|TMR_DIV_BY_1);
while(1)
{
usb_task();
if (usb_attached())
{
//PARTE CON USB*************************************************
//delay_ms(5000);
rtos_run();
//FIN DE PARTE CON USB************************************************
}
else
{
// codigo de aplicaciones sin USB
}
} // end while
} // end main
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void arranque()
{
rtos_disable(Main_USB_2);
rtos_disable(Main_USB_1);
usb_task();
rtos_enable(Main_USB_1);
rtos_disable(arranque);
}
void Main_USB_1()
{
usb_task();
if (usb_attached())
{
//PARTE CON USB*************************************************
if(usb_kbhit(1))
{
usb_get_packet(1, instru, 4);
}
if(instru[0]==0x00 && instru[1]==0x02)
{
output_bit(PIN_F0,1);// LEDs
output_bit(PIN_F1,0);// LEDs
delay_ms(800);
rtos_enable(Main_USB_2);
rtos_disable(Main_USB_1);
}
if(instru[0]==0x00 && instru[1]==0x03)
{
output_bit(PIN_F0,0);// LEDs
output_bit(PIN_F1,1);// LEDs
delay_ms(800);
rtos_enable(Main_USB_2);
rtos_disable(Main_USB_1);
}
if (instru[0]==0xFF && instru[1]==0xFF)
{
// do nothing
delay_ms(800);
rtos_enable(Main_USB_2);
rtos_disable(Main_USB_1);
}
//FIN DE PARTE CON USB************************************************
}
else
{
//PARTE SIN USB*****************************************************
rtos_terminate();
//FIN PARTE SIN USB**************************************************
}
}
void Main_USB_2()
{
usb_task();
if (usb_attached())
{
//PARTE CON USB*************************************************
if(usb_kbhit(1))
{
usb_get_packet(1, instru, 4);
}
if(instru[0]==0x00 && instru[1]==0x02)
{
output_bit(PIN_F0,1); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
output_bit(PIN_F0,1); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
rtos_enable(Main_USB_1);
rtos_disable(Main_USB_2);
}
if(instru[0]==0x00 && instru[1]==0x03)
{
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,1); // LEDs
delay_ms(200);
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,1); // LEDs
delay_ms(200);
output_bit(PIN_F0,0); // LEDs
output_bit(PIN_F1,0); // LEDs
delay_ms(200);
rtos_enable(Main_USB_1);
rtos_disable(Main_USB_2);
}
if (instru[0]==0xFF && instru[1]==0xFF)
{
// do nothing
delay_ms(800);
rtos_enable(Main_USB_1);
rtos_disable(Main_USB_2);
}
//FIN DE PARTE CON USB************************************************
}
else
{
//PARTE SIN USB*****************************************************
rtos_terminate();
//FIN PARTE SIN USB**************************************************
}
}