95 lines
1.7 KiB
C
95 lines
1.7 KiB
C
#include "helpers_uart.h"
|
|
|
|
|
|
|
|
void USART0_init(void) {
|
|
PORTA.DIR &= ~PIN1_bm;
|
|
PORTA.DIR |= PIN0_bm;
|
|
|
|
USART0.BAUD = (uint16_t) USART0_BAUD_RATE(9600);
|
|
USART0.CTRLB |= USART_TXEN_bm;
|
|
}
|
|
|
|
void USART0_sendChar(char c) {
|
|
while (!(USART0.STATUS & USART_DREIF_bm)) {
|
|
;
|
|
}
|
|
USART0.TXDATAL = c;
|
|
}
|
|
|
|
|
|
|
|
|
|
void USART0_sendString(const char *str) {
|
|
for (size_t i = 0; i < strlen(str); i++) {
|
|
USART0_sendChar(str[i]);
|
|
}
|
|
}
|
|
|
|
void uart_print_uint16(uint16_t meas, const char* buf) {
|
|
|
|
sprintf(array, "%u", meas);
|
|
USART0_sendString(" ");
|
|
USART0_sendString(array);
|
|
USART0_sendString(" ");
|
|
USART0_sendString(buf);
|
|
|
|
}
|
|
|
|
void uart_print_float(float meas, const char* buf) {
|
|
dtostrf(meas, 3, 4, array);
|
|
USART0_sendString(" ");
|
|
USART0_sendString(array);
|
|
USART0_sendString(" ");
|
|
USART0_sendString(buf);
|
|
|
|
}
|
|
|
|
|
|
void uart_print_bool(bool din, const char* buf)
|
|
{
|
|
USART0_sendString(" ");
|
|
if (din)
|
|
{
|
|
USART0_sendString("TRUE ");
|
|
} else
|
|
{
|
|
USART0_sendString("FALSE");
|
|
}
|
|
USART0_sendString(" ");
|
|
USART0_sendString(buf);
|
|
|
|
}
|
|
|
|
void uart_print_binary(unsigned char vin, const char* buf) {
|
|
|
|
USART0_sendString(" ");
|
|
|
|
int binary[9];
|
|
for (int n = 0; n < 8; n++)
|
|
binary[7 - n] = (vin >> n) & 1;
|
|
|
|
|
|
char str[1];
|
|
for (int n = 0; n < 8; n++) {
|
|
sprintf(str, "%d", binary[n]);
|
|
USART0_sendString(str);
|
|
}
|
|
|
|
USART0_sendString(" ");
|
|
USART0_sendString(buf);
|
|
|
|
}
|
|
|
|
void uart_print_uint8(uint8_t vin, const char* buf) {
|
|
|
|
USART0_sendString(" ");
|
|
sprintf(array, "%u", vin);
|
|
|
|
USART0_sendString(array);
|
|
USART0_sendString(" ");
|
|
USART0_sendString(buf);
|
|
|
|
}
|
|
|