-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathuart.c
81 lines (68 loc) · 1.82 KB
/
uart.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* uart.c
*
* Created: 2020-03-03 21:20:00
* Author: 2AM PULLUPS
*/
#include "uart.h"
volatile usart0_t *usart0 = (volatile usart0_t *) UCSR0A_OFFSET;
volatile usart1_t *usart1 = (volatile usart1_t *) UCSR1A_OFFSET;
void usart1_init() {
usart1_set_baudrate();
usart1->tx_enable = TRUE;
usart1->rx_enable = TRUE;
usart1->rx_complete_int_enable = FALSE; //TRUE;
usart1->multi_processor_mode = FALSE; //TRUE;
usart1->nbr_stop_bits = USART_STOP_BITS_2; // 0
usart1->nbr_data_bits_c = USART_8_BITS_C; // 0
}
void usart1_set_baudrate()
{
UBRR1 = UBBR1_VAL;
}
void usart0_tx_data(uint8_t data)
{
while (usart0->data_register_empty_flag == 0); // Wait for empty transmit buffer
UDR0 = data; // Put data into buffer, sends the data
}
void usart0_tx_char(char ch)
{
while (usart0->data_register_empty_flag == 0); // Wait for empty transmit buffer
UDR0 = ch; // Put data into buffer, sends the data
}
void usart0_tx_string(char *string)
{
while(*string != 0x00) usart0_tx_char(*string++);
}
void usart0_set_baudrate(int baud)
{
UBRR0 = UBBR0_VAL;
}
void usart1_tx_data(uint8_t data)
{
while (usart1->data_register_empty_flag == 0); // Wait for empty transmit buffer
UDR1 = data; // Put data into buffer, sends the data
}
void usart1_tx_char(char ch)
{
while (usart1->data_register_empty_flag == 0); // Wait for empty transmit buffer
UDR1 = ch; // Put data into buffer, sends the data
}
void usart1_tx_string(char *string)
{
while(*string != 0x00) usart1_tx_char(*string++);
}
void usart1_send_uint8_as_ascii_string(uint8_t val)
{
char string[4];
itoa(val, string, 10);
usart1_tx_string(string);
usart1_tx_data(END_OF_TX_CHAR);
}
void usart1_send_uint16_as_ascii_string(uint16_t val)
{
char string[6];
itoa(val, string, 10);
usart1_tx_string(string);
usart1_tx_data(END_OF_TX_CHAR);
}