59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
|
||
#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,
|
||
}
|
||
|