Buenos días colegas! Como los trata el verano?
Gente, los molesto por que ya no se me ocurre que mas probar. Tengo problemas con la recepción de caracteres en la EUSART modo asincronico de un 18F46K22. No asi con el envio.
Les adjunte una trama de la información que llega al PIC. El primer caracter valido es 0x55 (No le den bola a los anteriores, esos errores son por que yo envio un caracter a una velocidad diferente a la que esta seteada el capturador). Ese caracter lo recibe perfecto, pero luego en lugar de capturar 0xD0 y 0x8F, me muestra 0x11 y 0x00.
Les copio la parte de recepcion del programa:
TXSTA1bits.SYNC = 0; // modo asincro
TXSTA1bits.TX9 = 0; // No noveno bit
BAUDCON1bits.CKTXP = 1; // polaridad invertida
TXSTA1bits.TXEN = 1; // habilito trans
RCSTA1bits.RX9 = 0; // No noveno bit
BAUDCON1bits.DTRXP = 1; // polaridad invertida
RCSTA1bits.CREN = 1; // habilito recepcion
RCSTA1bits.SPEN = 1; // habilito el puerto
BAUDCON1bits.BRG16 = 0; // seteo a 10400
TXSTA1bits.BRGH = 0; //
SPBRG1 = 23; //
while (PIR1bits.RC1IF==0){ // 0x55
}
UC SynchByte = RCREG1; RCSTA1bits.SPEN = 0;RCSTA1bits.SPEN = 1;
while (PIR1bits.RC1IF==0){ // 0xD0
}
UC KB1 = RCREG1;
while (PIR1bits.RC1IF==0){ // 0x8F
}
UC KB2 = RCREG1;
Esos caracteres despues los chequeo imprimiendolos en un lcd grafico. Lo ultimo que probe fue deshabilitar y habilitar el SPEN despues de recibir el primer byte por si se generaba algun error, pero hace lo mismo.
Tambien intente manejarlo por interrupciones, pero tengo exactamente el mismo efecto.
Se les ocurre algo? Mientras voy a seguir indagando y si lo soluciono les aviso, pero hace 3 dias que estoy renegando con esto.
Abrazo!