48 lines
844 B
C
48 lines
844 B
C
#include "iom32.h"
|
|
#include "uart.h"
|
|
|
|
#define F_CPU 16777216
|
|
|
|
void uart_send_byte(char data)
|
|
{
|
|
while (!(UCSRA & (1 << UDRE))) {
|
|
;
|
|
}
|
|
UDR = data;
|
|
}
|
|
|
|
void uart_send_string(char *string)
|
|
{
|
|
for(; *string!='\0'; string++) {
|
|
uart_send_byte(*string);
|
|
}
|
|
}
|
|
|
|
unsigned char uart_receive(void)
|
|
{
|
|
while (!(UCSRA & (1 << RXC))) {
|
|
;
|
|
}
|
|
return UDR;
|
|
}
|
|
|
|
int putchar(int data)
|
|
{
|
|
uart_send_byte(data);
|
|
}
|
|
|
|
void uart_init(unsigned int baudrate)
|
|
{
|
|
unsigned int tmp;
|
|
tmp = F_CPU / baudrate / 16 - 1;
|
|
|
|
/* Set baud rate */
|
|
UBRRH = (unsigned char)(tmp >> 8);
|
|
UBRRL = (unsigned char)tmp;
|
|
/* Enable receiver and transmitter, enable receive interrupt */
|
|
UCSRB = (1 << RXCIE) | (1 << RXEN) | (1 << TXEN);
|
|
/* 8bit, 1 stopbit */
|
|
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1<< UCSZ0);
|
|
}
|
|
|