2009-09-23 16:00:04 +02:00

59 lines
1.8 KiB
C
Raw Permalink Blame History

#include <avr/io.h>
#include "uart.h"
//***********************Funktionen**********************************
void uputc(unsigned char c){ //zeichen senden
while(!(UCSRA & (1<<UDRE))){;} //buffer voll, solange warten bis platz f<>r zeichen !!
UDR=c; //zeichen schreiben
}
//*******************************************************************
void uputs (unsigned char *s){ //string senden
while(*s) uputc(*s++); //sendet zeichenkette, bis ende.. '\0'
}
// *******************************************************************
unsigned char ugetc(void){ //zeichen holen
while (!(UCSRA & (1<<RXC))) {;} // warten bis Zeichen verfuegbar
return UDR; // Zeichen aus UDR an Aufrufer zurueckgeben
}
/*
// *******************************************************************
void ugets(char* Buffer, unsigned char MaxLen){
unsigned char NextChar;
unsigned char StringLen = 0;
NextChar = ugetc(); // Warte auf und empfange das nächste Zeichen
while( NextChar != '\n' && StringLen < MaxLen - 1 ) { //string ende oder puffer voll
*Buffer++ = NextChar;
StringLen++;
NextChar = ugetc();
}
*Buffer = '\0'; //string abschluss
}
*/
//*******************************************************************
void uinit (void){ //init usart Tx, 8n1 ,UDRE interupt enable
UCSRC |= (3<<UCSZ0); // URSEL = 1 dann wird UCSRC benutzt sonst UBRRH ; UCSZ0=data register- 8bit; USBS stop bit 1
//Baudrate (high und low byte)
UBRRH = (unsigned char)(UBRR_VAL>>8);
UBRRL = (unsigned char)UBRR_VAL;
UCSRB |= (1<<TXEN)|(1<<RXEN); // UART TX,RX einschalten, data register empty interrupt enable,
}