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:
Składnia: [ Pobierz ] [ Ukryj ]
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 :D . Kod ISR to:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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 :D :D, problemem rzeczywiście było obliczanie wartości dla rejestrów UBRRH i UBRRL .
Pozdrawiam :D :D

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/