57 lines
883 B
C
57 lines
883 B
C
|
#include <avr/io.h>
|
||
|
void USARTWriteChar(char data)
|
||
|
{
|
||
|
//Wait until the transmitter is ready
|
||
|
|
||
|
while(!(UCSRA & (1<<UDRE)))
|
||
|
{
|
||
|
//Do nothing
|
||
|
}
|
||
|
|
||
|
//Now write the data to USART buffer
|
||
|
|
||
|
UDR=data;
|
||
|
}
|
||
|
void USARTInit(uint16_t ubrr_value)
|
||
|
{
|
||
|
|
||
|
//Set Baud rate
|
||
|
|
||
|
UBRRL = ubrr_value;
|
||
|
UBRRH = (ubrr_value>>8);
|
||
|
|
||
|
/*Set Frame Format
|
||
|
|
||
|
|
||
|
>> Asynchronous mode
|
||
|
>> No Parity
|
||
|
>> 1 StopBit
|
||
|
|
||
|
>> char size 8
|
||
|
|
||
|
*/
|
||
|
|
||
|
UCSRC=(1<<URSEL)|(3<<UCSZ0);
|
||
|
|
||
|
|
||
|
//Enable The receiver and transmitter
|
||
|
|
||
|
UCSRB=(1<<RXEN)|(1<<TXEN);
|
||
|
|
||
|
|
||
|
}
|
||
|
void UARTWriteString(char* data,int len)
|
||
|
{
|
||
|
int i;
|
||
|
for(i=0;i<len;i++)
|
||
|
{
|
||
|
USARTWriteChar(data[i]);
|
||
|
}
|
||
|
}
|
||
|
uint8_t UART_GETCHAR(void)
|
||
|
{
|
||
|
while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar
|
||
|
;
|
||
|
return UDR; // Zeichen aus UDR an Aufrufer zurueckgeben
|
||
|
}
|