logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[RS232] Atmega8 + USART: Krzaki na RS232 przy 9600 Baud, 8MHz, UBBR 51

Arek1990 16 Cze 2012 08:30 2834 13
  • #1 11006744
    Arek1990
    Poziom 11  
    Witajcie

    Postanowiłem pobawić się RS232. Używam do tego przejściówki USB->FT232->RS232.
    Atmega8 ustawiona:
    8MHz
    Baud: 9600
    UBBR: 51

    Po przeczytaniu Datasheet i innych tutków napisałem coś takiego:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    8 bitów i 2 stopu.

    Po podłączeniu wszystkiego i ustawieniu prędkości w terminalu (Realterm, Terminal v1.9b) nie pojawia się nic lub losowe krzaczki.
    Uprzedzając pytania, które na forum widziałem najczęściej odpowiadam:
    Sprawdzałem przejściówkę (zwarłem piny - wraca dobre echo)
    Częstotliwość zmieniana na fusach.
    Piny na krzyż

    Jakieś pomysły?
  • #3 11006854
    Arek1990
    Poziom 11  
    No i problem rozwiązał się przez przypadek sam. Zasilenie uC z przejściówki a nie z zasilacza pomogło.
  • #4 11006875
    mirekk36
    Poziom 42  
    Ale tak przy okazji to masz ustawiony w inicjalizacji 1 bit stopu a nie dwa

    no i nie ma co się obawiać na wewn oscylatorze będzie ładnie śmigać i nie trzeba się bawić do takich celów w wewn kwarc a tym bardziej jakieś taktowanie z FT232.

    Dodano po 1 [minuty]:

    A i jeszcze jedno jak robisz inicjalizację to żeby nie trzeba było za każdym razem wpisywać wartości z noty PDF do ubrr to zrób sobie tak ;)

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 11006928
    Arek1990
    Poziom 11  
    Co do stopu zgodzę się :D literówka. W sumie obstawiałem ze mirekk36 pierwszy odpowie :)
  • #6 11006983
    tmf
    VIP Zasłużony dla elektroda
    Po pierwsze, nic nie trzeba definiować, w AVR-libc jest nagłówek setbaud.h, a używa się tego tak: http://www.nongnu.org/avr-libc/user-manual/group__util__setbaud.html .
    Po drugie, mirek jak zwykle jest mądrzejszy niż inżynierowie firmy Atmel, którzy niezalecają stosowania wewnętrznego generatora RC do taktowania asynchronicznej transmisji RS232. Po trzecie - skoro FT232 udostępnia wyjście zegara to dlaczego z niego nie korzystać?
    Arek, proponuję ci przejrzeć archiwum elektrody, znajdzie w nim parę wątków na temat takiego taktowania USART, gdzie ludzie piszą, że zawsze im działało i nagle przestało. A wynika to właśnie z takich porad jak powyższa.
  • #7 11007097
    Arek1990
    Poziom 11  
    Oczywiście w projekcie końcowym bedzie kwarc dopasowany do uart. Póki co to próby i nauka. Co do przejściowki to nie wyprowadzilem z ft232 zegara. A koniec końców bedzie komunikacja po btm-222.
  • #8 11007096
    mirekk36
    Poziom 42  
    Tak samo jak znajdziesz panie Arek1990 parę postów na elektrodzie i nie tylko gdzie jest mowa jak można sobie użyć kalibracji za pomocą rejestru OSCCAL w celu dostosowania prędkości RS232 .... na wewn. oscylatorach w procku. A są tysiące projektów gdzie wręcz głupotą byłoby pchanie rezonatora jeśli tylko ktoś chce skorzystać z RS232 w AVR'ku .... tak samo jak jest tysiące projektów gdzie byłoby nierozsądne aby z kwarca nie skorzystać. Warto tylko wiedzieć gdzie i kiedy go użyć. A jedną z podstawowych przesłanek do jego użycia w przypadku RS232 jest zastosowanie urządzenia, które np ma pracować w skrajnie zmieniających się temperaturach otoczenia - bo właśnie temperatura mocno wpływa na jakość pracy wewn. oscylatora ale nie tylko - napięcie zasilania także. Oscylatory są kalibrowane przy 5V i temperaturze tzw pokojowej ok 25stC. Zatem w tych warunkach procki będą pięknie śmigać szczególnie przy prędkości 9600. A powoływanie się jak dziecko w tym momencie na inżynierów z Atmela to objaw może jakichś kompleksów czy jak ? sam nie wiem. Gdyby to miał być taki problem to pewnie zaraz tmf by zaczął płakać że inżynierowie Atmela w ogóle nie zalecają programowej realizacji RS232 i to jeszcze na procku taktowanym z wewn. oscylatora, no bo przecież to dopiero może być czasami niedokładne! no nie ? ;) Chore podejście. A najlepiej to straszyć początkujących i grozić palcem w nieautoryzowanym imieniu inżynierów z Atmela, zamiast im wyjaśniać i tłumaczyć. Jakby tu wpadł jakiś inżynier Atmela i popatrzył na dziecinadę co niektórych to by od razu wyszedł ;)

    Inne z kolei przesłanki kiedy warto użyć kwarca zewnętrznego gdy budujemy urządzenie to np konieczność dostosowania się do całej gamy prędkości RS232 począwszy np od 1200 do 115200 .... wtedy też korzysta się z tzw kwarców przyjaznych dla RS232. Wartości np 11,0592MHz czy 18,432MHz ale i inne - wystarczy zajrzeć na ostatnią stronę rozdziału USART każdego procka AVR i poprzeglądać tabelki. Zobaczymy że dla kwarców z takimi jakby dziwnymi końcówkami częstotliwości procent błędów jest zerowy dla prawie każdej prędkości RS232. Dlatego np moim ulubionym kwarcem jest 11,0592MHz - a jak coś robię i tworzę na 8MHz to zdecydowanie wystarcza wewn. oscylator.

    Reasumując - zalecenia z not PDF trzeba wykorzystywać jak najbardziej i nigdy się temu nie sprzeciwiam ale z otwartą głową a nie z betonową głową.

    Dodano po 1 [minuty]:

    Arek1990 napisał:
    Oczywiście w projekcie końcowym bedzie kwarc dopasowany do uart. Póki co to próby i nauka. Co do przejściowki to nie wyprowadzilem z ft232 zegara. A koniec końców bedzie komunikacja po btm-222.


    Dokładnie dopasowywanie zegara i to jeszcze do przejściówki z FT232 to już byłaby paranoja. Bo co ? po odłączeniu przejściówki procek stoi ;) ....
  • #9 11007119
    Arek1990
    Poziom 11  
    Bawilem się kalibracja. Przeczytałem wiele tematów na forach rownież tych anglojezycznych. Nurtuje mnie pytanie dlaczego nie dziala komunikacja przy zasilaniu z zasilacza a z usb tak. Jakieś pomysły?

    Ps. Panowie spokojnie. Bez rekoczynow.
  • #10 11007158
    dondu
    Moderator na urlopie...
    Wszystko można zrobić "tak sobie" lub porządnie. Bez kondensatorów filtrujących na zasilaniu, uC także ma szansę działać poprawnie w wielu projektach, a jednak kol. Mirekk36 nie doradza takiego projektowania układów.

    Po co więc narażać się, na problemy z pracą układu przy zmianie jego temperatury (wraz z jego pracą lub zmianą warunków zewnętrznych), skoro wystarczy zainwestować w kwarc za 30gr + dwa kondensatory za następne 10gr, czyli łącznie 0,40zł. Niech będzie łącznie nawet 1zł.

    Czy pewność działania w szerokim zakresie temperatur i obciążeń uC nie jest warta tak "olbrzymiej" inwestycji?


    Arek1990 napisał:
    Nurtuje mnie pytanie dlaczego nie dziala komunikacja przy zasilaniu z zasilacza a z usb tak. Jakieś pomysły?

    Jeden podstawowy: Pokaż schemat.
  • #11 11007177
    janbernat
    Poziom 38  
    Masy muszą być połączone.
  • #12 11007198
    Dar.El
    Poziom 41  
    Witam
    Tmf nie prowokuj Mirka, wystarczy napisać "inżynierowie Atmela nie zalecają".
    Mirek nie musisz odpowiadać na zaczepki.


    Stosuję transmisję RS232 na generatorze RC, niesie to pewne ryzyko braku komunikacji. Nie sądzę aby był problem starzenia uP, po prostu muszą być zapewnione stabilne warunki, temperatura i napięcie zasilania muszą być stabilne. Nie ma tragedii jak transmisja przestanie działać, można ją odzyskać i skalibrować generator RC, wystarczy delikatnie dostroić zasilanie które ma bardzo duży wpływ na częstotliwość. Dlatego inżynierowie nie zalecają, ale jak ktoś rozumie problem, da sobie radę.
  • #13 11007253
    Arek1990
    Poziom 11  
    Do dondu
    Zgodzę się z tobą - problem nie w tych gr ale w tym, że musiałbym skoczyć do sklepu a dziś siedzę w domu niestety.

    Z zasilaczem też sobie poradziłem. Problem to zbyt luźna wtyczka. przynajmniej jak ją poprawiłem to działa bez problemów.

    Dziękuję serdecznie wam wszystkim za pomoc.
  • #14 11007448
    janbernat
    Poziom 38  
    Bo popularne wtyki i gniazdka zasilania są na wymiar 2.1/5.5 lub 2.5/5.5.
    Zmień gniazdo albo wtyczkę na pasującą.
    Taki niepewnie kontaktujący element może być źródłem niepotrzebnych frustracji.
    Temat jest o RS i transmisji a tu takie coś jest źródłem problemów.
REKLAMA