46 lines
1.7 KiB
C
46 lines
1.7 KiB
C
/* Functions to initialize, send, receive over USART
|
|
|
|
initUSART requires BAUD to be defined in order to calculate
|
|
the bit-rate multiplier.
|
|
*/
|
|
|
|
#ifndef BAUD /* if not defined in Makefile... */
|
|
#define BAUD 9600 /* set a safe default baud rate */
|
|
#endif
|
|
|
|
/* These are defined for convenience */
|
|
#define USART_HAS_DATA bit_is_set(UCSR0A, RXC0)
|
|
#define USART_READY bit_is_set(UCSR0A, UDRE0)
|
|
|
|
/* Takes the defined BAUD and F_CPU,
|
|
calculates the bit-clock multiplier,
|
|
and configures the hardware USART */
|
|
void initUSART(void);
|
|
|
|
/* Blocking transmit and receive functions.
|
|
When you call receiveByte() your program will hang until
|
|
data comes through. We'll improve on this later. */
|
|
void transmitByte(uint8_t data);
|
|
uint8_t receiveByte(void);
|
|
|
|
void printString(const char myString[]);
|
|
/* Utility function to transmit an entire string from RAM */
|
|
void readString(char myString[], uint8_t maxLength);
|
|
/* Define a string variable, pass it to this function
|
|
The string will contain whatever you typed over serial */
|
|
|
|
void printByte(uint8_t byte);
|
|
/* Prints a byte out as its 3-digit ascii equivalent */
|
|
void printWord(uint16_t word);
|
|
/* Prints a word (16-bits) out as its 5-digit ascii equivalent */
|
|
|
|
void printBinaryByte(uint8_t byte);
|
|
/* Prints a byte out in 1s and 0s */
|
|
char nibbleToHex(uint8_t nibble);
|
|
char nibbleToHexCharacter(uint8_t nibble);
|
|
void printHexByte(uint8_t byte);
|
|
/* Prints a byte out in hexadecimal */
|
|
uint8_t getNumber(void);
|
|
/* takes in up to three ascii digits,
|
|
converts them to a byte when press enter */
|