summaryrefslogtreecommitdiffstats
path: root/hal/uart1.tpp
diff options
context:
space:
mode:
Diffstat (limited to 'hal/uart1.tpp')
-rw-r--r--hal/uart1.tpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/hal/uart1.tpp b/hal/uart1.tpp
new file mode 100644
index 0000000..a8a32f0
--- /dev/null
+++ b/hal/uart1.tpp
@@ -0,0 +1,45 @@
+/*
+ * File: uart.cpp
+ * Author: naopross
+ *
+ * Created on May 2, 2018, 7:05 PM
+ */
+
+#include "uart.hpp"
+
+extern "C" {
+#include <proc/p32mx470f512h.h>
+#include <sys/attribs.h>
+}
+
+
+void __ISR(_UART_1_VECTOR, IPL1AUTO) usart_1_isr()
+{
+ if (IFS1bits.U1RXIF) {
+ uart::rx_buffer[0].push_back(static_cast<uint8_t>(U1RXREG));
+ }
+}
+
+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;
+ }
+} \ No newline at end of file