/* * File: uart.cpp * Author: naopross * * Created on May 2, 2018, 7:05 PM */ #include "uart.hpp" extern "C" { #include #include } void __ISR(_UART_1_VECTOR, IPL1AUTO) usart_1_isr() { if (IFS1bits.U1RXIF) { uart::rx_buffer[0].push_back(static_cast(U1RXREG)); IFS1bits.U1RXIF = 0; } else if (IFS1bits.U1TXIF) { IFS1bits.U1TXIF = 0; } } namespace uart { template<> void initialize<1>() { // STSEL 1S; IREN disabled; PDSEL 8N; RTSMD disabled; RXINV disabled; SIDL disabled; WAKE disabled; ABAUD disabled; LPBACK disabled; BRGH enabled; UEN TX_RX; ON enabled; U1MODE = 0x8008; // UTXISEL TX_ONE_CHAR; UTXINV disabled; ADDR 0; URXEN disabled; OERR disabled; ADM_EN disabled; URXISEL RX_ONE_CHAR; UTXBRK disabled; UTXEN disabled; ADDEN disabled; U1STA = 0x0; // U1TXREG 0; U1TXREG = 0x0; // BaudRate = 9600; Frequency = 1000000 Hz; BRG 25; U1BRG = 0x19; IEC1bits.U1RXIE = 1; U1STAbits.UTXEN = 1; U1STAbits.URXEN = 1; //Enabling UART U1MODEbits.ON = 1; } }