TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado 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.
-
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;
}