TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: PIPE09 en 12 de Marzo de 2009, 20:02:30

Título: CONFIGURACION OSCILADOR INTERNO DSPIC30F4011
Publicado por: PIPE09 en 12 de Marzo de 2009, 20:02:30
no e podido realizar transmision UART de datos.. y ahora estoy casi seguro q es por no configurar correctamente el oscilador del dspic30f4011.
 
desafortunadamente todas las configuraciones q vi en ejemplos de este foro se hace por medio de instrucciones q no conosco.. y q no e podido encontrar en pdf...

por favor ayudenme a configurar el oscilador con el FAST RC INTERNO y a que el pic funcione con este.. ya q creo q es lo q falta en mi codigo para q se de la transmision de datos.

mi codigo es el siguiente...


#include <p30f4011.h>
#include <uart.h>

/************* START OF MAIN FUNCTION ***************/

int main ( void ){
         
   unsigned int baudvalue;
   unsigned int U1MODEvalue;
   unsigned int U1STAvalue;
   char TEXTO[] = {'H','e','l','l','o',' ','U','A','R','T','\n','\r','\0'};
        
   CloseUART1();

   ConfigIntUART1(UART_RX_INT_DIS &
   UART_RX_INT_PR6 &
   UART_TX_INT_DIS &
   UART_TX_INT_PR2);

   U1MODEvalue = UART_EN &
   UART_IDLE_CON &
   UART_DIS_WAKE &
   UART_DIS_LOOPBACK &
   UART_DIS_ABAUD &
   UART_NO_PAR_8BIT &
   UART_1STOPBIT;
   
   U1STAvalue = UART_INT_TX_BUF_EMPTY &
   UART_TX_PIN_NORMAL &
   UART_TX_ENABLE &
   UART_INT_RX_CHAR &
   UART_ADR_DETECT_DIS &
   UART_RX_OVERRUN_CLEAR;

   
   baudvalue =95; //=7.37mhZ/(16*BaudRate)-1
   
   OpenUART1(U1MODEvalue, U1STAvalue, baudvalue);
   TRISDbits.TRISD0=0;
   U1STAbits.UTXEN=1;

   while(1){
      putsUART1 ((unsigned int *)TEXTO);
      while(BusyUART1()){
         PORTDbits.RD0=1;
      }
      PORTDbits.RD0=0;
   
   }
}


el LED que deberia apagarse despues de la transmision.. se mantiene siempre encendido.. lo que me indica que no e logrado configurar con exito ningun oscilador.
Título: Re: CONFIGURACION OSCILADOR INTERNO DSPIC30F4011
Publicado por: pepescorpi en 28 de Noviembre de 2012, 14:48:38
mira con este codigo puedes transmitir espero y te sirva solo anexalo a tu codigo y verifica si es U2 O U1
void Configura_uart (void){

U2STAbits.UTXEN=0;    //Habilita transmision
U2BRG=15;    //Se establece el baudaje
U2MODEbits.PDSEL=0;    //#bits a transmitir y paridad
U2MODEbits.STSEL=0;    //#bits de paro
IEC1bits.U2TXIE=1;    //habilita interrupcion
IPC6bits.U2TXIP=2;    //prioridad de interrupcion
U2MODEbits.UARTEN=1;   //Habilita modulo UART
IFS1bits.U2TXIF=0;    //Se borra la bandera de interrupcion
U2STAbits.UTXISEL=0;   //Modo de operacion de la interrupcion
U2STAbits.UTXEN=1;
}

void __attribute__((interrupt, no_auto_psv)) _U2TXInterrupt(void) {
U2TXREG=U2RXREG;
IFS1bits.U2TXIF=0;   
}