Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 09:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 20 sie 2014, o 21:41 
Offline
Użytkownik

Dołączył(a): 13 maja 2014
Posty: 135
Pomógł: 11

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2014, o 22:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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 postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2014, o 22:55 
Offline
Użytkownik

Dołączył(a): 13 maja 2014
Posty: 135
Pomógł: 11

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Ę .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 11 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO