Estimados programadores y programadoras,
les dejo aquí los códigos, a ver si alguien descubre porqué no me funcionan las cosas. Cualquier comentario, sugerencia, link, regaño o crítica constructiva, será recibido con gusto y analizado con atención.
//USART1 TX
void main()
{
char data;
OSCTUNE.PLLEN=1; //Activo PLL
TRISC=0b10000000; //PORTC.F7 es RX (no usado en TX), PORTC.F6 es TX
Usart_Init1(9600); //BaudRate 9600 (@40MHz con BRGH y BRG16 en alto = error de 0.06%)
BAUDCON1.BRG16=1;
TXSTA1.BRGH=1;
// PIE1.TX1IE=1; //Enable TX interrupt
// TXSTA1.TRMT = 1; //TRMT is suppossed to be a Read (not writable) bit... set for debugging...
while (1) {
Usart_Write1(0x00);
Usart_Write1('a');
Usart_Write1 ('m');
Usart_Write1 (0XFF);
}
}Aquí el código del receptor:
//USART1 RX
void main()
{
char data=0xFF;
TRISC=0b10000000; //Config. EUSART RX y TX
TRISD=0x00;
Usart_Init1(9600); //Baudrate 9.6K, 8bits
BAUDCON1.BRG16=1;
TXSTA1.BRGH=1;
PIE1.RC1IE=1; //Activo interrupciones de recepción RX
// PIE1.TX1IE=0; //Disables TX interruptions
while (1) {
while (!Usart_Data_Ready1()) {} //Espero hasta que los datos son recibidos
data = Usart_Read1(); //guardo el byte recibido en la variable data
PIR1.RCIF = 0; //Limpio la interrupción
PORTD=data; // Despliego el byte recibido en PORTD
}
}
¿Alguna idea de que es lo que pasa?
Gracias por su cooperación
!MagMX