Witam,
Podłączyłem port RX i TX USART'a w jedną linie - czyli nadaję i odbieram za pomocą jednej lini (1-Wire)
Teraz proszę o podpowiedz, używam przerwania i bufora 8 bajtowego do odbioru i nadawania i teraz nie wiem co zablokować by wysyłając nie dostać echa z RX'a?
Próbowałem wyłączyć przed wysłaniem możliwość odbioru RXEN i wysłać, ale gdy włączyłem RXEN i chciałem coś odebrać w buforze były już śmieci.
Przerwanie przy RX służy do tego by informować, że w UDR jest dana do odebrania, ale ja jej nie chcę i gdy włączę przerwanie dostaję daną zmagazynowaną w UDR
.
Jak sprawnie przełączać odbiór i nadawanie bez konieczności ingerowania w zawartość bufora i jego licznika?
Robiłem tak:
0. przerwania włączone
1. UCSRB ustawiony na tylko nadawanie
2. wysyłam daną
3. UCSRB przełączam na tylko odbiór
4. czekam na daną po przez przerwanie
i mam śmieci.
Ps.
Mogę tak:
Po tym dostaję w tmp jeden bajt śmieci i czeka prawidłowo na kolejne dane z 1-wire.
Podłączyłem port RX i TX USART'a w jedną linie - czyli nadaję i odbieram za pomocą jednej lini (1-Wire)
Teraz proszę o podpowiedz, używam przerwania i bufora 8 bajtowego do odbioru i nadawania i teraz nie wiem co zablokować by wysyłając nie dostać echa z RX'a?
Próbowałem wyłączyć przed wysłaniem możliwość odbioru RXEN i wysłać, ale gdy włączyłem RXEN i chciałem coś odebrać w buforze były już śmieci.
Przerwanie przy RX służy do tego by informować, że w UDR jest dana do odebrania, ale ja jej nie chcę i gdy włączę przerwanie dostaję daną zmagazynowaną w UDR
Jak sprawnie przełączać odbiór i nadawanie bez konieczności ingerowania w zawartość bufora i jego licznika?
Robiłem tak:
0. przerwania włączone
1. UCSRB ustawiony na tylko nadawanie
2. wysyłam daną
3. UCSRB przełączam na tylko odbiór
4. czekam na daną po przez przerwanie
i mam śmieci.
Ps.
Mogę tak:
UCSRB=0xC8; // Tylko nadawanie z przerwaniami TX i RX
while (count < 5) putchar(send[count++]);
UCSRB=0xD0; // Tylko odbiór z przerwaniami TX i RX
tmp = getchar();
Po tym dostaję w tmp jeden bajt śmieci i czeka prawidłowo na kolejne dane z 1-wire.