domingo, 20 de marzo de 2016

COPYPASTE (p24fj128ga010)

Configuración UART más interrupción:

  1. #include <p24fj128ga010.h>
  2. _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
  3. _CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS );
  4. #include <uart.h>
  5. char DataUART;
  6. char KbhitUART;
  7. /* ** *********************************************************************************** ** */
  8. // Definciones para calculo de Baud Rate.-
  9. #define FCY 10000000  // MHz
  10. #define BAUDRATE 9600
  11. #define BRGHigh 1
  12. #if BRGHigh
  13.         #define BRGVAL ((FCY/BAUDRATE)/4)-1
  14.          
  15. #else
  16.         #define BRGVAL ((FCY/BAUDRATE)/16)-1
  17. #endif
  18. //__attribute__ ((__section__ (".text"), __space__(prog)))
  19. const char Texto[]= "Probando comunicación serial...\r\nPIC24FJ128GA010  xD ...\r\n"; 
  20. /* ** *********************************************************************************** ** */
  21. void __attribute__((__interrupt__, __shadow__)) _U2RXInterrupt(void){
  22.                
  23.         DataUART=getcUART2();
  24.         KbhitUART=1;
  25.         _U2RXIF=0; // Borramos flag.
  26. }
  27. /* ** *********************************************************************************** ** */
  28. int main (int argc, char * argv[]){
  29.         /* ** Utilizando las funciones definidas en C30 ** */
  30.         OpenUART2(UART_EN & UART_IDLE_STOP & UART_IrDA_DISABLE & UART_MODE_SIMPLEX &
  31.                         UART_UEN_00 & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_UXRX_IDLE_ONE &
  32.                 UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_BRGH_FOUR & UART_1STOPBIT,
  33.                         0xFFFF & UART_IrDA_POL_INV_ZERO & UART_SYNC_BREAK_DISABLED &
  34.                         UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR,
  35.                         BRGVAL);
  36.                        
  37.         ConfigIntUART2(UART_RX_INT_EN & UART_RX_INT_PR1 & UART_TX_INT_DIS & UART_TX_INT_PR0 );
  38.        
  39.        
  40.         /*U2MODEbits.USIDL=1; // Al pasar al modo Sleep, apagar modulo.
  41.         U2MODEbits.IREN=0; // Codificacion/decodificacion IrDA deshabilitado.
  42.         U2MODEbits.RTSMD=1; // RTS en modo simple.
  43.         U2MODEbits.UEN=0b00; // Tx/Rx habilitado, CTS/RTS deshabilitados.
  44.         U2MODEbits.WAKE=0; // Wake-up deshabilitado.
  45.         U2MODEbits.LPBACK=0; // Modo LoopBack deshabilitado.
  46.         U2MODEbits.ABAUD=0; // Auto-Baud rate deshabilitado.
  47.         U2MODEbits.RXINV=0; // Modo normal de pin RX, en reposo = 1.
  48.         U2MODEbits.BRGH=BRGHigh; // Mode seleccionado en define.-
  49.         U2MODEbits.PDSEL=0b00; // 8 bits- sin paridad.
  50.         U2MODEbits.STSEL=0; // 1 bit de Stop.
  51.         U2STAbits.UTXISEL1=1; // Interrupcion por transimision no usada.
  52.         U2STAbits.UTXISEL0=1; // Interrupcion por transimision no usada.
  53.         U2STAbits.UTXINV=0; // Pin Tx en reposo igual a 1.
  54.         U2STAbits.UTXBRK=0; // Break deshabilitado.
  55.         U2STAbits.URXISEL=0b00; // Interrumpir cuando se recibe un caracter.
  56.         U2STAbits.ADDEN=0; // Auto-Address deshabilitado.
  57.         U2STAbits.OERR=0; // Borramos bits de error por overflow.
  58.        
  59.         U2BRG =BRGVAL;  // Baud Rate determinado en defines.
  60.         IPC7bits.U2RXIP=0b01; // Fijamos nivel de prioridad.
  61.         IFS1bits.U2RXIF=0; // Borramos flag.
  62.         IEC1bits.U2RXIE=1; // habilitamos interrupcion por recepción.
  63.         U2MODEbits.UARTEN=1;// Encendemos modulo.
  64.         U2STAbits.UTXEN=1; // Transmision habilitada.*/
  65.        
  66.         KbhitUART=0;
  67.         putsUART2(Texto);
  68.        
  69.         while(1){
  70.                 if(KbhitUART==1){
  71.                         KbhitUART=0;
  72.                         putcUART2(DataUART);
  73.                 }
  74.         }
  75. }

No hay comentarios:

Publicar un comentario