Gast
#687790
Hallo Leute!
ich habe ein problem mit meiner USART-Routine.
Ich benutze einen ATmega128 in GCC!
Im Hauptprogramm warte ich auf eine Eingabe, bei der ersten Eingabe(zb.
ein 'a') bekomme ich eine 0 übertragen, bei der zweiten eingabe bekomme
ich jetzt den asci-wert für das a übertragen. Also einen durchlauf zu
spät... warum das ganze????
Auszug aus der Main
UDR0=USART_Recieve();
if(UDR0=='a'){send_string("fhohfkloljladjl");}
char uu;
uu=UDR0;
//itoa(uu, Buffer,10);
//----------------------------------------------------------------------
--
// Funktion - USART INIT
//----------------------------------------------------------------------
void USART_Init()
{
UCSR0C |=
(0<<USBS)|(1<<UCSZ01)|(1<<UCSZ00)|(0<<UPM01)|(0<<UPM00)|(0<<UMSEL);
//USBS=1: Asynchron, UCSZ=11: 8 bit,
//BAUD RATE = 9600 bei f_osc = 10 MHZ, aus Tabelle in Datenblatt
UBRR0L = 64;
UCSR0B |= (1<<TXEN1)|(1<<RXEN1); //UART TX einschalten
(transmitter)
}
//----------------------------------------------------------------------
--
// Funktion - USART Empfangsfunktion
//----------------------------------------------------------------------
unsigned char USART_Recieve(void)
{
/* Wait for data to be recieved */
while (!(UCSR0A & (1<<RXC0)))
{wdt_reset();}
/* Get and return recieved data from buffer */
return UDR0;
}
WAS MACHE ICH FALSCH......hab das gefühl.....mir ist ein dummer Fehler
passiert....weiss nur nicht wo und welcher!