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



Teraz jest 10 lip 2025, o 18:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 2 maja 2016, o 19:59 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Szanowni Forumowicze,
mam pytanie odnośnie połączenia Atmegi32 za pomocą UART do komputera. Chciałbym sobie przyswoić UARTa i pogadać z komputerem przy jego pomocy, ale nie mam portu szeregowego. Dostałem jednak taki układ: MMUSB232 (DS w załączniku), to jest emulator portu szeregowego na USB. I tu moje pytanie: czy jedyne co muszę zrobić to skonfigurować UART w mikrokontrolerze i wpiąć w ten układ RxD i TxD żeby podejrzeć na komputerze w terminalu co wysyłam z procesora?

Proszę uprzejmie o wskazówki i pozdrawiam,
Dawid.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 20:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Oby skorzystać, musisz podpiąć do przejściówki piny RX i TX oraz GND.
Tylko pamiętaj aby podłączyć TX przejściówki z RX na procesorze i tak samo RX do TX.

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 20:30 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

No dobra, to rozumiem. Mam przed oczami schemat, w którym użyty jest ten układ i tam oprócz RxD i TxD jest podłączony do uP (do przerwania INT0) jeszcze pin nr 4. Za DS MMUSB232: "Zezwala na transmisje danych dla RS485". Czy użycie tego pinu jest konieczne?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 20:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

W przejściówce masz układ FT232B, który ma znacznie więcej wyprowadzeń, które można wykorzystać do różnych celów. Producent przewidział między innymi możliwość korzystania z RS485 (poprzez konwerter). A RS485 wykorzystuje te same linie do nadawania i odbierania, dlatego potrzebne jest przełączanie.

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 3 minutach ]

Z opisu wynika że musisz jeszcze odpowiednio podciągnąć pin RST:
Cytuj:
Może by użyte przez urządzenie zewnętrzne do resetu układu, gdy jest niewykorzystane, musi by podpięte do VCC


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 20:57 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Dobra, jasna sprawa :) Mam jeszcze pytanie czy znasz jakiś godny polecenia kurs/artykuł o UARCIE wraz z biblioteką? Szukam w internecie i nie mogę znaleźć nic kompleksowego. Dodam tylko, że Green Book Mirka w drodze, ale jeszcze na niego trochę poczekam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 21:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Materiałów w sieci jest mnóstwo - np.:

http://www.piekary.net/~jermi/datasheet ... bsluga.pdf

Pamiętaj, że w swojej przejściówce nie masz napięć zgodnych z RS232 (+/-12V) tylko RS232 TTL (0-5V).

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 1 minucie ]

To, że masz RS232 TTL powoduje, że nie musisz stosować konwertera typu MAX232.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 21:40 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Właśnie miałem pytać o to, czy to źle, że mam zakres napięć TTL :) Jak wygląda sprawa z kwarcami? Czy korzystając z UARTa muszę koniecznie użyć zewnętrznego kwarcu o częstotliwości przystosowanej do dzielenia przez preskaler?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 21:53 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Zależy jakich prędkości transmisji chcesz używać, jak dużo danych przesyłać i jaką stopę błędów dopuszczasz.
Kwarce (te uartolubne) na pewno lepsze, do testów starczy osc. wewnętrzny.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 22:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Cytuj:
Właśnie miałem pytać o to, czy to źle, że mam zakres napięć TTL :)
Nie ma jednoznacznej odpowiedzi, czy to dobrze. Jak zamierzasz tylko podłączać do mikrokontrolerów lub tego typu układów to lepiej. Jak chciałbyś wykorzystywać ją jako przejściówkę USB-RS232 do wszelkiego rodzaju sprzętu (np. jakieś urządzenia automatyki przemysłowej) to będziesz musiał dodać konwersję napięć do właściwego RS232 (dodać układ MAX232). Atnel sprzedaje najbardziej uniwersalną (RS232, RS232TTL, RS485, programator ISP) tego typu przejściówkę ATB-USB-RS232 (http://www.atnel.pl/atb-usb-rs232.html) - wszystko oparte na trochę nowszym układzie niż u Ciebie (FT232R).

Cytuj:
Jak wygląda sprawa z kwarcami? Czy korzystając z UARTa muszę koniecznie użyć zewnętrznego kwarcu o częstotliwości przystosowanej do dzielenia przez preskaler?
Musisz tak dobrać kwarc lub prędkość transmisji by błąd nie przekroczył 2%. W datasheetcie do procesora w sekcji UART są takie tabelki pokazujące wartości UBRR i błąd dla różnych częstotliwości taktowania.
Obrazek

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Zajrzyj do zakładki w mkAVRCalculkator-- Narzędzia-UART/USART Calculator. Wybierz odpowiednie taktowanie i prędkość przesyłania danych. To co wyświetlane jest na czerwono omijaj z daleka. Im błąd bliżej 0% tym lepiej. Przy taktowaniu 8MhZ z wewnętrznego kwarcu można przeprowadzić transmisje nawet przy większych wahaniach temperatury. Uruchom program testowy na wewn.rezonatorze 8MH i wysyłaj dane do komputera jednocześnie podgrzewając i oziębiając procesor(w rozsądnych temperaturach) i sprawdź przekłamania w odbiorze danych. Co prawda można to kalibrować przy pomocy rejestru OSSCAL(str 30 dokumentacji.Dokładny opis i program w BB Lekcja 07_UART) ale lepiej wypróbuj bez zmian.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 22:49 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Dziękuję za wszystkie powyższe odpowiedzi :) Czyli 0-5V mi wystarczy, nie przewiduję większych urządzeń automatyki przemysłowej, jedynie AVR <-> PC.
Dario dziękuję za wskazówkę, test przeprowadzę.
Mam jeszcze takie pytanie - oglądając DS tego układu MMUSB232 zauważyłem, że są tam chyba wszystkie piny obecne w klasycznej wtyczce RS232, jednakże aby skomunikować PC i AVRa wystarczy GND, TxD oraz RxD. Czemu reszty nie trzeba wykorzystywać?

I jeszcze jedno - w której książce p. Mirek pisze bibliotekę do UARTa krok po kroku?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 23:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Popatrz na tabelę Sygnały w PC w poniższym linku. Jest ich sporo jednak do komunikacji z procesorem wystarcza tylko te które wymieniłeś reszta służy do komunikacji między modemami i innymi ciekawymi urządzeniami o których mam mgliste pojęcie ;)
Pozdrawiam
https://pl.wikipedia.org/wiki/RS-232

------------------------ [ Dodano po: 33 minutach ]

Cytuj:
I jeszcze jedno - w której książce p. Mirek pisze bibliotekę do UARTa krok po kroku?


Jako dobry nauczyciel....w obu. A to dlatego że przechodzi z nauki alfabetu do płynnego czytania i pisania. Jeżeli chcesz się zając programowaniem procesorów to warto zainwestować. Biblioteki zawarte w obu częściach zaoszczędzą Ci sporo czasu. A dokładny ich opis w książkach pozwoli na zrozumienie wszystkich tajemnic ich pisania.
Zabrzmiało pompatycznie ale taka prawda.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 23:52 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

BB używałem i rzeczywiście przyjemnie się korzystało, teraz zamówiłem GB.
Mam jeszcze pytanie odnośnie modułu MMusb232 - czy aby poprawnie go zainstalować na komputerze powinienem wykonać tzw. minimalne podłączenie wszystkich niezbędnych pinów, czyli masa, zasilanie itd. wymagane przez DS czy jak go podłączę na szybko przez USB to też będzie dobrze?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 00:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Podłączasz go za pomocą kabla USB. Jedynie co musisz zrobić to zainstalować sterowniki. Znajdziesz je na głównej stronie Atnel w zakładce Elektronika albo na stronie producenta układów FTDI. Na str.7 opisana jest metoda zasilania układu. Albo ze źródła USB albo z zewnętrznego zasilacza. Musisz zwrócić uwagę na prąd pobierany przez układ programujący. Jest to opisane w instrukcji. A piny TX , RX i GND do procesora zgodnie z z uwagami rskup'a. Dużo przyjazne przejściówki znajdziesz na allego http://allegro.pl/konwerter-usb-rs232-f ... 82990.html (to tylko przykład) gdzie wyprowadzone są tylko te piny które potrzebujesz.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 00:26 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Z prądem pobieranym przez układ programujący chodzi o to żeby nie przekroczyć max. prądu wyjściowego portu USB?
Czyli do prawidłowego podłączenia potrzebuję podłączyć odpowiednio piny w zależności od rodzaju zasilania (z usb/zewn.), czy tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 09:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Jeżeli zasilasz układ z portu USB poprzez przejściówkę musisz uważać na maksymalny prąd który możesz "pociągnąć" z portu USB.Dokładnie jak piszesz. Jeżeli masz zasilacz zewnętrzny to prąd zależy tylko od jego wydajności. Resztę łączysz jak w opisie powyżej. I pamiętaj ze z USB masz 5V. Jeżeli układ wymaga innych napięć np 3V musisz zadbać o jego redukcję.

------------------------ [ Dodano po: 8 minutach ]

Dokładnie przeczytaj str.7 instrukcji.Jest tam wszystko dokładnie opisane


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 14:09 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Podłączyłem wg schematu na str. 7:
Obrazek

RxD i TxD scrossowane przy podłączaniu do atmegi8A.

Napisałem program przy pomocy jednego z internetowych poradników i próbowałem podejrzeć na terminalu. Niestety same krzaki. Oto kod programu:
Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Podłączenia sprawdzałem dwa razy, ustawienia MMUSB w panelu sterowania zgodne z tym co w programie, w Realterm również. Niestety tylko krzaki. Co może być nie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 16:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Skoro masz krzaki to coś działa tylko nie dogaduje się terminal z procesorem. Podłączenie wydaje się poprawne. Musisz sobie sprawdzić czy kwarc który masz przy procesorze ewentualnie częstotliwość wewnętrznego oscylatora którego musiałeś zdefiniować pozwala na transmisję 9600 bez błędów.Tabelę do obliczeń znajdziesz w mkAvrCalculator. Tego kodu nie jestem w stanie przetestować więc się nie wypowiem.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 16:38 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Ruszyło trochę do przodu, ale mały niedosyt pozostał :) Otóż:
- przede wszystkim włożyłem inny kwarc niż wpisałem w opcjach projektu (sic!);
- po zmianie kwarcu na poprawny w terminalu pokazały się znaki zapytania;
- dodałem bibliotekę libprintf_flt.a oraz w opcjach linkera dodałem "Use vprintf library";
- wyświetlało się już coś, co nadaje się do czytania i mogłem wysyłać liczby do atmegi, która potem zwracała na UART wynik obliczeń, nawet poprawny wynik :P

Co nie działa dalej? Otóż przy podłączeniu powinienem widzieć stringa z wzorem funkcji, której wartość obliczam w programie. O to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jednakże to się nie pojawia w ogóle. Co może być tego powodem?

------------------------ [ Dodano po: 10 minutach ]

I mam jeszcze takie dwa pytania:
- czy przez Putty mogę wysyłać dane? Na razie widzę tylko odbiór.
- wiem jak wysłać liczbę przez Realterm (tam w zakładce Send wpisuję liczbę); jednakże jak jestem w Putty albo w Realtermie poza zakładką Send to wciskając dowolny klawisz na klawiaturze terminal zwraca mi jakieś dziwne liczby - moje pytanie: czy terminal zwraca mi wartość programu dla wartości ASCII wciśniętego klawisza?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 17:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2014
Posty: 31
Pomógł: 9

Skoro atmega zwraca na UART coś co wygląda OK to znaczy że usart_bufor ze wzorem nie jest wysłany do bufora USART procesora. I to że nic się nie pojawia to chyba dobrze skoro procek ma "nic" do wysłania.Tak to przynajmniej wygląda z opisu. Co do Putty. Oglądnij poradnik Mirka https://www.youtube.com/watch?v=r3K-CcOnkJ4 może Ci się coś rozjaśni. W drugiej minucie opisuje co i jak. Osobiście korzystam z Realterm chociaż Putty też dobrze działa.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 19:19 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

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


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

jednak i to nie wysyła mi tekstu. Jak mogę zmienić kod żeby wysłać ten wzór funkcji?



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO