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



Teraz jest 25 kwi 2024, o 06:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 34 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 3 paź 2015, o 20:44 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Hej,
próbuję skomunikować 2 uC po uart.
I jakoś dziwnie zachowuje mi się to bo raz działa raz nie.
Zależnie jak poustawiam taktowania.
Powinno działać dla tych samych taktowań obu procesorów (ustawionych w mkCalkulatorze i w properties projektu) a działa dla 1MHz a już dla 8MHz nie.
Pomijając, że przy ustawieniu 1MHz _delay_ms(1000) wcale nie trwa 1s tylko znacznie więcej.
Coś tu robię źle albo już nie wiem..
Taktuję wewnętrzym rezonatorem kwarcowym.
Może ktoś domyśla się co mogłoby być nie tak?

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

Hmm, jak ustawiłem w uC wysyłającym 8MHz a w odbierającym 1MHz to działa komunikacja.
Co to za czary? :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Nie ma czegoś takiego jak wewnętrzny rezonator kwarcowy. Jest za to oscylator RC.
Jakie baudrate (ile bps) ustawiłeś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:03 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

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

(korzystam z bibliotek Pana Mirka)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

W programie mkAVR Calculator masz USART Calculator, gdzie wybierasz taktowanie procka i widzisz jakie bps powinieneś używać, a jakich nie. Te z błędem powyżej +/-2% się nie nadają.
Dla 9600bps i Fcpu=1000000Hz jest błąd -7%, dla Fcpu=8000000Hz tylko 0.2%
Sprawdź czy napewno masz wybrane taktowanie 8MHz w programie, którego używasz, bo coś mi mówi, że nie.

------------------------ [ Dodano po: 4 minutach ]

Czapek napisał(a):
Pomijając, że przy ustawieniu 1MHz _delay_ms(1000) wcale nie trwa 1s tylko znacznie więcej.

Coś tutaj robisz nie tak. Dioda powinna migać co sekundę niezależnie czy wybierzesz taktowanie 1MHz czy 8MHz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:16 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Dlatego właśnie chciałbym taktować z 8MHz ;)
W properties w obu programach 8MHz.
W mk Calkulatorze, wysyłający uC na 8 MHz, odbierający 1MHz i działa.
Jak w drugim (w mk Calkulatorze) ustawie 8MHz to przestaje działać.
(sprawdzam na diodach)

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

Coś było nie tak z tą 1s. Przy obu taktowaniach teraz jest git. Próbuję dalej, może coś znajdę.

------------------------ [ Dodano po: 4 minutach ]

Znaczy sama komunikacja wciąż coś nie działa jak należy



Ostatnio edytowano 3 paź 2015, o 21:29 przez Czapek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

To teraz poczytaj rozdział "Inicjalizacja, kalibracja" w BB.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:34 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Hmm, myślisz że to kwestia kalibracji oscylatora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Tak, tak myślę!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:41 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Ok!
Wrzucę najwyżej jakiś zewnętrzny rezonator kwarcowy i zobaczymy jak bedzie hulać ;)
Chyba to będzie najlepszym rozwiązaniem ;p



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 21:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Czapek napisał(a):
zewnętrzny rezonator kwarcowy


Najlepiej dwa i wybierz tzw przyjazne dla UART np 11059200Hz.

------------------------ [ Dodano po: kilkunastu sekundach ]

Chociaż do testów, mogą być inne.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 22:09 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

No ciekawe...
Kalibruję sobie wedle BB. I co mi wyszło?
Dla 8 Mhz dla odbiorczego uC nie znajduje żadnych wartości - same krzaki. (atmega16)
Wysyłający miał wartości od 160-180. (atmega32)

Dla 1MHz odbierajacy ma wartosci od 132 do 144

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

Oczywiście wciąż badam wewnętrzny oscylator.
Szkoda, że nie mam pod ręką kwarcu 8Mhz..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2015, o 22:19 
Offline
Moderator
Avatar użytkownika

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

Panie zajrzyj do noty PDF swojego procka najpierw, do rozdziału UART na OSTATNIĄ stronę i tam sprawdź pan w tabelkach czy dla 1 MHz można używać 9600 bps

OD TEGO SIĘ ZACZYNA ... a nie od wszystkiego innego

Chcesz mieć pewną komunikację RS232 - weź kwarc, a najlepiej tzw "kwarc przyjazny dla RS232" ... Jak popatrzysz na te tabelki w PDF to sam odgadniesz w mig - które wartości kwarców są przyjazne dla RS232

_________________
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: 3 paź 2015, o 22:24 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Wiem, że nie można, za duży błąd... Dlatego męcze te 8Mhz. Powinno działać, nie działa, dlatego pytam.
Gdybym miał pod ręką kwarc, nie czekałbym, podłączyłbym i sprawdziłbym. Ale niestety akurat w tej chwili nie mam.

------------------------ [ Dodano po: kilkunastu sekundach ]

Tak czy siak, ciekawi mnie dlaczego kalibrując nie znajduje mi żadnych wartości, tak jak napisałem post wyżej.
No i to że działa przy różnych taktowaniach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 01:22 
Offline
Moderator
Avatar użytkownika

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

Czapek napisał(a):
Tak czy siak, ciekawi mnie dlaczego kalibrując nie znajduje mi żadnych wartości, tak jak napisałem post wyżej.

bo coś pewnie źle robisz

1. pokaż jak ustawiasz prędkość w UBRR
2. pokaż swój kod jak działasz z tą kalibracją

_________________
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: 4 paź 2015, o 08:45 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

1. Pokazane w jednym z pierwszych postów, ale dla czytelności:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

//wedle Pana Książki.

2. Jak działam z tą kalibracją?
Właśnie nie do końca wiem co mam zrobić.
Skoro na 1 uC ustawiam w properties i w mk Calkulatorze 8MHz i wyświetla mi (świeże info) od 160 do 180 a w drugim od 134 do 157 (dla tych samych ustawień)... Jaką wartość OSCCAL powinienem ustawić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 09:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Sjnpróbuj 170 i 145.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 09:40 
Offline
Moderator
Avatar użytkownika

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

Czapek napisał(a):
//wedle Pana Książki.

Rozumiem, że kompletnie nie bierzesz takich informacji pod uwagę jak np ze strony atnel.pl

http://atnel.pl/uaktualnienia-programow-do-dvd.html

albo z mojego bloga http://www.mirekk36.blogspot.com .... a SZCZEGÓLNIE w tym konkretnym przypadku tego:
http://mirekk36.blogspot.com/2013/01/rs ... trick.html

bo źle masz to obliczanie UBRR

(weź pod uwagę, że masz starsze wydanie książki i szukaj dodatkowych informacji )

------------------------ [ Dodano po: kilkunastu sekundach ]

Czapek napisał(a):
Jaką wartość OSCCAL powinienem ustawić?


Przecież w książce masz PRZYKŁADOWY kod kalibracji - możesz pokazać jak ty go przepisałeś ?


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: 4 paź 2015, o 10:04 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Nie musiałem go przepisywać, wrzuciłem ten z płyty.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kurde, co do tego obliczania UBRR, dwa razy przeglądam to uaktualnienie i nie widzę nie widzę a tu nagle bang na samym dole :)
Sprawdzę w takim razie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 11:31 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Ok, zmieniłem te ustawianie UBRR.
Dla ustawień 170 dla nadawczego i 160 odbiorczego zaczęło hulać ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 15:09 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Przy okazji może zapytam...
Korzystam z poradnika:
https://www.youtube.com/watch?v=6phecLkDjU0
Chciałbym wysłać dane z jednego uC do drugiego z wykorzystaniem uarta. Drugi uC wykorzystuje kod zaprezentowany w powyższym poradniku, a więc zczytuje kolejne znaki i dopiero po otrzymaniu ENTERA wykonuje funkcję analizuj_dane_rs23();.

W jaki sposób wysłać string zakończony enterem, tak, aby został prawidłowo odebrany przez funkcję z powyższego poradnika?

Dodam, ze z komunikacją z putty działa to wyśmienicie ;)

W tej chwili, jeden z uC wysyła prosty string :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a odbiorczy tak jak w poradniku:
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  
PostNapisane: 4 paź 2015, o 15:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Czapek napisał(a):


W tym wideo poradniku pana Mirka użyta jest inna biblioteka, a mianowicie z zielonej książki (MK_USART), a nie z niebieskiej (MKUART).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 15:45 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Oczywiście wiem o tym ;)
I właśnie z tej biblioteki korzystam ;)
Podkreślam, miedzy putty a uC działa bez kłopotów.
Chciałbym sobie przenieść to na komunikację miedzy 2 uC.
A nie mogę znaleźć jak wygląda znak enter wysyłany z putty a tego właśnie oczekuje biblioteka użyta w powyższym poradniku.
Funkcja zbiera znaki aż do otrzymania entera i dopiero wtedy wykonuje jakieś zadanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 15:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Znak enter w ASCII ma kod 0x0D

------------------------ [ Dodano po: 4 minutach ]

Masz błąd w tej linii:
Czapek napisał(a):
if( !strcmp(bufor,"aaa")==0 ){


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.


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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 16:11 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Rzeczywiście tam umknęło ;p
próbuję wysłać ten znak entera i w sumie wciąż nic.
Próbowałem już \n\r oraz \r\n uart_putint(13,10); uart_putint(0x0D,16)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 16:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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  
PostNapisane: 4 paź 2015, o 16:48 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

[/syntax]Też próbowałem. Niestety nie działa.
Próbowałem też rozdzielić to tzn:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Może pokażę kod nadawcy i odbiorcy. tak na wszelki...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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  
PostNapisane: 4 paź 2015, o 17:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Aż z ciekawości sprawdziłem na żywych organizmach (ATmega32 i ATmega16) i wszystko pięknie działa. Coś musiałeś źle podłączyć (np nie podłączyłeś mas) lub masz złe taktowanie procków.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 17:24 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Hm... Też pracuję na at 16 i 32...
I prosta komunikacja działa. zwykłę wysyłanie i odbieranie pojedynczego znaku 'a'.
No zmartwiłeś mnie teraz.

------------------------ [ Dodano po: 4 minutach ]

Grrrr!
Nie przekopiowałem z poprzedniego projektu linijki odpowiadającej za kalibrację...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wszystko działa pięknie, dzięki i sorka za kłopot.. Sam jestem zły na siebie bo sporo czasu spędziłem na szukaniu co tu nie tak. Byłem pewien że wszystko jest na miejscu (także ta nieszczęsna linijka) a tu przeoczenie..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 17:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

A zrobiłeś aktualizację tej biblioteki MK_USART z green booka?

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

http://atnel.pl/mkuart-error.html

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

Czapek napisał(a):
Wszystko działa pięknie, dzięki i sorka za kłopot.


Żaden kłopot! ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2015, o 17:34 
Offline
Użytkownik

Dołączył(a): 25 mar 2015
Posty: 105
Pomógł: 2

Tak, zrobiłem ;)
Kalibracja w tym wypadku jest konieczna, bez niej występuje problem w komunikacji.
W czasie rozwoju projektu mam zamiar dobrać kwarc do uarta, tak na wszelki wypadek ;)

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

Fajnie, w tej chwili mam zrobioną pełną komunikację między kompem (apka w c#) a uC po uarcie, miedzy 2 uC wykorzystując radiówki oraz miedzy 2 uC po uarcie ;)
Wszystko na podstawie książek i poradników Pana Mirka.
I oczywiście pomocy chętnych użytkowników forum ;)



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: 34 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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