- #include <p24fj128ga010.h>
- _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
- _CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS );
- #include <uart.h>
- char DataUART;
- char KbhitUART;
- /* ** *********************************************************************************** ** */
- // Definciones para calculo de Baud Rate.-
- #define FCY 10000000 // MHz
- #define BAUDRATE 9600
- #define BRGHigh 1
- #if BRGHigh
- #define BRGVAL ((FCY/BAUDRATE)/4)-1
- #else
- #define BRGVAL ((FCY/BAUDRATE)/16)-1
- #endif
- //__attribute__ ((__section__ (".text"), __space__(prog)))
- const char Texto[]= "Probando comunicación serial...\r\nPIC24FJ128GA010 xD ...\r\n";
- /* ** *********************************************************************************** ** */
- void __attribute__((__interrupt__, __shadow__)) _U2RXInterrupt(void){
- DataUART=getcUART2();
- KbhitUART=1;
- _U2RXIF=0; // Borramos flag.
- }
- /* ** *********************************************************************************** ** */
- int main (int argc, char * argv[]){
- /* ** Utilizando las funciones definidas en C30 ** */
- OpenUART2(UART_EN & UART_IDLE_STOP & UART_IrDA_DISABLE & UART_MODE_SIMPLEX &
- UART_UEN_00 & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_UXRX_IDLE_ONE &
- UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_BRGH_FOUR & UART_1STOPBIT,
- 0xFFFF & UART_IrDA_POL_INV_ZERO & UART_SYNC_BREAK_DISABLED &
- UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR,
- BRGVAL);
- ConfigIntUART2(UART_RX_INT_EN & UART_RX_INT_PR1 & UART_TX_INT_DIS & UART_TX_INT_PR0 );
- /*U2MODEbits.USIDL=1; // Al pasar al modo Sleep, apagar modulo.
- U2MODEbits.IREN=0; // Codificacion/decodificacion IrDA deshabilitado.
- U2MODEbits.RTSMD=1; // RTS en modo simple.
- U2MODEbits.UEN=0b00; // Tx/Rx habilitado, CTS/RTS deshabilitados.
- U2MODEbits.WAKE=0; // Wake-up deshabilitado.
- U2MODEbits.LPBACK=0; // Modo LoopBack deshabilitado.
- U2MODEbits.ABAUD=0; // Auto-Baud rate deshabilitado.
- U2MODEbits.RXINV=0; // Modo normal de pin RX, en reposo = 1.
- U2MODEbits.BRGH=BRGHigh; // Mode seleccionado en define.-
- U2MODEbits.PDSEL=0b00; // 8 bits- sin paridad.
- U2MODEbits.STSEL=0; // 1 bit de Stop.
- U2STAbits.UTXISEL1=1; // Interrupcion por transimision no usada.
- U2STAbits.UTXISEL0=1; // Interrupcion por transimision no usada.
- U2STAbits.UTXINV=0; // Pin Tx en reposo igual a 1.
- U2STAbits.UTXBRK=0; // Break deshabilitado.
- U2STAbits.URXISEL=0b00; // Interrumpir cuando se recibe un caracter.
- U2STAbits.ADDEN=0; // Auto-Address deshabilitado.
- U2STAbits.OERR=0; // Borramos bits de error por overflow.
- U2BRG =BRGVAL; // Baud Rate determinado en defines.
- IPC7bits.U2RXIP=0b01; // Fijamos nivel de prioridad.
- IFS1bits.U2RXIF=0; // Borramos flag.
- IEC1bits.U2RXIE=1; // habilitamos interrupcion por recepción.
- U2MODEbits.UARTEN=1;// Encendemos modulo.
- U2STAbits.UTXEN=1; // Transmision habilitada.*/
- KbhitUART=0;
- putsUART2(Texto);
- while(1){
- if(KbhitUART==1){
- KbhitUART=0;
- putcUART2(DataUART);
- }
- }
- }
domingo, 20 de marzo de 2016
COPYPASTE (p24fj128ga010)
Configuración UART más interrupción:
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario