Autor Tema: problema de configuracion de UART pic24fj64ga002  (Leído 2695 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jorge_cbax

  • PIC10
  • *
  • Mensajes: 5
problema de configuracion de UART pic24fj64ga002
« en: 27 de Diciembre de 2010, 20:28:35 »
hola Gente del foro tengo aca mi codigo de prueba sobre este pic y no hay forma de que me envie los datos correctos por la uart.. ya no se donde meter mano..
les dejo los fuentes. Estoy simulando en proteus y envia los datos pero yo mando un caracter que es la letra A y sale cualquier cosa....
Fuente principal
Código: [Seleccionar]
//////////////////////////////////////////////////////////
// PRENDER Y APAGAR UN LED EN EL PUERTO RD0
// CON UN SWITCH EN RB0 y enviar dato por UART
//////////////////////////////////////////////////////////
#include"p24FJ64GA002.h"

#define XTFREQ          8000000          //On-board Crystal frequency
#define FCY             XTFREQ/2        //Instruction Cycle Frequency
#define BAUDRATE        9600                    //Designamos rango de baudios
#define BRGVAL      ((FCY/(BAUDRATE*16))-1) //Formula para registro U1BRG, obtenida del manual

//_CONFIG2(FNOSC_PRI & POSCMOD_XT); //PIC24 en fisico
_CONFIG2(FNOSC_FRC & POSCMOD_NONE);  //simulador

int main(void)
{
    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(BRGVAL); //Initiate UART1 to 9600 at 8MHz OSCI


   while(1)
    {
        //send data back on UART TX line
  UART1PutChar('A');
UART1PutChar('\n');

/* if(PORTBbits.RB0==1) //Si el RB0 tiene un 1
        {LATAbits.LATA0=0; //apago el led sino lo prendo
        }
else
{LATAbits.LATA0=1;
}*/
   
}
}
Funciones de UART
Código: [Seleccionar]
#include"p24FJ64GA002.h"
//Funcion de inicializacion, el parametro BAUDRATEREG1 determina el baud speed
void UART1Init(int BAUDRATEREG1)
{
   //Set up registers
U1BRG = BAUDRATEREG1; //set baud speed

U1MODEbits.UEN0 = 0;
U1MODEbits.UEN1 = 0;
U1MODEbits.BRGH = 0;


U1STAbits.UTXISEL1 = 0;
U1STAbits.UTXISEL0 = 0;
U1STAbits.UTXEN = 1;
U1STAbits.URXISEL1 = 0;
U1STAbits.URXISEL0 = 0;


U1MODEbits.PDSEL1 = 0;
U1MODEbits.PDSEL0 = 0;
U1STAbits.ADDEN = 0;

U1MODEbits.UARTEN = 1 ;
   
}

//UART transmit function, parameter Ch is the character to send
void UART1PutChar(char Ch)
{
   //transmit ONLY if TX buffer is empty
   while(U1STAbits.UTXBF == 1);
   U1TXREG = Ch;
//reset RX interrupt flag
   IFS0bits.U1RXIF = 0;
}

//UART receive function, returns the value received.
char UART1GetChar()
{
   char Temp;

   //wait for buffer to fill up, wait for interrupt
   while(IFS0bits.U1RXIF == 0);
   Temp = U1RXREG;

   //reset interrupt
   IFS0bits.U1RXIF = 0;

   //return my received byte
   return Temp;
}
el header
Código: [Seleccionar]
/*
Engscope
UART
April 16, 2008
Author: JL
*/

//prototypes

//Initiation
extern void UART1Init(int BAUDRATEREG1);


//UART transmit function
extern void UART1PutChar(char Ch);

//UART receive function
extern char UART1GetChar();
muchas gracias !!!!!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: problema de configuracion de UART pic24fj64ga002
« Respuesta #1 en: 28 de Diciembre de 2010, 11:48:31 »


 

anything