#include <18F26J50.h>
#FUSES NOWDT,INTRC_PLL_IO,NODEBUG,NOXINST,STVREN,NOPROTECT,NOFCMEN,IESO,NOIOL1WAY,NOCPUDIV,LPT1OSC,T1DIG,PLL2
#use delay(clock=48M,INTERNAL)
#include "Hardware.h" //definicion de pines y PPS
#include <usb_cdc.h>
#include <string.h>
#use rs232(UART2, baud = 9600, STREAM = M95_STREAM)
char in_buffer[32];
#INT_RDA2
void uart2_isr(){
int i=0;
while(kbhit(M95_STREAM) && i<32){
[b
]in_buffer
[i
]=fgetc(M95_STREAM
);[/b
] usb_cdc_putc(in_buffer[i]);
i++;
}
}
void init(){
// Digital IO
set_tris_a(0b1110011); //OSC2,NC,VREG,M95_ON,LED_R,NC,NC
set_tris_b(0b11000110); //PGD,PGC,SDO2,SCK2,CS,SDI2,RX2,TX2
set_tris_c(0b10111111); //RX1,TX1,D+,D-,VUSB,NC,T1OSI,T1OSO
output_low(M95_PWRKEY);
output_low(LED);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
enable_interrupts(INT_RDA2);
enable_interrupts(GLOBAL);
memset(in_buffer
,0,sizeof(in_buffer
)); }
void main(){
[b]char str_ok[]="\r\nOK\r\n";[/b]
delay_ms(100);
init();
usb_cdc_init();
usb_init();
while (!usb_cdc_connected());
delay_ms(10);
printf(usb_cdc_putc
,"*USB conectado\r\n");
output_high(LED);
output_high(M95_PWRKEY);
delay_ms(2500);
output_low(LED);
output_low(M95_PWRKEY);
do{
fputs("AT\r\n",M95_STREAM
); printf(usb_cdc_putc
,"*AT\r\n"); }[b
]while(!strncmp(str_ok
,in_buffer
,sizeof(str_ok
)));[/b
]
printf(usb_cdc_putc
,"*El modem respondio OK\r\n");
while(TRUE){
output_toggle(LED);
delay_ms(500);
while(usb_cdc_kbhit())
fputc(usb_cdc_getc
(),M95_STREAM
); }
}