diff options
author | Nao Pross <naopross@thearcway.org> | 2018-05-04 00:16:36 +0200 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2018-05-04 00:16:36 +0200 |
commit | c3767ac0c6bcb9a1aed1e7b666061f829a371e1f (patch) | |
tree | 36d1339fb999c066f424b8f03707e9a996aff02a /hal/uart1.tpp | |
parent | Defined Heap size (diff) | |
download | SAMLiquidSmoke-c3767ac0c6bcb9a1aed1e7b666061f829a371e1f.tar.gz SAMLiquidSmoke-c3767ac0c6bcb9a1aed1e7b666061f829a371e1f.zip |
Start own HAL implementation based on MCC's generated files
Other changes:
- Undo conversion of MCC files to C++
- Delete old Led implementation
Diffstat (limited to '')
-rw-r--r-- | hal/uart1.tpp | 45 |
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 |