ATNEL tech-forum https://forum.atnel.pl/ |
|
Dziwne zachowanie obsługi USART_RXC_vect https://forum.atnel.pl/topic8207.html |
Strona 1 z 1 |
Autor: | JanuszT [ 20 sie 2014, o 21:41 ] |
Tytuł: | Dziwne zachowanie obsługi USART_RXC_vect |
Witam Mam problem, i liczę, że może zechcecie mi pomóc. Otóż napisałem sobie prosty programik do komunikacji z PC przez UART. Działanie polega na "dawaniu echa", czyli program odsyła do PC to, co zostało mu wysłane i jednoczesnym miganiu diodą LED co 1s. Program działa (i to nawet "na przerwaniach" ). Kod działającego ISR to: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Zwracam uwagę na znaki komentarza w linii 5. W ramach dalszych działań postanowiłem, aby po otrzymaniu małej litery program odsyłał wielką. No i zima . Kod ISR to: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Różnica w stosunku do poprzedniego to linia 5, która tym razem nie jest komentarzem. Po tej zmianie program, zamiast grzecznie odpowiadać zaczął wysyłać po dwa znaki, w dodatku żadem z nich nie jest tym właściwym. Cały kod programu (celowo wpisany do jednego pliku dla łatwiejszego czytania) to: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jest w nim w zasadzie tylko inicjalizacja portów, Timera 1 i UART-u, a potem pusta pętla i procedury obsługi ISR. Ponieważ z pierwszą wersją ISR komunikacja działa, więc nie mam wątpliwości odnośnie podłączenia, prędkości itp. łącze na pewno działa i jest dwukierunkowe. Nie rozumiem, dlaczego nie działa w sposób oczekiwany druga wersja ISR. Procesor to ATmega32, taktowanie wewnętrzne 8MHz, Eclipse Indigo, przejściówka na USB (ATB1.03). Będę bardzo wdzięczny za podpowiedzi. Pozdrawiam |
Autor: | mirekk36 [ 20 sie 2014, o 22:00 ] |
Tytuł: | Re: Dziwne zachowanie obsługi USART_RXC_vect |
Zapewniam cię, że ten twój kod łącznie z linią nr.5 czyli zamianą na DUŻE litery musi działać dobrze, Ba! ... on działa dobrze ------------------------ [ Dodano po: 2 minutach ] ale jak działasz na 8MHz to szczególnie zajrzyj tutaj: http://mirekk36.blogspot.com/2013/01/rs ... trick.html jak obliczać UBRR masz tam pokazany gotowy przykład: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ------------------------ [ Dodano po: 3 minutach ] Przełącz się też na chwilę na zewn kwarc w ATB, 11,0592MHz dla upewnienia się że nie chodzi o brak kalibracji w procku |
Autor: | JanuszT [ 20 sie 2014, o 22:55 ] |
Tytuł: | Re: Dziwne zachowanie obsługi USART_RXC_vect |
Witam No coż...DZIĘKUJĘ. Kod rzeczywiście działa , problemem rzeczywiście było obliczanie wartości dla rejestrów UBRRH i UBRRL . Pozdrawiam P.S. A teraz dodam jeszcze coś...DZIĘKUJĘ . |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |