Hola gente estoy tratando de configurar algunos perifericos del pic24, hice un proyecto que simplemente envia la letra A por la Uart1
pero al simular cuando le conecto el terminal al pin asignado, sale cualquier cosa menos la letra A.
Estoy trabajando con un cristal de 4Mhz y cuando calculo U1BRG para setear la velocidad, con ese cristal para envia a 9600bps me da 12.
luego de inicializar el puerto envio el caracter.
Yo estoy seguro que el problema esta en que no se como configurar bien el oscilador, entonces al no estar configurado el U1BRG calculado no va.. y el manda a una
velocidad desconocida.
Si ven algun error les pido que me corrijan porfavor. y alguna ayuda para setear el oscilador porque ya probe de mil formas! les dejo el codigo.
//////////////////////////////////////////////////////////
// PRENDER Y APAGAR UN LED EN EL PUERTO RD0
// CON UN SWITCH EN RB0 y enviar dato por UART
//////////////////////////////////////////////////////////
#include"p24FJ64GA002.h"
//CONFIGURACION DE LOS FUSES! VER EL .H PARA MAS DETALLES //
_CONFIG2( FNOSC_PRIPLL )
int main(void)
{
//OSCCON = 0x2200; //Use primary, no divide FCY = 10Mhz/2 = 5Mhz
CLKDIV = 0x0000; //do not divide
AD1PCFG = 0xFFFF; // Configuro todos los pines como digitales
TRISAbits.TRISA0=0; // Seteo el bit0 del puerto A como salida (led conectado en RD0)
LATAbits.LATA0=0; // Pongo un 0 en la salida RA0(apago el led)
INTCON2bits.INT0EP = 0; // detecto la polaridad del flanco de entrada con 0 fl positivo
TRISBbits.TRISB0 = 1; // Configuramos RB0 como entrada.
//CONFIGURACION DEL PUERTO SERIE //
RPOR1bits.RP3R = 3; //UART1 transmit set to RB3
UART1Init(12); //Initiate UART1 to 9600 at 4MHz OSCI
char data = 'A';
while(1)
{
if(PORTBbits.RB0==1) //Si el RB0 tiene un 1
{LATAbits.LATA0=0; //apago el led sino lo prendo
}
else
{LATAbits.LATA0=1;
}
//send data back on UART TX line
UART1PutChar(data);
}
}
Muchas gracias~!!!