Witam!
Mam taki oto kod:
W funkcji main:
Funkcja przerwania:
Zmienne zadeklarowane globalnie:
Problem jest taki, że jak wysyłam RS-em komendę "Wlacz" to wchodzi do odpowiedniego warunku, jeśli jako następną wyślę komendę "Wylacz" to bufor jest równy "ylacz"(połyka gdzieś W). Jeśli pierwszym poleceniem jakie wyślę zaraz po podłączeniu zasilania układu będzie "Wylacz" to W nie jest połknięte. Nie rozumiem czemu przy drugim odbiorze mam w buforze połknięte W?
Mam taki oto kod:
W funkcji main:
while(1)
{
ReadKeypad();
if(!strcmp((const char*)bufferin,"Wlacz"))
{
x=0;
device[1].dev_status=1;
while ( UCSRA & (1<<RXC) ) dummy = UDR;
}
if(!strcmp((const char*)bufferin,"ylacz"))
{
x=0;
device[1].dev_status=0;
while ( UCSRA & (1<<RXC) ) dummy = UDR;
}
}
Funkcja przerwania:
SIGNAL(USART_RXC_vect)
{
bufferin[x]=UDR;
x++;
if(x==32) x=0;
}
Zmienne zadeklarowane globalnie:
volatile char bufferin[32];
volatile uint8_t x;
Problem jest taki, że jak wysyłam RS-em komendę "Wlacz" to wchodzi do odpowiedniego warunku, jeśli jako następną wyślę komendę "Wylacz" to bufor jest równy "ylacz"(połyka gdzieś W). Jeśli pierwszym poleceniem jakie wyślę zaraz po podłączeniu zasilania układu będzie "Wylacz" to W nie jest połknięte. Nie rozumiem czemu przy drugim odbiorze mam w buforze połknięte W?