ATmega8 i rs232
Masz problem? Zapytaj na forum elektroda.pl
From: "Marcin" <marcin_jaw[usunto]_at_nospam_poczta.fm>
Subject: ATmega8 i rs232
Date: Thu, 26 May 2005 20:00:56 +0200
Witam
Mam pytanie czy na Atmega komunikacja przez rs232 może dobrze działać z
wewnętrznym oscylatorem 8MHz??
Robie układ sterownika serwomechanizmów modelarskich, ma być to sterowane
przez rs232. Zastosowałem sprawdzony schemat(działał mi na at90s2313) i tu
pojawiły się problemy...program napisałem w bascomie i sprawdzałem na
różnych terminalach i prędkościach transmisji... i za każdym razem to samo,
zamiast określonego tekstu odbierana są losowe serie różnych znaków
Co może być przyczyną??
Połączenie z pc jest napewno dobre, podkładałem 2 układy max232, wymieniłem
kondensatory...
Poprostu brak już mi pomysłów co nie tak jest. Jedyne co odkryłem ze jak
zmieniłem Baud na 10300 zamiast 9600 to na terminalu z ustawionym 9600
czasem załapał coś, to samo przy obniżeniu napięcia zasilania(idzie przez
7805) wyświetli prawidłowo ten tekst terminal...
Co może być nie tak??
From: =?ISO-8859-2?Q?=22Marcin_=A3ukasik_=28milea=2Epl=29=22?=
Subject: Re: ATmega8 i rs232
Date: Thu, 26 May 2005 22:40:41 +0200
Użytkownik Marcin napisał:
Witam
Mam pytanie czy na Atmega komunikacja przez rs232 może dobrze działać z
wewnętrznym oscylatorem 8MHz??
Robie układ sterownika serwomechanizmów modelarskich, ma być to sterowane
przez rs232. Zastosowałem sprawdzony schemat(działał mi na at90s2313) i tu
pojawiły się problemy...program napisałem w bascomie i sprawdzałem na
różnych terminalach i prędkościach transmisji... i za każdym razem to samo,
zamiast określonego tekstu odbierana są losowe serie różnych znaków
Co może być przyczyną??
Połączenie z pc jest napewno dobre, podkładałem 2 układy max232, wymieniłem
kondensatory...
Poprostu brak już mi pomysłów co nie tak jest. Jedyne co odkryłem ze jak
zmieniłem Baud na 10300 zamiast 9600 to na terminalu z ustawionym 9600
czasem załapał coś, to samo przy obniżeniu napięcia zasilania(idzie przez
7805) wyświetli prawidłowo ten tekst terminal...
Co może być nie tak??
Przy 8MHz ma być właśnie 9600, daje to ok 0.5% błędu w transmisji.
Ale szczeliny czasowe są na tyle szerokie, że działa jak należy.
Może ten wewnętrzny oscylator nie działa na 8MHz? Nie możesz podpiąć
zewnętrznego?
Mi na atmega8 działa bez problemu.
Sprawdź też czy masz ustawione 8N1, bo bascom chyba tylko w tej
konfiguracji działał (może się mylę).
m.
--
Milea Wireless Communications, http://milea.pl
remove dots from email when responding
From: "Marcin" <marcin_jaw[usunto]_at_nospam_poczta.fm>
Subject: Re: ATmega8 i rs232
Date: Thu, 26 May 2005 23:37:36 +0200
Przy 8MHz ma być właśnie 9600, daje to ok 0.5% błędu w transmisji.
Ale szczeliny czasowe są na tyle szerokie, że działa jak należy.
Może ten wewnętrzny oscylator nie działa na 8MHz? Nie możesz podpiąć
zewnętrznego?
w tym widze szanse, że właśnie przyczyna może leżec w tym ze pracuje na
wewnętrznym. Może mała dokładność lub uart dziwnie z nim działa. Na 90s2312
nigdy nie miałem takich problemów,nawet na mało pasujących wartościach
kwarców
Sprawdź też czy masz ustawione 8N1, bo bascom chyba tylko w tej
konfiguracji działał (może się mylę).
sprzętowy chyba standardowo tak, bo programowy można ustawiać parametry,no
ale tu tez próbowałem wszelkie kombinacje ustawień bitów, parzystości, b.
stopu i nic. Więc może szansa w rezonatorze
From: "Paweł" <pawel.neo_at_nospam_neostrada.pl>
Subject: Re: ATmega8 i rs232
Date: Thu, 26 May 2005 23:57:27 +0200
Mam pytanie czy na Atmega komunikacja przez rs232 może dobrze działać z
wewnętrznym oscylatorem 8MHz??
Tak ale musisz skalibrować wewnętrzny oscylator i zapewnić stabilne napięcie
zasilania.
Paweł
From: "Marcin" <marcin_jaw[usunto]_at_nospam_poczta.fm>
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 00:49:08 +0200
Tak ale musisz skalibrować wewnętrzny oscylator i zapewnić stabilne
napięcie
zasilania.
zasilanie jest stabilizowane i dobrze odfiltrowane
Właśnie przestawiłem na 4Mhz i teraz działa. Na 3 serwomechanizmy powinno
starczyć ale przy większej liczbie to zbyt małe taktowanie no ale wtedy
pozostanie zewnętrzny 16Mhz uruchomić.
Co do kalibracji to jeszcze nie próbowałem...poczytam i zobaczę co to da;)
Pozdrawiam
From: =?ISO-8859-2?Q?=22Marcin_=A3ukasik_=28milea=2Epl=29=22?=
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 00:59:44 +0200
zasilanie jest stabilizowane i dobrze odfiltrowane
Właśnie przestawiłem na 4Mhz i teraz działa. Na 3 serwomechanizmy powinno
starczyć ale przy większej liczbie to zbyt małe taktowanie no ale wtedy
pozostanie zewnętrzny 16Mhz uruchomić.
Co do kalibracji to jeszcze nie próbowałem...poczytam i zobaczę co to da;)
E, bez przesady, 4MHz to nie tak mało do sterowania byle silniczkami ;)
Swoją drogą naprawdę polecam podpiąć zewnętrzny kwarc. To tylko 2 zł, a
satyfakcja gwarantowana.
m.
--
Milea Wireless Communications, http://milea.pl
remove dots from email when responding
From: "Marcin" <marcin_jaw[usunto]_at_nospam_poczta.fm>
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 08:32:01 +0200
E, bez przesady, 4MHz to nie tak mało do sterowania byle silniczkami ;)
Swoją drogą naprawdę polecam podpiąć zewnętrzny kwarc. To tylko 2 zł, a
satyfakcja gwarantowana.
Niestety zauważyłem że przy większej ilości serw to już jest problem.
Serwonapędy modelarskie to specyficzne "silniczki":) problem polega na
wytworzeniu impulsów o zmiennym wypełnieniu(z dużą rozdzielczością i
niezależnie na różnych wyjściach) co elektronika serwa przekłada na kątową
pozycje osi. Im szybsze taktowanie tym częściej może być wywoływane
przerwanie timera i można uzyskać większą rozdzielczość pozycjonowania.
Kwarc mam kupiony pad kątem tego układu(16MHz) tylko nie przewidziałem że
tak się będzie zachowywał dziwnie na wewnętrznym taktowaniu i nie
uwzględniłem na płytce miejsca:) najwyżej pozostanie "pająk":)
From: Bartek <bkilianWYTNIJTO_at_nospam_interia.pl>
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 19:00:47 +0000
Marcin wrote:
zasilanie jest stabilizowane i dobrze odfiltrowane
Właśnie przestawiłem na 4Mhz i teraz działa. Na 3 serwomechanizmy powinno
starczyć ale przy większej liczbie to zbyt małe taktowanie no ale wtedy
pozostanie zewnętrzny 16Mhz uruchomić.
Witam.
4 MHz to rzeczywiście za mało, żeby kodować PWM/PPM dla serw
modelarskich. Czas trwania pojedynczego impulsu sygnałowego w tym
kodowaniu trwa od 1 do 2ms. Jeśli założymy, że w skrajnych wychyleniach
każdy impuls będzie trwał 1ms, to przy rozdzielczości 8-bitowej,
będziemy musieli dostarczać dane na RS232 z prędkością min. 8000b/s.
Moim zdaniem receptą na te 4 MHz byłoby postawienie za mikrokontrolerem
jakiegoś rejestru/bufora (analogowego lub cyfrowego), który
przechowywałby ostatnio ustawione przez ATmegę osiem wartości, z których
następnie sczytywałby układ kodujący PWM/PPM.
W nowej EP 5/2005 jest opisany 8 kanałowy przetwornik C/A z interfejsem
RS232. Zastosowano tam 8-kanałowy przetwornik TLV5608, który mógłby
stanowić bufor analogowy (Jeśli rzeczywiście przechowuje wartości stanów
- jestem nowy w tej materii). Rozumiem że Twój układ kodujący otrzymuje
już wartości analogowe dla poszczególnych kanałów z jakiegoś
przetwornika C/A.
Czy w swoim rozwiązaniu bazujesz może na układzie z
http://www.old.modelarstwo.org.pl/technika/rc/zasady_rc/index.html ?
Sam jestem zainteresowany zaprojektowaniem takiego układu kodującego
PWM/PPM do sterowania serwami za pomocą komputera, lecz na razie jeszcze
bez mikrokontrolera - ot takie wyzwanie.
Planuję taki schemat:
MAX232 -> (Rejestr przesuwny 8-bit, Licznik i jakiś generator impulsów
synchronizujących z RS232(kwarc?)) -> (Przetwornik C/A z buforem i być
może multiplekser)
I dalej już układ z wyżej wspomnianej strony.
--
Pozdrawiam,
Bartek
PS. To jest mój pierwszy post na tej grupie. Za wszelkie niedociągnięcia
przepraszam. Czy ta grupa ma gdzieś swoje FAQ? Jeśli tak, to czy mógłbym
prosić o wskazanie adresu?
From: Bartek <bkilianWYTNIJTO_at_nospam_interia.pl>
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 19:06:02 +0000
Bartek wrote:
kodowaniu trwa od 1 do 2ms. Jeśli założymy, że w skrajnych wychyleniach
każdy impuls będzie trwał 1ms, to przy rozdzielczości 8-bitowej,
będziemy musieli dostarczać dane na RS232 z prędkością min. 8000b/s.
Oczywiście dla 8 kanałów (serw) i rozdzielczości 8 bitów na jeden kanał.
--
Pozdrawiam
Bartek
From: "Marcin" <marcin_jaw[usunto]_at_nospam_poczta.fm>
Subject: Re: ATmega8 i rs232
Date: Fri, 27 May 2005 22:59:07 +0200
Bartek wrote:
kodowaniu trwa od 1 do 2ms. Jeśli założymy, że w skrajnych wychyleniach
każdy impuls będzie trwał 1ms, to przy rozdzielczości 8-bitowej,
będziemy musieli dostarczać dane na RS232 z prędkością min. 8000b/s.
Oczywiście dla 8 kanałów (serw) i rozdzielczości 8 bitów na jeden kanał.
mój sterownik działa na tej zasadzie ze przez rs232 są wysyłane komendy na
zasadzie: numer serwa;pozycja i tyle resztą już zajmuje się Atmega więc
prędkość transmisji też ma mniejsze znaczenie bo nię będzie potrzeby zmiany
położenia 9600razy na sekunde:) korzystam z gotowych procedur bascoma które
opierają się o timer(nie pamiętam już który) i tu właśnie oto chodzi o czym
pisałeś że ten przedział od 1-2 ms powiniem móc być zmieniany jak
najmniejszymi krokami a to można uzyskac częstościa timera którego maximum
zależy od taktowania..
Sterownik działa, wykonywałem go na zamówienie, działa na 3 serwach(tyle
chcieli) więc narazie nie będe się nad nim rozczulał by dopracowywać bo
wszystko jest ok :)
From: Grzegorz Kurczyk <grzegorz.usun.to_at_nospam_control.slupsk.pl>
Subject: Re: ATmega8 i rs232
Date: Sat, 28 May 2005 22:52:17 +0200
Użytkownik Bartek napisał:
Marcin wrote:
Witam.
4 MHz to rzeczywiście za mało, żeby kodować PWM/PPM dla serw
modelarskich.
Eeee... bez przesady
Na ATtiny15 popędzanym wewnętrznym oscylatorem 1,6MHz spokojnie steruję
pięcioma serwami z rozdzielczością impulsu = 10us i procek moim skromnym
zdaniem obija się przy tej robocie.
Czas trwania pojedynczego impulsu sygnałowego w tym
kodowaniu trwa od 1 do 2ms. Jeśli założymy, że w skrajnych wychyleniach
każdy impuls będzie trwał 1ms, to przy rozdzielczości 8-bitowej,
będziemy musieli dostarczać dane na RS232 z prędkością min. 8000b/s.
Ale serwa modelarskie nie muszą dostawać impuslu aż tak często.
20ms odstępu między impulsami spokojnie im wystarcza. Zmniejsza się
tylko czas reakcji serwa na zadany kąt ustawienia oeczyka, ale nie ma
wielkiego wpływu na dokładność.
Pozdrawiam
Grzegorz Kurczyk