Mam problem z przesłaniem 0x00 przez uart do kompa. Dane inne niż zero w bajcie przesyła dobrze. Mam taki kod:
I mam takie dane przy odbiorze:
Widać, że zamiast 0x00 jest 0xC0, zamiast 0x01 jest 0x81, ale przy 0x11 jest już ok, tak jak przy innych bajtach bez zera np. 0x12, 0xf2 etc. Czasem te złe bajty są inne niż 0x81 czy 0x0C.
Dlaczego?
void uart_init(void)
{
UBRRH = (unsigned char) (ZAWARTOSC_UBRR >> 8); //ustawienie prędkości
UBRRL = (unsigned char) ZAWARTOSC_UBRR;
UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); //8bitowe slowo, bit parzystosci, bit stopu
UCSRB = _BV(RXEN)| _BV(TXEN) | _BV(RXCIE);
}
void uart_wyslij(char znak)
{
while(!(UCSRA & (1 << UDRE)));
UDR = znak;
}
uart_wyslij(0x00);
uart_wyslij(0x01);
uart_wyslij(0x11);I mam takie dane przy odbiorze:
Widać, że zamiast 0x00 jest 0xC0, zamiast 0x01 jest 0x81, ale przy 0x11 jest już ok, tak jak przy innych bajtach bez zera np. 0x12, 0xf2 etc. Czasem te złe bajty są inne niż 0x81 czy 0x0C.
Dlaczego?