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



Teraz jest 2 gru 2024, o 11:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 9 lut 2016, o 20:01 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Dobry wieczór,

Postanowiłem zająć się komunikacją UART, którą chciałbym wykorzystać wkrótce w komunikacji Bluetooth. W oczekiwaniu aż przyjdzie do mnie sam moduł bluetooth, postanowiłem spróbować skomunikować ze sobą dwie atmegi - atmega16 oraz atmega168. Pierwsza z wymienionych to transmiter, a druga to odbiorca. Oba mikrokontrolery działają z częstotliwością 8MHz (wewnętrzny zegar). Komunikacja ustawiona jest na 9600 baud, 8 bitów danych, 2 bity stopu, brak bitu parzystości.

Program ma działać tak, że każde wciśnięcie przycisku podłączonego do atmegi16 zmienia stan diody podłączonej do atmegi168. Oprócz tego druga dioda podłączona jest też do atmegi16 - działa ona tak samo jak ta w atmedze168, czyli zmienia stan przy każdym wciśnięciu przycisku.

Oto programy:

ATMEGA16:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




ATMEGA168:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niestety wciskanie przycisku nie daje żadnego efektu po stronie atmegi168. Poprawnie świeci jedynie dioda podłączona do atmegi16.

Czy wiecie jaka może być przyczyna?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2016, o 20:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

oczywiście skrosowałeś kable ??

RX - TX
TX - RX
GND - GND

??

podglądnij w terminalu czy atmega nr 1 coś wysyła , a atmega nr 2 na coś reaguje z terminala


Autor postu otrzymał pochwałę

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2016, o 21:07 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

kable skrosowałem, masy są połączone (to samo źródło zasilania).

Nie mogę sprawdzić komunikacji w terminalu, bo nie mam układu FT232RL (ale już go zamówiłem).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2016, o 21:47 
Offline
Moderator
Avatar użytkownika

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

Ja bym ci radził zajrzeć do noty PDF procków, szczególnie ATmegi16 .... podpowiedź - sprawdź jak się inicjalizuje prawidłowo tego typu stare procki jak m16. Chodzi wprost o sprawdzenie i porównanie sobie swojego kodu z kodem z noty.

_________________
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: 10 lut 2016, o 09:21 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Oczywiście miał Pan rację. Wystarczyło zmienić jedną linijkę procesu inicjalizacji UART w atmedze16 i teraz już wszystko działa prawidłowo.

Zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie do końca jednak rozumiem z dokumentacji do czego w zasadzie służy ten URSEL.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2016, o 09:35 
Offline
Moderator
Avatar użytkownika

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

W tych starszych prockach dwa rejestry (UBRRH i UCSRC) są współdzielone w pamięci i aby korzystać raz z jednego a raz z drugiego trzeba używać bitu URSEL ;)

czyli, żeby zapis poleciał do UCSRC to trzeba właśnie ustawić ten najstarszy bit na JEDEN

gdy zaś zapisujesz wartość do UBRRH to ten bit zawsze będzie ZEREM bo nie może być tak dużych wartości w UBRRH żeby był zapalony ten bit

ot cała tajemnica

(jak widzisz w nowszych już tego nie ma)


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: 10 lut 2016, o 09:36 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

I teraz już wszystko rozumiem. Dziękuję bardzo za wyjaśnienie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2016, o 11:31 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Jeszcze jedna sprawa. Chciałem sobie napisać bibliotekę UART i napotkałem dziwny problem z fragmentem inicjalizującym UART.
Gdy napiszę ten fragment w sposób następujący:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to program działa poprawnie.

Gdy napisze ten fragment w tej postaci:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

program nie działa poprawnie (nie zachodzi komunikacja, dioda się nie pali na drugim procku).

Wydaje mi się, że oba przedstawione fragmenty kodu dają wynikowo to samo, a jednak okazuje się, że nie. Czy mógłbym prosić o wyjaśnienie, co jest nie tak?

Wspomniany fragment to biblioteka dla atmegi16 (dla atmegi168 jest oddzielna biblioteka, bez bitu URSEL).



//EDIT:

Błąd już się znalazł, okazuje się, że gdy chce się zapisać coś do UCSRC, trzeba ZA KAŻDYM RAZEM zapisywać bit URSEL.
Tak więc zamiast:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


trzeba wpisać:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i już wszystko jest w porządku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2016, o 16:11 
Offline
Moderator
Avatar użytkownika

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

No dokładnie o tym wcześniej mówiłem ;) ... bez ustawionego bitu twoje dane trafiają do UBRRH

_________________
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: 10 lut 2016, o 16:43 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Myślałem, że ten bit wystarczy ustawić raz i później można już swobodnie manipulować rejestrem UCSRC, a okazało się, że trzeba za każdym razem ten bit ustawiać.

A jeszcze zapytam z ciekawości: nazwałeś atmege16 starym mikrokontrolerem. Jaki model atmegi jest nową wersją tego procesora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2016, o 16:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

widzisz zabytkowe Atmegi to:
Atmega8 , 16, 32, 128 .....

zaś następcy nowocześniejsi na miarę czasów (o ile tak to można nazwać bo w sumie są , ale za wiele nie wnoszą) to:

w przypadku atmegi8 : atmega88,168,328 -- no atmega8A
w przypadku atmegi16: atmega 164, 324, 644, 1284 ......

jak widzisz sporo jest następców zgodnych pinowo i o lepszym wyposażeniu ... :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



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: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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