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



Teraz jest 2 kwi 2026, o 07:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 25 mar 2015, o 12:43 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Witam,

Niestety znów pojawił się problem w moim małym projekcie. Konkretnie - chciałbym, żeby mój mikrokontroler komunikował się z komputerem poprzez port USB, wykorzystując w tym celu FT232R - USB UART (http://allegro.pl/show_item.php?item=5146061986)

Mój mikrokotroler to ATtiny2313-20SU, zgodnie ze schematem podłączyłem linię TX do pinu PD1 i linię RX do pinu PD0, niestety komunikacja nie działała.
Obrazek

Wyczytałem na .... że połączenie powinno być skrosowane więc tak też zrobiłem i od tego momentu nie pojawia się błąd z transmisją do mikrokontrolera natomiast nie otrzymuję żadnych danych z mikrokontrolera.

Do testowania transmisji używam programu Realterm, kiedy wysyłam np. liczbę całkowitą do mikrokontrolera, w polu "Status" programu po prawej stronie aktywuje się pozycja TX (mignięcie na żółto).

Proszę o pomoc - co powinienem zrobić, żeby coś otrzymywać z mikrokontrolera? Oraz czy to mignięcie na żółto pozycji TX oznacza, że wysłałem coś prawidłowo do mikrokontrolera?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 12:51 
Offline
Użytkownik

Dołączył(a): 19 sty 2013
Posty: 322
Pomógł: 22

Witam

Kolego pokaż jakiś kod, bo tak to nic nie zdziałamy.

Pozdrawiam
Elektronik



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 13:02 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Dziękuję za odpowiedź, poniżej umieszczam kod, jest to mój program i kod służący do komunikacji

Domyślam się, że może chodzić o to, że tutorial na .... jest przeznaczony dla Atmegi8, a ja korzystam z Attiny2313.

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


Dodam jeszcze, że zależy mi tylko na wysyłaniu komunikatów, które będzie można odczytać na ekranie RealTerm.

[ proszę nie używać koloru czerwonego w postach - mirekk36 ]



Ostatnio edytowano 25 mar 2015, o 13:34 przez mateuszc, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 13:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

Czy układ docelowy masz wybrany ATTINY2313?

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 13:38 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

W którym miejscu? Program piszę w Eclipse, tam jest wybrany układ docelowy AtTiny2313. W Realterm nie widzę pola do wyboru układu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 13:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

A prędkość i parametry transmisji masz tak samo ustawione jak ATTINY2313 i RealTerm?
Jaki kwarc masz w ATTINY2313?

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 13:53 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Dokładnie, prędkość ustawiona w programie i w RealTerm to 57600. A kwarc w AtTiny2313 jest taktowany 16.000.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

Nie znam się na Eclips, ale czy masz w programie poprawnie zadeklarowaną częstotliwość kwarcu?
Ponieważ jest ona używana do obliczania wartość UBRRH i UBRRL.

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:15 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Rozumiem, w samym programie nie mam zadeklarowanej częstotliwości kwarcu. Z tego co wiem, jeżeli nie zmieniam ustawień to fabrycznie kwarc pracuje na wewnętrznym oscylatorze RC i taktowaniu 1 Mhz. Czy mam "ręcznie" przestawić w kodzie na 16 Mhz i sprawdzić czy działa?

Nie napisałem jeszcze jednej ważnej rzeczy:

UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

W tych dwóch liniach programy pojawia się błąd: Symbol 'URSEL' could not be resolved.



Ostatnio edytowano 25 mar 2015, o 14:59 przez mateuszc, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

Na początek nie przełączałbym procesora na zew. kwarc, tylko spróbował czy pójdzie transmisja na fabrycznym 1MHz.
I zmieniłbym prędkość transmisji ATTINY2313 i Realterm-a na 9600.
I nie zapomnij zadeklarować w programie częstotliwości 1MHz.

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 maja 2013
Posty: 562
Lokalizacja: Bydgoszcz
Pomógł: 23

O ja mateuszc długa droga chłopie przed Tobą :) Pytanie czy chcesz żebyśmy Ci pomogli czy tylko chcesz sobie pogadać? :) Bo Ci napiszę drogę jaką mógłbyś przejść żeby zrozumie o co w ogóle biega z mikrokontrolerami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:23 
Offline
Moderator
Avatar użytkownika

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

mateuszc napisał(a):
Rozumiem, w samym programie nie mam zadeklarowanej częstotliwości kwarcu. Z tego co wiem, jeżeli nie zmieniam ustawień to fabrycznie kwarc pracuje na wewnętrznym oscylatorze RC i taktowaniu 1 Mhz. Czy mam "ręcznie" przestawić w kodzie na 16 Mhz i sprawdzić czy działa?


Proponuję na prawdę zacząć od książki:
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

to wiele się wyjaśni a szczególnie jeśli chodzi o taktowanie procka, fusebity - nie wspominając już o tym jak prawidłowo podejść do obsługi RS232 w dowolnym procku AVR, nie ważne czy ATmega czy ATtiny2313

przy okazji zapraszam do częstszego zaglądania na mój blog np:
http://mirekk36.blogspot.com/2013/01/rs ... trick.html

ale szczególnie jeśli chodzi o twoje kłopoty z podstawami w Eclipse to tutaj:
http://mirekk36.blogspot.com/2014/11/av ... -luna.html

_________________
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: 25 mar 2015, o 14:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 448
Lokalizacja: DKL
Pomógł: 53

@mateuszc, musisz rozróżnić dwie sprawy:
1. Taktowanie mikro-kontrolera ustalasz za pomocą fuse-bitów, polecam do tego celu program MkAvrCalculator, gdzie w bezpieczny sposób to wykonasz. Od razu podpowiem, żebyś ustawił taktowanie wewnętrzne 8MHz, a najlepiej użyć zewnętrznego kwarcu przyjaznego dla transmisji RS232, bo przy wartości baud jaką wybrałeś będziesz miał błędny w transmisję na poziomie uniemożliwiającym komunikację.
2. Dopiero jak masz ustalone taktowanie w pkt1, to takie samo ustawiasz we właściwościach projektu w Eclipse. I robisz to tylko po to aby kompilator wiedział w jaki sposób napędzany jest twój układ.

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Ostatnio edytowano 25 mar 2015, o 14:31 przez matw, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:25 
Offline
Moderator
Avatar użytkownika

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

0livaw napisał(a):
Na początek nie przełączałbym procesora na zew. kwarc, tylko spróbował czy pójdzie transmisja na fabrycznym 1MHz.
I zmieniłbym prędkość transmisji ATTINY2313 i Realterm-a na 9600.

A ja na początek to zajrzałbym do noty PDF dowolnego procka AVR, na ostatnią stronę rozdziału UART tam gdzie są tabelki z wyliczonymi wartościami UBRR ale też procentem błędów i sprawdził panie - czy dla taktowania 1MHz - można w ogóle użyć prędkości 9600

od tego się zaczyna

_________________
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: 25 mar 2015, o 14:34 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Olivaw spróbuję zrobić tak jak napisałeś. Intre, chętnie pogadam, ale nie tym razem :), bo bardzo goni mnie czas - jeżeli potrafisz mi powiedzieć co mam zrobić, żeby to zaczęło działać będę Ci ogromnie wdzięczny.

Panie Mirku, bardzo często śledzę blog, niestety - jak widać - jeszcze wiele pracy przede mną. Bardzo szybko muszę się uporać z tym tematem, dlatego proszę o wyrozumiałość i pomoc, żebym mógł wysyłać proste komunikaty na terminal w Realterm. Np. do jednego z if'ów chciałbym włożyć coś w stylu "cout << Wykryto gaz", do następnego coś innego itd.

Nie napisałem jeszcze jednej ważnej rzeczy:

UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

W tych dwóch liniach programy pojawia się błąd: Symbol 'URSEL' could not be resolved.



Ostatnio edytowano 25 mar 2015, o 14:59 przez mateuszc, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 maja 2013
Posty: 562
Lokalizacja: Bydgoszcz
Pomógł: 23

mateuszc no kolega Mirek już napisał Ci praktycznie całą recepturę rozwiązania Twoich problemów, no niestety nie da się tak od razu zrobić sobie komunikacji rs232 bez podstaw, naprawdę polecam Ci przejść wskazaną drogę, bo to trzeba powoli etapami od migania LEDEm pójść i powoli klocki dokładać aż się ułożą w całość, praktycznie każdy z nas taką drogę przeszedł i w zasadzie nie masz za specjalnie wyjścia bo inaczej będziesz się tylko niepotrzebnie denerwować że Ci nie działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

mirekk36 napisał(a):
0livaw napisał(a):
Na początek nie przełączałbym procesora na zew. kwarc, tylko spróbował czy pójdzie transmisja na fabrycznym 1MHz.
I zmieniłbym prędkość transmisji ATTINY2313 i Realterm-a na 9600.

A ja na początek to zajrzałbym do noty PDF dowolnego procka AVR, na ostatnią stronę rozdziału UART tam gdzie są tabelki z wyliczonymi wartościami UBRR ale też procentem błędów i sprawdził panie - czy dla taktowania 1MHz - można w ogóle użyć prędkości 9600

od tego się zaczyna


Przed napisaniem poprzedniego posta specjalnie zajrzałem do pdf-a i dlatego zaleciłem zmniejszenie prędkości do 9600 (błąd transmisji na poziomie 0,2%).

Do znawców Eclips-a:
dlaczego kompilator nie wyrzuca błedu w linicje
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
skoro w dokumentacji ATTINY2313 nie ma bitu URSEL tylko UMSEL?

Tak się właśnie kończy kopiowanie kodu znalezionego w necie, bez zrozumienia jego działania.

------------------------ [ Dodano po: 2 minutach ]

mateuszc napisał(a):
Olivaw spróbuję zrobić tak jak napisałeś. Intre, chętnie pogadam, ale nie tym razem :), bo bardzo goni mnie czas - jeżeli potrafisz mi powiedzieć co mam zrobić, żeby to zaczęło działać będę Ci ogromnie wdzięczny.

Panie Mirku, bardzo często śledzę blog, niestety - jak widać - jeszcze wiele pracy przede mną. Bardzo szybko muszę się uporać z tym tematem, dlatego proszę o wyrozumiałość i pomoc, żebym mógł wysyłać proste komunikaty na terminal w Realterm. Np. do jednego z if'ów chciałbym włożyć coś w stylu "cout << Wykryto gaz", do następnego coś innego itd.

Nie napisałem jeszcze jednej ważnej rzeczy:

UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

W tych dwóch liniach programy pojawia się błąd: Symbol 'URSEL' could not be resolved.


Ponieważ URSEL nie występuje w ATTINY2313.
Zamień powyższą linijkę na:
UCSRC = (1<<UCSZ1) | (1<<UCSZ0);

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:58 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Intre, czyli nie ma możliwości, żeby to zadziałało? Mam na to maksymalnie 2 dni, już wiem, że zdecydowanie to przeszacowałem.

Olivaw, zrobiłem tak jak napisałeś, ale wciąż mogę tylko wysyłać do mikrokontrolera, ale nie otrzymuję odpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 14:58 
Offline
Moderator
Avatar użytkownika

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

Podpowiem, że ustawianie bitów w UCSRC - można w ogóle pominąć jeśli się chce mieć standardowe parametry ramki 8,n,1 .... warto zajrzeć do PDF'a procka i zobaczyć wartości bitów w tym rejestrze po restarcie

_________________
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: 25 mar 2015, o 15:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 maja 2013
Posty: 175
Lokalizacja: Kraków
Pomógł: 9

mateuszc napisał(a):
Intre, czyli nie ma możliwości, żeby to zadziałało? Mam na to maksymalnie 2 dni, już wiem, że zdecydowanie to przeszacowałem.

Olivaw, zrobiłem tak jak napisałeś, ale wciąż mogę tylko wysyłać do mikrokontrolera, ale nie otrzymuję odpowiedzi.


A na podstawie czego wnioskujesz że mikrokotroler otrzymuje poprawne dane?

_________________
Rozwój i utrzymywanie Oprogramowania



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 15:10 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

Nie mam pojęcia czy otrzymuje poprawne dane, jedynie w polu "Status" w Realterm miga na żółto kontrolka TX przy wysyłaniu liczby.
Może skoro mi nie odpowiada to w dalszym ciągu jest problem z transmisją lub błąd w kodzie.

Czy najlepszym sposobem nie byłoby dopisane do mojego programu kodu dedykowanego dla AtTiny2313 zamiast modyfikacji kodu z tutoriala.

Kod wyjściowy:
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: 53 minutyach ]

Zmieniłem fuse bity, teraz wewnętrzny oscylator jest ustawiony na 8 Mhz, czas 14 CK + 0 ms, wyłączyłem też dzielenie przez 8. Prędkość transmisji w programie i Realterm ustawiona na 9600. Niestety mimo to brak odpowiedzi z mikrokontrolera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2015, o 17:27 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 12
Pomógł: 0

W dokumentacji AtTiny2313 znalazłem funkcje służące do obsługi transmisji. Czy mógłbym mi ktoś pomóc w ich wykorzystaniu, dopisaniu reszty kodu, żeby sprawdzić czy w taki sposób zadziała?

PS. Czy lepszym programem do testowania będzie PUTTY?

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



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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