Actualmente estoy tratando de portar la funcionalidad de uno de mis proyectos de un Arduino a un PIC µC. Para comenzar, quería establecer una comunicación UART en mi computadora, pero no puedo hacer que funcione. Probé con un convertidor TTL a USB y ahora con un analizador lógico para ver si algo sucede en el cable pero no hay nada. Leí en la hoja de datos que el pin tx debería ser RC6 y establecí todos los registros mencionados en la hoja de datos o en muchos tutoriales y traté de entenderlos, pero parece que olvidé algo. ¿Alguno de ustedes tiene una idea?
main.c
#define _XTAL_FREQ 16000000
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include "uart.h"
int main(void)
{
OSCCON = 0x7B;
UART_Init(9600);
while(1){
UART_Write('c');
UART_Write('w');
}
}
uart.h
char UART_Init(const long int baudrate)
{
unsigned int x;
x = _XTAL_FREQ/(64*baudrate)-1;
if(x>255){
x = _XTAL_FREQ/(16*baudrate)-1;
TX1STAbits.BRGH = 1;
}
if(x<256){
TX1STAbits.TXEN = 1;
TX1STAbits.SYNC = 0;
RC1STAbits.SPEN = 1;
SP1BRG = x;
return 1;
}
return 0;
}
void UART_Write(char data)
{
while(!TX1STAbits.TRMT);
TX1REG = data;
}