1 |
#ifndef __usart_h__ |
1 |
#ifndef __usart_h__ |
2 |
#define __usart_h__ |
2 |
#define __usart_h__ |
3 |
|
3 |
|
4 |
#include "common.h" |
4 |
#include "common.h" |
5 |
|
5 |
|
6 |
namespace USART0 { |
6 |
namespace USART0 { |
7 |
// setting = f_osc/16/BAUD - 1 |
7 |
// setting = f_osc/16/BAUD - 1 |
8 |
const uint16_t baud9600_8MHz = 51; |
8 |
const uint16_t baud9600_8MHz = 51; |
9 |
const uint16_t baud19200_8MHz = 25; |
9 |
const uint16_t baud19200_8MHz = 25; |
10 |
const uint16_t baud57600_8MHz = 8; |
10 |
const uint16_t baud57600_8MHz = 8; |
11 |
const uint16_t baud19200_6_14MHz = 19; |
11 |
const uint16_t baud19200_6_14MHz = 19; |
12 |
const uint16_t baud38400_6_14MHz = 9; |
12 |
const uint16_t baud38400_6_14MHz = 9; |
13 |
const uint16_t baud19200_6_5MHz = 20; |
13 |
const uint16_t baud19200_6_5MHz = 20; |
14 |
const uint16_t baud38400_6_5MHz = 10; |
14 |
const uint16_t baud38400_6_5MHz = 10; |
15 |
const uint16_t baud57600_6_5MHz = 6; |
15 |
const uint16_t baud57600_6_5MHz = 6; |
16 |
inline uint8_t FastReceiveData(); |
16 |
inline uint8_t FastReceiveData(); |
17 |
inline void Init(uint16_t aBaudSetting) { |
17 |
inline void Init(uint16_t aBaudSetting) { |
18 |
UBRR0 = aBaudSetting; |
18 |
UBRR0 = aBaudSetting; |
19 |
UCSR0A = 0; |
19 |
UCSR0A = 0; |
20 |
FastReceiveData(); // Clear any possible pending input data (to avoid spurious IRQ |
20 |
FastReceiveData(); // Clear any possible pending input data (to avoid spurious IRQ |
21 |
UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0); |
21 |
UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0); |
22 |
UCSR0C = (1 << USBS0) | (3 << UCSZ00); |
22 |
UCSR0C = (1 << USBS0) | (3 << UCSZ00); |
23 |
} |
23 |
} |
24 |
void SendData(uint8_t aData); |
24 |
void SendData(uint8_t aData); |
25 |
uint8_t ReceiveData(); |
25 |
uint8_t ReceiveData(); |
26 |
inline void FastSendData(uint8_t aData) { |
26 |
inline void FastSendData(uint8_t aData) { |
27 |
UDR0 = aData; |
27 |
UDR0 = aData; |
28 |
} |
28 |
} |
29 |
inline uint8_t FastReceiveData() { |
29 |
inline uint8_t FastReceiveData() { |
30 |
return UDR0; |
30 |
return UDR0; |
31 |
} |
31 |
} |
32 |
void SendHexData(uint8_t aData); |
32 |
void SendHexData(uint8_t aData); |
33 |
void SendHexData(uint16_t aData); |
33 |
void SendHexData(uint16_t aData); |
34 |
void SendHexData(uint32_t aData); |
34 |
void SendHexData(uint32_t aData); |
35 |
void SendHexData(int16_t aData); |
35 |
void SendHexData(int16_t aData); |
36 |
void SendHexData(int32_t aData); |
36 |
void SendHexData(int32_t aData); |
37 |
void SendString(const char *aString); |
37 |
void SendString(const char *aString); |
38 |
void SendPGString(const char *aString); |
38 |
void SendPGString(const char *aString); |
39 |
} |
39 |
} |
40 |
|
40 |
|
41 |
#endif // __usart_h__ |
41 |
#endif // __usart_h__ |