Gast
#654181
Hallo zusammen,
ich habe ein Problem mit dem Timing, das denke ich zumindest.
Also ich habe folgendes gemacht:
Wenn keine Daten mehr verfügbar, also alles abgehandelt wurde, dann soll
das Programm die while()- Schleife verlassen, aber da ja am Ende der
while die bedingung für das verlassen abgefragt wird,und knapp davor die
daten abgeholt wurden, ist anscheinen noch kein neues Zeichen
nachgerückt...
ich arbeite dabei mit einer baudrate von 4800.
so ungefähr könnte das meiner meinung nach ablaufen
Es liegen Daten vor
[ H ]allo
Daten abrufen (H wird gelesen, Empfangsbuffer leer)
[ ]allo
Abfrage zum verlassen der while-schleife (buffer = leer, also alle daten
abgeholt)
[ a ]llo (jetzt erst rückt das next zeichen nach, aber schleife wurde
bereits verlassen)
läuft das wirklich so ab? oder liegt mein Problem woanders ?
Das ganze funktioniert ebenso wenig mit dem RX-Complete Interrupt, da
passiert das gleiche....
Ich denke da muss ich mit einer kurzen verzögerung arbeiten und zwar an
der stelle // ## ### ## //
oder kennt jemand eine andere Lösung ??
////////////////////////////////////////////////////
while(1)
{
if((UCSRA & (1<<RXC))) // wenn Zeichen verfuegbar
{
while((UCSRA & (1<<RXC)))
{
uart_putc(Usart_Rx());
// ## ### ## //
}
freshdata=1;
}
else
{
if(freshdata==1)
{
uart_putc('N');
freshdata=0;
}
else
{
}
}
}
////////////////////////////////////////////////////