0,0 → 1,65 |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/signal.h> |
|
#include "common.h" |
#include "usart.h" |
|
|
void USART0::SendData(uint8_t aData) { |
while(!TESTBIT(UCSR0A,(1 << UDRE0))); |
UDR0 = aData; |
} |
|
uint8_t USART0::ReceiveData() { |
while(!TESTBIT(UCSR0A,(1 << RXC0))); |
return UDR0; |
} |
|
// a non-exported helper function |
static char MakeHexDigit(uint8_t aDigit) { |
if (aDigit > 9) return 'a'+aDigit-10; else return '0'+aDigit; |
} |
|
void USART0::SendHexData(uint8_t aData) { |
SendData(MakeHexDigit(aData >> 4)); |
SendData(MakeHexDigit(aData & 0x0f)); |
} |
|
void USART0::SendHexData(uint16_t aData) { |
SendHexData((uint8_t)(aData >> 8)); |
SendHexData((uint8_t)(aData & 0xff)); |
} |
|
void USART0::SendHexData(uint32_t aData) { |
SendHexData((uint16_t)(aData >> 16)); |
SendHexData((uint16_t)(aData & 0xffff)); |
} |
|
void USART0::SendHexData(int16_t aData) { |
if (aData < 0) { |
SendData('-'); |
aData = -aData; |
} else { |
SendData(' '); |
} |
SendHexData((uint16_t)aData); |
} |
|
void USART0::SendHexData(int32_t aData) { |
if (aData < 0) { |
SendData('-'); |
aData = -aData; |
} else { |
SendData(' '); |
} |
SendHexData((uint32_t)aData); |
} |
|
void USART0::SendString(const char *aString) { |
while(aString != 0) SendData(*(aString++)); |
} |
|
void USART0::SendPGString(const char *aString) { |
while(aString != 0) SendData(pgm_read_byte(aString++)); |
} |