Skip to content

Instantly share code, notes, and snippets.

@superkittens
Created February 27, 2014 05:22
Show Gist options
  • Save superkittens/9244847 to your computer and use it in GitHub Desktop.
Save superkittens/9244847 to your computer and use it in GitHub Desktop.
// main.c
// External HS XT Config bits
_FOSC( POSCMD_HS & OSCIOFNC_OFF );
_FOSCSEL( FNOSC_PRI & IESO_OFF );
_FWDT( FWDTEN_OFF );
int i = 0;
int main(int argc, char** argv) {
OSCCONbits.COSC = 0b010; // HSXT no PLL
OSCCONbits.CLKLOCK = 1;
OSCCONbits.IOLOCK = 1;
CLKDIVbits.ROI = 0;
CLKDIVbits.DOZE = 0b000;
CLKDIVbits.DOZEN = 1;
setupUART(); // In separate source file. See below after "..."
while(1);
return (EXIT_SUCCESS);
}
void __attribute__(( __interrupt__, __auto_psv__ )) _U1TXInterrupt( void ){
IFS0bits.U1TXIF = 0; // Clear interrupt flag
U1TXREG = 'b';
}
...
// Separate source file
#define FCY 8000000
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
int setupUART(){
//brgValue = ( FCY / ( 16 * baudRate )) - 1;
U1MODEbits.UARTEN = 0;
U1STAbits.UTXEN = 0;
U1MODEbits.USIDL = 0;
U1MODEbits.IREN = 0;
U1MODEbits.RTSMD = 1;
U1MODEbits.UEN = 0b00;
U1MODEbits.WAKE = 0;
U1MODEbits.LPBACK = 0;
U1MODEbits.ABAUD = 0;
U1MODEbits.URXINV = 0;
U1MODEbits.BRGH = 0; // Enable low speed mode
U1MODEbits.PDSEL = 0b00;
U1MODEbits.STSEL = 0;
U1STAbits.UTXISEL1 = 0;
U1STAbits.UTXISEL0 = 0;
U1STAbits.UTXINV = 0;
U1STAbits.UTXBRK = 0;
U1BRG = BRGVAL;
IFS0bits.U1TXIF = 0; // Clear UART interrupt flag
IEC0bits.U1TXIE = 1; // Enable UART interrupts
RPOR7bits.RP15R = 0b000011; // Set UART TX Pin to RP15
U1MODEbits.UARTEN = 1;
U1STAbits.UTXEN = 1;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment