Saludos, estoy utilizando pic18f25k22.
Utilizo compilador mikroC, he hecho un pequeño programita de prueba que al recibir "on" enciende un led en portc.b2 y lo sorprendente es que funciona bien en el simulador proteus pero cuando lo monto los bytes no llegan. He repasado cableado , cambiado el xtal = 16Mhz y probado con otro pic 16f25k20 y tampoco. No se que se me escapa, he probado activando interrupcion alta, baja y nada.Gracias.
sbit led at PORTC.b2 ; // puerto para led
sbit pled at TRISC.b2 ; // configura puerto como salida
char mensaje[8] ;
unsigned short xx = 0;
void interrupt() { //
if(PIR1.RC1IF == 1){
PIR1.RC1IF = 0 ;
mensaje[xx] = UART1_Read();
if(mensaje[xx] == '-'){xx = 0 ; }
if(xx<sizeof(mensaje)){xx++;}
}
}
void main() {
ANSELA = 0xff ; // entradas analogicas habilitadas
ANSELB = 0x00 ; // puertos digitales habilitadas
ANSELC = 0x00 ; // puertos digitales habilitadas
TRISC = 0b10000000 ; // RX entrada y TX salida
pled = 0 ; // puerto led salida
C1ON_bit = 0; // comparadores deshabilitados
C2ON_bit = 0;
UART1_Init(9600); // inicio uart1 9600
delay_ms(100) ;
INTCON = 0b11000000 ; // configuracion registros para la interrupcion
PIR1.RC1IF = 0 ; // se borra flap
PIE1.RC1IE = 1 ; // se habilita interrupcion de recepcion
IPR1.RC1IP = 0 ; // interrupcion alta prioridad
while(1){
asm clrwdt ;
if(strstr(mensaje,"on")> 0){
led= 1 ; // enciende led
delay_ms(2000) ;
led = 0 ; // apaga led
delay_ms(2000) ;
for(xx = 0 ; xx<sizeof(mensaje); xx++){mensaje[xx] = 0 ;} // borra string recibido
xx = 0 ; // variable a cero
}
}}
