Witam
Mam problem z odbieraniem wiecej niż jednego bajta w USART, korzystam z przerwań.
Petla główna wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
konfiguracja przerwania:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
konfiguracja USARTA
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
przerwanie :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w terminalu wpisuje
język bash
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W tym momencie w debuggerze widzę że wchodzi mi do przerwania, odczytuje pierwszą cyfre /*1*/, zapala diode /*2*/, natomiast po przejściu tej pętli, i wejściu do przerwania jeszcze raz if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) pokazuje RESET.
We wnętrzu funkcji problem występuje w lini bitpos &= USARTx->ISR; w tym momencie jest tak że
"USARTx->ISR" 0b11000000000000011011000
"bitpos" 0b100000
w Reference manual
https://www.google.pl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.st.com%2Fweb%2Fen%2Fresource%2Ftechnical%2Fdocument%2Freference_manual%2FDM00031936.pdf&ei=h6_IVPyVOdXzauvcgdgP&usg=AFQjCNF9ugmbHfuVEZ4HCkzIzQnK7lfdhg&sig2=Teiux6Zq3cUDElDfYzYh2Ana stronie 732 jest napisane wyraźnie że:
Bit 6 TC: Transmission complete
0: Transmission is not complete
1: Transmission is complete
tylko dlaczego ma mieć to na wpływ odbieranie skoro to się tyczy transmisji?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
nie powinno być tak?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
------------------------ [ Dodano po: 18 minutach ]Aaaaa przepraszam zamuliłem, ustawiłem tak breakpointa ze mi się zawieszał w przerwaniu ;/
Debugowanie Uarta eh...