Witam
Do wysyłanie znaków używam takiego kodu:
Nie potrzebuję jakichś super szybkości itd, więc w zupełności mi to wystarcza. I taki kod jak powyżej działa poprawnie, na kompie odbieram znaczki 'PE'. Gdy tesuje wejście PINC.2 i w zależności od stanu zapalam lub gaszę diodkę na innym porcie, także wszystko działa poprawnie. Natomiast gdy od stanu na PINC.2 chcę uzależnić jaki znak ma być wysłany:
Wtedy coś zaczyna szwankować, i nie odbieram na kompie porządanych znaków :/
Nie mam p[ojęcia co może być nie tak. Z góry dziękuję za jakąkolwiek pomoci sugestie.
Do wysyłanie znaków używam takiego kodu:
#define C_GPI_1 (1<<2)
UCSRB |= 1<<RXEN | 1<<TXEN; // transmisja: 8N1
UBRRL = 51; //9600 błąd 0.2% przy zegarze 8MHz
TData[0] = 'P';
TData[1] = 'E';
for(int i=0; i<2; i++)
{
UDR = TData[i];
while( (UCSRA & 0x40) == 0 )
{}
UCSRA |= 0x40;
}Nie potrzebuję jakichś super szybkości itd, więc w zupełności mi to wystarcza. I taki kod jak powyżej działa poprawnie, na kompie odbieram znaczki 'PE'. Gdy tesuje wejście PINC.2 i w zależności od stanu zapalam lub gaszę diodkę na innym porcie, także wszystko działa poprawnie. Natomiast gdy od stanu na PINC.2 chcę uzależnić jaki znak ma być wysłany:
if( (PINC & C_GPI_1) == 1 ) //jeśli PINC.2 ustawiony
TData[0] = 'I';
else
TData[0] = 'O';
//tutaj pętelka for jak w powyższym kodzie - do wysłania 2 znaków
Wtedy coś zaczyna szwankować, i nie odbieram na kompie porządanych znaków :/
Nie mam p[ojęcia co może być nie tak. Z góry dziękuję za jakąkolwiek pomoci sugestie.