Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. void UART1Inint(unsigned long int baudRate) {
  2. ANSELDCLR = 0xFFFF;
  3. CFGCONbits.IOLOCK = 0; // PPS Unlock
  4. RPD11Rbits.RPD11R = 3; // Assign RPD11 as U1TX
  5. U1RXRbits.U1RXR = 3; // Assign RPD10 as U1RX
  6. CFGCONbits.IOLOCK = 1; // PPS Lock
  7.  
  8. // Baud related stuffs.
  9. U1MODEbits.BRGH = 1; // Setup High baud rates.
  10. unsigned long int baudRateDivider = ((GetSystemClock()/(4*baudRate))-1);
  11. U1BRG = baudRateDivider; // set BRG
  12.  
  13. // UART Configuration
  14. U1MODEbits.ON = 1; // UART1 module is Enabled
  15. U1STAbits.UTXEN = 1; // TX is enabled
  16. U1STAbits.URXEN = 1; // RX is enabled
  17.  
  18. // UART Rx interrupt configuration.
  19. IFS1bits.U1RXIF = 0; // Clear the interrupt flag
  20. IFS1bits.U1TXIF = 0; // Clear the interrupt flag
  21.  
  22. INTCONbits.MVEC = 1; // Multi vector interrupts.
  23.  
  24. IEC1bits.U1RXIE = 1; // Rx interrupt enable
  25. IEC1bits.U1EIE = 1;
  26. IPC7bits.U1IP = 7; // Rx Interrurpt priority level
  27. IPC7bits.U1IS = 3; // Rx Interrurpt sub priority level
  28. }
  29.  
  30. void __attribute__((vector(_UART_1_VECTOR), interrupt(IPL7SRS), nomips16)) UART1_ISR(void)
  31. {
  32. PORTAbits.RA4 = 1; // LED to indicate the ISR.
  33. char curChar = U1RXREG;
  34. U1TXREG=curChar; // Echo back the same character.
  35. while(!U1STAbits.TRMT);
  36. IFS1bits.U1RXIF = 0; // Clear the interrupt flag!
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement