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

Jak odczytać dane z GPS GARMIN przez UART na ATMEGA8 w Bascom?

PiotrLotnik 20 Kwi 2005 22:20 7739 44
Najlepsze odpowiedzi

Jak skonfigurować UART w ATmega8 w Bascom, żeby odbierać i wyświetlać dane z odbiornika GPS Garmin?

Ustaw UART na 4800 bps, 8N1 i odbieraj dane buforowo albo w przerwaniu URXC, zapisując kolejne znaki do stringa/tablicy; początek ramki możesz rozpoznawać po znaku '$', a potem zbierać całą linię NMEA do dalszego parsowania [#1423457][#1423601] W praktyce z GPS-a lecą pełne zdania NMEA, np. `$GPRMC...`, więc trzeba odczytywać tekstowe linie i wyciągać z nich potrzebne pola, zamiast oczekiwać pojedynczych „surowych” liczb [#1423776][#1424501] Jeśli łączysz GPS z ATmegą przez RS232, użyj MAX232 między GPS a mikrokontrolerem i sprawdź poprawność połączeń RxD/TxD po obu stronach [#1426363][#1426371] W wątku problem okazał się zwykłym zimnym lutem w torze z MAX232; po poprawieniu połączenia wszystko zaczęło działać [#1426998]
Wygenerowane przez model językowy.
REKLAMA
  • #1 1423404
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Witam.
    Na wstępie nadmienie, że z UART mam małe doświadczenie wiec prosze bez linczu :)
    Jest sporo na tym forum na temat UART i większość z nich przejżałem ale nie pomogło.
    Próbuje odczytać dane z GPS GARMIN przez UART na ATMEGA8 i wyświetlić na LCD. Programik pisze w BASCOM i niestety nic mi sie nie udało odczytać (widocznie jest to zbyt banalne:) ).
    GPS wysyła co sekunde taki protokół
    $GPRMC,161229.487,A,3723.2475,N,12158.3146,W,0.13,309.62,120598,,*10
    Transmisja jest taka
    A once every second at 4800 bps, 8 data bits, 1 stop bit, and no parity.

    Jak ustawić UART i to odczytać?

    Za wszelką łaske i pomoc Wielkie dzięki
    Pozdrawiam
    Piotr
    PS Swojego dotychczasowego programu nie umieszczam żeby się nie ośmieszyć :)
  • REKLAMA
  • Pomocny post
    #2 1423457
    K_o_n_r_a_d
    Poziom 23  
    Posty: 318
    Pomógł: 86
    Ocena: 9
    Tych znaków jest trochę więc proponuję bufor wejściowy. Wyświetlacz przyjąłem 16*2:
    $crystal = 4000000
    $baud =4800
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6
    Config Serialin = Buffered , Size = 32
    Dim Znak As Byte
    Dim I As Byte
    Cls
    Enable Interrupts
    
    I = 1
    Do
    Do : Loop Until _rs_head_ptr0 <> _rs_tail_ptr0
    'If _rs_head_ptr0 <> _rs_tail_ptr0 Then
       Znak = Inkey()
       i=i+1
       if i=17 then
          lowerline
       end if
       if i=33 then
          i=1
          wait 2
          cls
       end if
       lcd chr(znak)
    'End If
    Loop
    End
  • #3 1423547
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Wielkie dzieki za szybką odpowiedź i pomoc.

    Właśnie przetestowałem program- działa ale nie w 100%
    Co dziwne jak podłącze GPS przez MAX232 to nic sie nie dzieje (pewnie coś skopałem) natomiast jak podłącze GPS bezpośrednio do portów ATMEGI to na wyświetlaczu pojawiają sie co sek jakieś dziwne znaki i spacje, nie wiem czy poprostu tak ma być i wystarczy to przeszyfrować na inny kod.
    Pozdrawiam
  • Pomocny post
    #4 1423601
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    Pomysł z tym programikiem jest dobry ale lepiej zrobić tak aby wykorzystać przerwanie od uart'u od danych przychodzacych. W obsłudze tego przerwania robimy taki myk że gdy przyjdzie znak "$" to niech sie zeruje licznik (wskaźnik pozycji) i każda nastepna dana z portu niech będzie zapisywana do nastepnej zmiennej. Potem można z tych zmiennych wyciągnąć co trzeba. Albo zamiast tablicy zmeinneych uzyc odrazu string. Generalnie np tak:
    $regfile = "m8def.dat"
    $crystal = 1000000
    $baud = 4800
    '-------------------------------------------------------------------------------
    On Urxc Przerwanie_uart_rx
    Enable Urxc
    Enable Interrupts
    '-------------------------------------------------------------------------------
    Dim Licznik_pomoc As Byte
    Dim Licznik_pomoc2 As Byte
    Dim Napis As String * 50
    Licznik_pomoc = 1
    '-------------------------------------------------------------------------------
    Do
    Loop
    End
    '-------------------------------------------------------------------------------
    Przerwanie_uart_rx:
       If Udr = "$" Then                                        'sprawdza czy odpowiedni znak
          Licznik_pomoc = 1
          Napis = Chr(udr)                                      'resetuje napis i rozpoczyna znakiem "$"
       Else
          If Licznik_pomoc < 50 Then
             Incr Licznik_pomoc
             Mid(napis , Licznik_pomoc) = Chr(udr)              'wstawia znak z UDR na okreslonej pozycji
          End If
       End If
    Return
    '-------------------------------------------------------------------------------
  • #5 1423733
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Odczyty są tylko nie wiadomo jakie, niby wszystko powinno być ok a nie jest.
    Wyświatlane są jakiś dziwne znali albo liczby, co powoduje, że pomysł "szymtro" sie nie sprawdzi (bo nie pojawi sie znak $).
    Kombinowałem ze ASC() i CHR też sprawdzam na HEX() i tego co piszą w nicie ni jak sie nie da zobaczyć :(
    Pozdrawiam

    Zapomniałem nadmienić, że GPS transmituje dane zgodne z NMEA i raczej to nie ASCII
    The NMEA RMC data values (choć moje tłumaczenie z angielskiego nie jest najlepsze)
  • Pomocny post
    #6 1423744
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    a jak podłączasz bezpośrednio do komputera to co sie pokazuje w terminalu?
  • #7 1423776
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    To była świetna podpowieć motywacyjna.
    Podłączyłem GPSa do PC i odpaliłem BASCOM terminal Emulator i się zaczeło :)
    Oto Kawałek tego co zapisałem, nie rozszyfrowałem jeszcze gdzie jest początek.


    $GPRMC,221734,V,,,,,,,200405,,*33
    $GPRMB,V,,,,,,,,,,,,V*66
    $GPGLL,,,,,221735,*50
    $PGRMZ,,,*7E
    $PGRMM,WGS 84*06
    $GPBOD,,T,,M,,*47
    $GPRTE,1,1,c,0*07
    $GPRMC,221736,V,,,,,,,200405,,*31
    $GPRMB,V,,,,,,,,,,,,V*66
    $GPGGA,221736,,,,,0,00,,,M,,M,,*65
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $GPGSV,3,1,10,05,09,237,00,07,47,112,00,08,09,099,00,09,37,288,00*78
    $GPGSV,3,2,10,11,05,042,00,18,22,296,00,22,12,325,00,26,65,206,00*7A
    $GPGSV,3,3,10,28,40,059,00,29,61,200,00,,,,,,,,*74
    $PGRME,,M,,M,,M*00
    $GPGLL,,,,,221737,*52
    $PGRMZ,,,*7E
    $PGRMM,WGS 84*06
    $GPBOD,,T,,M,,*47
    $GPRTE,1,1,c,0*07
    $GPRMC,221738,V,,,,,,,200405,,*3F
    $GPRMB,V,,,,,,,,,,,,V*66
    $GPGGA,221738,,,,,0,00,,,M,,M,,*6B
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $GPGSV,3,1,10,05,09,237,00,07,47,112,00,08,09,099,00,09,37,288,00*78
    $GPGSV,3,2,10,11,05,042,00,18,22,296,00,22,12,325,00,26,65,206,00*7A
    $GPGSV,3,3,10,28,40,059,00,29,61,200,00,,,,,,,,*74
    $PGRME,,M,,M,,M*00
    $GPGLL,,,,,221739,*5C
    $PGRMZ,,,*7E
    $PGRMM,WGS 84*06


    Pozdrawiam
    Piotr
  • REKLAMA
  • #8 1423858
    K_o_n_r_a_d
    Poziom 23  
    Posty: 318
    Pomógł: 86
    Ocena: 9
    PiotrLotnik napisał:
    Właśnie przetestowałem program- działa ale nie w 100%
    Co dziwne jak podłącze GPS przez MAX232 to nic się nie dzieje (pewnie coś skopałem) natomiast jak podłącze GPS bezpośrednio do portów ATMEGI to na wyświetlaczu pojawiają się co sek jakieś dziwne znaki i spacje, nie wiem czy po prostu tak ma być i wystarczy to przeszyfrować na inny kod.
    Pozdrawiam

    PiotrLotnik napisał:
    Podłączyłem GPSa do PC i odpaliłem BASCOM terminal Emulator i się zaczeło Smile
    Oto Kawałek tego co zapisałem, nie rozszyfrowałem jeszcze gdzie jest początek.

    Do komputera podłączyłeś przez MAX232 czy bez? Domyślam się, że GPS działa na poziomie napięc TTL, więc dlatego do ATmegi bez MAXa, ale dlaczego co sekundę?
  • #9 1424501
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Do kompa podłanczam GARMINa bez MAX232.
    GPS wysyła na port dane co sekunde i tak samo co sekunde na wyświetlaczu się zmieniaja wartości.
    Za pomocą Bascom i terminal emulatora udalo mi się odczytać komplet danych, nie wiem tylko czemu na ATMEGA8 odczytuje co innego?

    Ustawiłem GPSa w tryb symulacji (zeby wysyłał konkretne wartości nawigacyjne) i otrzymałem coś takiego


    $GPRMC,094136,A,5001.134,N,02159.145,E,054.0,260.4,210405,003.4,E*76
    $GPRMB,A,,,,,,,,,,,,V*71
    $GPGGA,094136,5001.133,N,02159.140,E,1,09,2.0,205.4,M,39.2,M,,*44
    $GPGSA,A,3,01,03,11,14,15,18,19,22,28,,,,6.3,2.0,3.0*3E
    $GPGSV,3,1,09,01,09,165,33,03,57,185,47,11,22,281,40,14,34,131,43*7F
    $GPGSV,3,2,09,15,37,086,44,18,28,053,41,19,71,259,48,22,58,065,47*7E
    $GPGSV,3,3,09,28,07,334,31,,,,,,,,,,,,*4B
    $PGRME,15.0,M,22.5,M,15.0,M*1B
    $GPGLL,5001.132,N,02159.126,E,094137,A*2C
    $PGRMZ,674,f,3*1E
    $PGRMM,WGS 84*06
    $GPBOD,,T,,M,,*47
    $GPRTE,1,1,c,0*07

    Jest to komplet wysyłanych danych co jedną sek.
    Istotna jest pierwsza linijka w której zamieszczone sa wszystkie podstawowe informacje nawigacyjne.

    Może ktoś sie domyśla co może być przyczyną problemów przy komunikacji ATMEGA8

    Pozdrawiam
    Piotr
  • REKLAMA
  • #10 1424536
    K_o_n_r_a_d
    Poziom 23  
    Posty: 318
    Pomógł: 86
    Ocena: 9
    PiotrLotnik napisał:
    Co dziwne jak podłącze GPS przez MAX232 to nic się nie dzieje (pewnie coś skopałem) natomiast jak podłącze GPS bezpośrednio do portów ATMEGI to na wyświetlaczu pojawiają się co sek jakieś dziwne znaki i spacje, nie wiem czy po prostu tak ma być i wystarczy to przeszyfrować na inny kod.

    PiotrLotnik napisał:
    Do kompa podłanczam GARMINa bez MAX232.


    Wnioskuję z tego, że ATmega trzeba podłączyć do GPS przez MAX232.
  • REKLAMA
  • #12 1426291
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    O ja nieszczęśliwy.
    Cały dzień męcze sie z tym MAX232 i nic a co gorsza to na tym układzie świetnie łapie zakłucenia.
    Podłanczam bezpośrednio GPS pod M8 i działa dobrze, co sek otrzymuje informacje tylko jakieś dziwne, a jak podłącze przez MAX232 to nic nie łapie (czasem jakieś zakłucenia) pewnie układ jest walnięty.
    Oczywiście pilnowałem RxD i TxD a nawet ryzykowałem odwrotnie i nic.
    Czy na pewno ten MAX232 jest potrzebny??

    Jutro kupie nowy MAX232 ale co jak będzie to samo.
    Pozdrawiam
  • Pomocny post
    #13 1426363
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 135
    MAX232 jest konieczny, przecież standard RS232 to nawet +/-12V, a mikrokontrolery nie lubią -12V na wejściu, dlatego MAX 232 zamienia +12 na 0V a -12 na +5V, albo odwrotnie, nie pamiętam, ale mniejsza o to, w każdum razie konwersja TTL<->RS232 jest niezbędna.

    Jak na moje oko to winny jes niedziałający konwerter poziomów na MAX'ie, może sam układ jest sprawny, tylko źle podłączony?

    Sprawdził bym jeszcze z tą zamianą, czy jest na pewno dobrze, to znaczy, czy z +12V na RS robi się logiczne 0, czy 1 w TTL
  • Pomocny post
    #14 1426371
    K_o_n_r_a_d
    Poziom 23  
    Posty: 318
    Pomógł: 86
    Ocena: 9
    PiotrLotnik napisał:
    Czy na pewno ten MAX232 jest potrzebny??

    RS232 w komputerze chodzi na innym poziomie napięć niż w ATmega, więc jeżeli GPS do komputera podłączałeś bez MAX232 to do ATmega trzeba przez.
    PiotrLotnik napisał:
    Oczywiście pilnowałem RxD i TxD a nawet ryzykowałem odwrotnie i nic.

    Musisz sprawdzić czy nie jest odwrotnie nie tylko po stronie GPS<>MAX, ale i po stronie MAX<>ATmega.
  • #15 1426998
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Jeden zimny lut i człowiek wychodzi na idiote.
    Wszystko działa OK. :) oczywiście przy użyciu MAX232 a przyczynę wcześniejszych niepowodzeń był kiepski lut.
    Wielkie dzięki dla wszystkich
    Pozdrawiam
    Piotr
  • #16 1431937
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    PiotrLotnik napisał:
    Jeden zimny lut i człowiek wychodzi na idiote.
    Wszystko działa OK. :) oczywiście przy użyciu MAX232 a przyczynę wcześniejszych niepowodzeń był kiepski lut.
    Wielkie dzięki dla wszystkich
    Pozdrawiam
    Piotr


    :) Dobrze, ze sie Tobie udalo.

    Ale mozesz zrezygnować z max. Skoro tylko odbierasz dane z GPS to wszystko będzie dzialać dobrze gdy podłączysz tylko jedną linie - tą która nadaje z GPS do wejścia RxD w mega8.

    Tylko ni emozesz jej podlaczyc bezpośrednioe. Bierzesz jakikolwiek tranzystron npn typu np. bc547 lub podobny. Jego emitar podłączasz do masy. jego kolektor do wejścia RxD w atmedze. A bazę do rezystora 4k7. Drui koniec rezystora jest już wejściem RS. Będzie działać tak samo dobrze jak max, a dodatkowo masz układ mniejszy, oszczędzasz miejsce na cztery kondensaory i scalak no i oszczedzasz 2-3 zł na max i na 4 kondensatory. :)) Do tego łatwo układ zdiagnozować i wykryć ew. zimny lut.

    Pozdro.
  • #17 1432651
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Tak, tak, a potem można jeszcze się zastanawiać, "uszkodzę port RS232 w odbiorniku GPS, czy nie uszkodzę... ?". W końcu ten port ma swoją obciążalność i w stanie 1 (dochodzi do -12V) i 0 (dochodzi do +12V).
    Czasem nie ma sensu dziadować o te kilka PLN. Co do diagnozowania, to MAX232 nie jest szczególną trudnością, badasz wejście, potem wyjście i po diagnozie... ;)
    Pozdrawiam, Light'I
  • #18 1433150
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    Light'­­­­I napisał:
    Tak, tak, a potem można jeszcze się zastanawiać, "uszkodzę port RS232 w odbiorniku GPS, czy nie uszkodzę... ?". W końcu ten port ma swoją obciążalność i w stanie 1 (dochodzi do -12V) i 0 (dochodzi do +12V).
    Czasem nie ma sensu dziadować o te kilka PLN. Co do diagnozowania, to MAX232 nie jest szczególną trudnością, badasz wejście, potem wyjście i po diagnozie... ;)
    Pozdrawiam, Light'I


    I zajmuje miejsca tyle samo co tr? :)

    Nie ma mowy o dziadowaniu - czasem poprostu nie tylko na max sie swiat konczy. A co do mozliwosci uszkodzenia - to niby jak mozna w ten sposob uszkodzic??

    Nie myl jednostek (napięcia i prądu) - a dochodzić może zgodnie z normą do +/-15V - i nic to nie pzreszkadza. 4k7 ma miec do masy. Duzo latwiej uszkodzisz cokolwiek zle zmontowanym maxem. A co do latwosci uruchamiania to widzisz wyzej przyklad. Jak co ma kilkanascie nozek i moze miec kilkadziesiat polaczen (wraz z kondensatorami) które moga byc zimnymi lutami to jezeli do tego dodac małą wprawę w diagnozowaniu..

    Zreszta co ja tam bede mówił - zajrzyj w schemat takiego maxa - i zobacz jak wyglada jego wejscie - i czym sie rozni od tego co ja podałem.

    Pozdro.
  • #19 1433221
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    pgoral napisał:
    Zreszta co ja tam bede mówił - zajrzyj w schemat takiego maxa - i zobacz jak wyglada jego wejscie - i czym się rozni od tego co ja podałem.
    Hmm...A gdzie jest schemat ?
    http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1798
    w tym pdf-ie niet, nie licząc symboli negatorów i podciagnięć rezystorami... ;)
    A wersja w obudowie SO-16 też nie zajmuje miejsca, nawet z kondensatorkami 0,1µF SMD w otoczeniu... Podziwiam ludzi, co się biora do elektroniki i większa liczba wyprowadzeń u nich powoduje dezorientację. Ale w porządku nie popadajmy w skrajności. Nie dyskredytujmy rozwiązań, ty stosuj swoje, a ja swoje i OK.
    Pozdrawiam, Light'I
  • #20 1433439
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    Light'­­­­I napisał:
    pgoral napisał:
    Zreszta co ja tam bede mówił - zajrzyj w schemat takiego maxa - i zobacz jak wyglada jego wejscie - i czym się rozni od tego co ja podałem.
    Hmm...A gdzie jest schemat ?
    http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1798
    w tym pdf-ie niet, nie licząc symboli negatorów i podciagnięć rezystorami... ;)
    A wersja w obudowie SO-16 też nie zajmuje miejsca, nawet z kondensatorkami 0,1µF SMD w otoczeniu... Podziwiam ludzi, co się biora do elektroniki i większa liczba wyprowadzeń u nich powoduje dezorientację. Ale w porządku nie popadajmy w skrajności. Nie dyskredytujmy rozwiązań, ty stosuj swoje, a ja swoje i OK.
    Pozdrawiam, Light'I


    No własnie kolego Light'I - :) Ja uzywam albo max albo co innego - w zależnosci co lepiej.

    A co do ilości wyprowdzeń - to zobacz ile czasu mineło odkąd autor postu uruchomił układ. A pzreciez o to właśnie w tym wątku chodziło. I nie ma znaczenia by tu podziwiac autora wątku czy nie podziwiac - każdy kiedyś ma swój opierwszy układ np. łączący coś via mikrokontroler i serial. Tu chodziło o to aby pomóc autorowi który zresztą robi jak widać dość ciekawy układ. Nie musi byc do tego mistrzem lutownicy. Moze go mistrzowsko oprogramowac. No ale EOT bo teraz to już nic merytorycznego nie wnosimy do dyskusji. Tak czy inaczej sparwdzenie na T polecam.

    Może e. podam dodatkowe zalety - nie wymaga zasilania. Zasilać do tego procesor z RS otrzymujemy układ bez wtyczki do zasilania. No w tym watku to nie ma znaczenia - ale warto pamietac. Myszki na seriala nie swieci produkowali i samemu tez mozna uklad tak zasilany zrobic.

    Kolejna zaleta... a zresztą wystarczy wymyśleć.

    A co do schematow - no to w nocie aplikacyjniej samego max232 ich nie ma - ale zobacz np. note od 1488/1489 - tam juz są. :) I w wielu innych - wystarczy poszukać. Bufory RS nie tylko sam Maxim produkuje.

    A inan sprawa po co mi powielacz napięcia, generator ujemnego napięcia oraz kondensatory do tego - skoro sam tor nadawczy (do ktorego są właśnie te napięcia) jest wyłączony?

    Mała jest przyszłość dla projektów zawierających mnóstwo zbędnych elementów. Może ten aktualny przykład nie jest taki dobry. Max kosztuje 2-3 zł i nie jest to wiele. No chyba, że projektujemy urządzenie które ma być produkowane w dzisiątkach tysięcy sztuk i kosztować jak najmniej nie psując sie wogóle (każdy element podnosi awaryjność i kosztuje).
  • #21 1433530
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    pgoral napisał:
    A co do ilości wyprowdzeń - to zobacz ile czasu mineło odkąd autor postu uruchomił układ. A pzreciez o to właśnie w tym wątku chodziło. I nie ma znaczenia by tu podziwiac autora wątku czy nie podziwiac - każdy kiedyś ma swój opierwszy układ np. łączący coś via mikrokontroler i serial.
    Absolutnie nie odnosiłem się do autora wątku, nic nie pisał, że ilość wyprowadzeń sprawia mu trudność, po za tym nasza dyskusja jest "po herbacie"...
    pgoral napisał:
    Może e. podam dodatkowe zalety - nie wymaga zasilania.
    Tu się nie zgodzę, każdy układ wymaga zasilania, kwestia tylko wydajności prądowej źródła. Przy zasilaniu z RS nie ma gwarancji na prawidłowość działania układu przy odpowiednio dużym poborze mocy. No i stan spoczynkowy RS po stronie TTL to wysoki, czyli wymaga podciągnięcia.
    pgoral napisał:
    Kolejna zaleta... a zresztą wystarczy wymyśleć.
    Tak samo, jak i pewnie wady... ;)
    pgoral napisał:
    A co do schematow - no to w nocie aplikacyjniej samego max232 ich nie ma - ale zobacz np. note od 1488/1489 - tam juz są. :) I w wielu innych - wystarczy poszukać. Bufory RS nie tylko sam Maxim produkuje.
    MAX232 chyba jest trochę zmodernizowany w stosunku do 1488/1489.
    pgoral napisał:
    A inan sprawa po co mi powielacz napięcia, generator ujemnego napięcia oraz kondensatory do tego - skoro sam tor nadawczy (do ktorego są właśnie te napięcia) jest wyłączony?
    1. Nikt Ciebie nie zmusza do używania.
    2. Napięcia moga się przydać do zasilania innych układów.
    pgoral napisał:
    Mała jest przyszłość dla projektów zawierających mnóstwo zbędnych elementów. Może ten aktualny przykład nie jest taki dobry. Max kosztuje 2-3 zł i nie jest to wiele. No chyba, że projektujemy urządzenie które ma być produkowane w dzisiątkach tysięcy sztuk i kosztować jak najmniej nie psując się wogóle (każdy element podnosi awaryjność i kosztuje).
    Osobiście wolę użyć 1 układ scalony i 4 małe kondensatorki, niż stadko tranzystorów i rezystorów, w końcu to więcej elementów w układzie. Nie jest powiedziane, że nie zapragnę w projekcie uniwersalności złącza RS-232 i dodatkowo przyda mi się możliwość nadawania (TxD) i i możliwość transmisji w pozostałych torach konwersji napięć.
    Są też odmiany MAX232, gdzie nie ma potrzeby użycia dodatkowych elementów :
    Cytat:
    The MAX225,
    MAX233, MAX235, and MAX245/MAX246/MAX247 use no external components and are recommended for applications where printed circuit board space is critical.
    Oczywiście różnią się ceną, ze względu na popularność, ale to już kwestia czy tak na prawdę istnieje potrzeba walki za każdą cenę o każdy mm².
    Pozdrawiam, Light'I
  • #22 1434617
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    Cytat:
    Absolutnie nie odnosiłem się do autora wątku, nic nie pisał, że ilość wyprowadzeń sprawia mu trudność, po za tym nasza dyskusja jest "po herbacie"...


    Dokładnie. ALe przeczytaj dokładnie wątek. :))

    Cytat:
    Tu się nie zgodzę, każdy układ wymaga zasilania, kwestia tylko wydajności prądowej źródła. Przy zasilaniu z RS nie ma gwarancji na prawidłowość działania układu przy odpowiednio dużym poborze mocy. No i stan spoczynkowy RS po stronie TTL to wysoki, czyli wymaga podciągnięcia.


    myszjkę RS podłączałes do zasilacza??? A ona nawet nadaje. Nie działała?

    Standard RS ściśle przewiduje jakie są max obciążalności. I nadajniki napeno min zapewniają.

    A z tym podciąganiem??? wiesz o czym piszesz?

    Cytat:
    Tak samo, jak i pewnie wady... ;)

    Jak w każdym układzie. Ja np. zawsze wolę scalaki. :)) tak poprostu.

    Cytat:
    MAX232 chyba jest trochę zmodernizowany w stosunku do 1488/1489.


    Chyba nie wiesz o czym piszesz. obecne scalone sterowniki MAXIMA... zresztą podszkol się trochę w temacie, poszperaj w bibliotece lub w sieci.
    Narazie wygląda na to, że nie wiesz o czym piszesz.

    Cytat:
    1. Nikt Ciebie nie zmusza do używania.
    2. Napięcia moga się przydać do zasilania innych układów.


    Jasne - zawsze do ukłądu można dodać jedną przetwornice podwyższającą napięcie, a jej wyjście pozostawić niewykorzystane. Nikt nie zmusza do używania :))))

    A uC zasilic z -12V po konwersji napiec :))) SOrki za ironie - ale piszemy o konkretnym przypadku. Ktory zreszta pewno i tak sie rozbuduje i bedzie i nadawanie i odbior i bedzie na max i juz :) I w zasadzie dobrze :) Ale warto wiedziec co sie robi i w jakim celu - a nie slepo kopiowac schematy aplikacyjne.

    Cytat:
    niż stadko tranzystorów i rezystorów, w końcu to więcej elementów w układzie


    Przelicz elementy. Rezestor - szt 1. Dwie końcówki ma. Tranzystor szt 1, trzy końcówki ma. To dla Ciebie jest dużo?? Dla ciebie to więcej niż 5 elementów o łącznie znacznie większej ilości końcówek? A kondziorek na wejściu?

    Też pozdrawiam, ale życzę bardziej wniknięcie w tamat zanim się coś o nim napisze.

    Z mojej strony to EOT. Przekomarzanie się czy dwa elementy to więcej niż 5 nic już nie wnosi do dyskusji.

    Popieraj swoje krytyki argumentami - uzasadnionymi argumentami. :)

    Nie zawsze warto iść na łatwiznę i robić masową kaszankę. Czasami warto sie nieco wysilić i zrobić "układ co jest mały i skromny a dużo potrafi".

    :)

    Pozdrawiam,
    Piotr
  • #23 1434628
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    pgoral napisał:
    Dokładnie. ALe przeczytaj dokładnie wątek. :))
    Nie mów mi co powinienem robić. Mógłbyś pisać w sposób bardziej otwarty i zrozumiały, zaznaczając, które fragmenty w/g ciebie pominąłem przy czytaniu...
    pgoral napisał:
    myszjkę RS podłączałes do zasilacza??? A ona nawet nadaje. Nie działała?
    Czy pisałem, że z RS nie mozna zasilać ? Za duzo sobie dopowiadasz.
    pgoral napisał:
    A z tym podciąganiem??? wiesz o czym piszesz?
    Oczywiście, że nie, tak mi się klawisze losują... :P Weź pierwszy lepszy miernik i zmierz napięcie na dowolnym mikroprocesorze na wyjściu TxD z włączonym nadajnikiem i aktualnie nic nie nadającym. Jest stan wysoki ?
    pgoral napisał:
    Cytat:
    MAX232 chyba jest trochę zmodernizowany w stosunku do 1488/1489.
    Chyba nie wiesz o czym piszesz. obecne scalone sterowniki MAXIMA... zresztą podszkol się trochę w temacie, poszperaj w bibliotece lub w sieci.
    No to mądrzejszy o tą wiedzę kolego potrafisz podać jakieś konkretne źródło wiedzy o układach z serii MAX232 ?
    pgoral napisał:
    Narazie wygląda na to, że nie wiesz o czym piszesz.
    Stwierdzenie formalnie nielogiczne, mające na celu wytrącenie z równowagi interlokutora. Jeżeli coś wygląda tak, to tylko w twoich oczach. Nie twierdzę, że wiem absolutnie wszystko. Ton twojej wypowiedzi pachnie próbą usiłowania dowartościowania się w rodzaju "moja lepsza niż twoja", co jest wielce ryzykowne, bo nigdy nie będziesz miał dostatecznej ilości przesłanek na temat wiedzy kogokolwiek. Swoją wiedzę traktujesz zbyt osobiście i emocjonalnie. Nie widzę potrzeby roztrząsania o wyższości jednych świąt nad innymi, pisałem już - Stosuj sobie własne rozwiązania. Twoje mowa o bezmyślnym przerysowywaniu aplikacji jest też nie na miejscu, bo nie ma potrzeby powracania do spraw już przemyślanych. Gdy napisałem o możliwym wykorzystaniu przetwornicy od MAX-a ryknąłeś szaleńczym śmiechem, dając do zrozumienia, że jakakolwiek modyfikacja aplikacji jest bez sensu. Więc którą opcję w końcu przyjmujesz ? Obu na raz nie da się...
    pgoral napisał:
    Cytat:
    niż stadko tranzystorów i rezystorów, w końcu to więcej elementów w układzie
    Przelicz elementy. Rezestor - szt 1. Dwie końcówki ma. Tranzystor szt 1, trzy końcówki ma. To dla Ciebie jest dużo?? Dla ciebie to więcej niż 5 elementów o łącznie znacznie większej ilości końcówek? A kondziorek na wejściu?
    Wyciąłeś z kontekstu - pisałem o użyciu większej ilości linii transmisyjnych, przy których na pewno w układzie tranzystorowym byłoby więcej elementów/końcówek, nie licząc oczywiście konieczności preparowania ±12V. Tak więc nie przeczytałeś dokładnie i bezstronnie całości mojej wypowiedzi.
    Light'I
  • #24 1434630
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    [quote="Light'­­­]
    pgoral napisał:
    A z tym podciąganiem??? wiesz o czym piszesz?
    Oczywiście, że nie, tak mi się klawisze losują...
    [/quote][/quote]

    Takie mam wrazenie. Przeciez piszemy o ODBIERANIU a nie NADAWANIU. Przynajmniej ja o tym pisałem w poście który komentowałeś.


    Cytat:
    Swoją wiedzę traktujesz zbyt osobiście i emocjonalnie. Nie widzę potrzeby roztrząsania o wyższości jednych świąt nad innymi.


    Nie rozumiem o co Tobie chodzi. Piszę pprostu, ze w takim prostym przypadku gdy chcemy tylko ODBIERAĆ z RS to starczy podac tranzystor z rezystorem - chocby na próbe. Prosto łatwo i skutecznie. Nikogo nie zmuszam.
    A ty wyskakujesz nagle z tematem - ze to złe rozwiazanie bo w ten sposob źle się nadaje (??), bo to mnostwo elementow (???) i wogole można komputer popsuć (???).... Nie chcesz by inni wiedzieli czy jak? Zreszta niewazne.

    Niepotrzebnie sie dalem wciagnac w glupią dyskusję. Wszystkich którzy stracili czas na jej czytanie przepraszam. Mam nadzieję, że zapamiętają ew. to co w tym wartościowego.

    Pozdrawiam,
    Piotr
  • #25 1434635
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    pgoral napisał:
    Takie mam wrazenie. Przeciez piszemy o ODBIERANIU a nie NADAWANIU. Przynajmniej ja o tym pisałem w poście który komentowałeś.
    Bez względu na kierunek transmisji stan spoczynkowy linii jest wysoki, stąd mowa o podciąganiu. Co ma załatwić jej wysoki stan po konwersji na poziomy TTL/CMOS ? Mój pomysł jest taki, że rezystor, gdy stosujemy rozwiązanie z tranzystorem, chyba, że o stan wysoki zadba linia wejściowa mikroprocesora, co jest zrozumiałe przy '51, ale niekoniecznie przy AVR, gdzie ewentualnie można włączyć wewnętrzne podciągnięcie (ok. 50kΩ), nie zawsze odpowiadające potrzebnej wartości - co może skutkować stanem zabronionym dla poziomów napięć TTL/CMOS, przy większej prędkości transmisji danych (spowodowane koniecznością ładowania/rozładowywania pojemności pasożytniczej struktury tranzystora i montażowej).
    pgoral napisał:
    Nie rozumiem o co Tobie chodzi. Piszę pprostu, ze w takim prostym przypadku gdy chcemy tylko ODBIERAĆ z RS to starczy podac tranzystor z rezystorem - chocby na próbe. Prosto łatwo i skutecznie. Nikogo nie zmuszam.
    A ty wyskakujesz nagle z tematem - ze to złe rozwiazanie bo w ten sposob źle się nadaje (??), bo to mnostwo elementow (???) i wogole można komputer popsuć (???).... Nie chcesz by inni wiedzieli czy jak? Zreszta niewazne. Niepotrzebnie się dalem wciagnac w glupią dyskusję. Wszystkich którzy stracili czas na jej czytanie przepraszam. Mam nadzieję, że zapamiętają ew. to co w tym wartościowego.
    Ok, również przepraszam, poniosło mnie na początku, było to spowodowane tym, że forsowałeś swoją propozycję, pisząc:
    "ok fajnie, że się pobawiłeś, teraz możesz zdemontować tego MAX-a, którego już w końcu uruchomiłeś i zamontować moje (superprofesjonalne, mające nieskończenie wiele zalet) rozwiązanie, możesz nawet znowu popełnić 'zimny lut', u mnie z pewnością go łatwiej wykryjesz, poza tym u ciebie pewnie zajmuje on za dużo miejsca i jak zastosujesz moje rozwiązanie to zaoszczędzisz na układzie i częściach, które już kupiłeś, wywalając je do kosza, lub oddając organizacji charytatywnej i kupując następną część, czas w spędzony na trasie sklep - miejsce tworzenia układu możesz potraktować jako spożytkowany na doświadczenie obserwacji zmian krajobrazu, w końcu mamy wiosnę"
    - koniec już jest dość ubarwiony, ale tak to można skrajnie odebrać... ;) Gdybyś ujął swoje rozwiązanie nie jako alternatywę dla już zmontowanego układu, tylko ewentualną możliwość na przyszłość, nie wyolbrzymiając zalet, że ho...ho i w ogóle, pozwalając innym na spokojne zastanowienie się nad twoim pomysłem, nie byłoby pewnie całej checy... W następnym poście zrezygnowałem z negowania twojego rozwiązania. Później już tylko miałem zwyczajnie na myśli, iż pomimo, że tylko odbieramy, może się okazać, że możliwość nadawania może okazać się również przydatna (np. przetworzone w jakiś sposób dane moga wędrować do innego urządzenia), a wtedy łatwiej jest z użyciem MAX-a. Dziękuję za tą nieco burzliwą wymianę poglądów... ;)
    Pozdrawiam, Daniel
  • #26 1435433
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    :) O rzeczowa dyskusja - taka mi się podoba :)))

    Light'­­­­I napisał:

    Bez względu na kierunek transmisji stan spoczynkowy linii jest wysoki, stąd mowa o podciąganiu. Co ma załatwić jej wysoki stan po konwersji na poziomy TTL/CMOS ? Mój pomysł jest taki, że rezystor, gdy stosujemy rozwiązanie z tranzystorem, chyba, że o stan wysoki zadba linia wejściowa mikroprocesora, co jest zrozumiałe przy '51, ale niekoniecznie przy AVR, gdzie ewentualnie można włączyć wewnętrzne podciągnięcie (ok. 50kΩ), nie zawsze odpowiadające potrzebnej wartości - co może skutkować stanem zabronionym dla poziomów napięć TTL/CMOS, przy większej prędkości transmisji danych (spowodowane koniecznością ładowania/rozładowywania pojemności pasożytniczej struktury tranzystora i montażowej).


    Ja mam caly czas na mysli AVR. Tak faktycznie nalezy tam włączyć wewnętrzny pullup. Ten pulllup to nie jest rezystor a źródło prądowe. On się nieco inaczej zachowuje. W zupełności wystarcza do najwyższych spotykanych wartości transmisji. Oczywiście o ile nie mamy podłączenia do kolektora tranzystora zrobionego metrowym drutem odbierającym wszelkie zakłócenia i poprzyklejanym do masy lub co gorsza do innego sygnału.

    Jeżeli tak faktcznie ma być a prędkość transmisji jest bardzo wysoka (znacznie powyżej 115 kbit/s), ew. występują duże upływności to należało by podciągnąć via dodatkowy rezystor między Vcc a kolektorem. Przy niestarannym montazu ogólnie taki rezystor nie zaszkodzi nawet jeżeli nie pomoże.

    Przy okazji - natrafiłem jakis czas temu na jakiś artykuł z EDW w którym autor pisze, że BASCOM powinien automatycznie włączyć pullup jak się używa wejścia RSa, ale nie chciał włączyć i tzreba było użyć zewnętrznego. Więc nie wiem jak BASCOM - ale czy w BASCOM czy w C czy w ASM - jak się włączy pullup to on będzie działał. Włączy ustawiając ddr<port>.<pin rs> na odbór i port<port>.<pin rs> na 1. Działa napewno. W praktyce sprawdzone. Z dokumentacją się zgadza.

    Reasumując dla powyższego przykładu starczy w zupełności T+R - podłączone na próbe.

    Inny hint jak sprawdzić czy max od strony elektrycznej pracuje ok to zewrzeć RESET do masy (mówimy cały czas o AVR) oraz w tym samym czasie zewrzeć RxD i TxD na nóżkach przy procesorze. Na terminalu powinno być echo.

    To co mówie to ogólnie banały - ale może ktoś nie wie i się może przydać. A często (sam to po sobie zauważam) jak coś nie chce działać to się zapomina o najprostszych sposobach.

    Cytat:
    koniec już jest dość ubarwiony, ale tak to można skrajnie odebrać... ;)


    :))) Masz rację. Zupełnie się nie zrozumieliśmy. Zauważyłem, jak sobie można poradzić przy tego rodzaju problemach. I zwróciłem uwagę na pewne zalety takiego układu - być może nieistotne w rzeczywistej pracy tego układu.

    Był problem z odbiorem - zawsze można na szybko zrobic pajęczynkę zamiast MAXa.

    Cytat:
    Gdybyś ujął swoje rozwiązanie nie jako alternatywę dla już zmontowanego układu, tylko ewentualną możliwość na przyszłość, nie wyolbrzymiając zalet, że ho...ho


    Taki właśnie był mój zamiar.

    Zalety wypisałem na zdecydowaną Twoją krytykę - a nie wyolbrzymiałem ich (cokolwiek nieprawdziwe?) tylko uargumentowałem - bo Ty wymieniłe wadę, że można popsuć tak kompa/coś innego z RS (być może chodziło Tobie o coś innego tylko się nie zrozumieliśmy) nie popierając argumentami (bo ich nie ma - bo nie ma jak popsuć kompa w ten sposób. Gotowe transceivery typu max tez tak odbierają sygnał z rs - mając czasami dodatkowe zenerki do zabezpieczenia przed przebiciem).

    Cytat:
    przetworzone w jakiś sposób dane moga wędrować do innego urządzenia), a wtedy łatwiej jest z użyciem MAX-a. Dziękuję za tą nieco burzliwą wymianę poglądów... ;)
    Pozdrawiam, Daniel


    Masz w pełni rację. Hehe - ja jak najbardziej polecam a nie odradzam stosowanie gotowych układów - po to są. Widze, że poprostu nadawaliśmy na innych falach.

    Serdecznie Pozdrawiam Cie Danielu i wszystkich słuchaczy naszej burzliwej dyskusji :)) (ktos doczytał?)

    :)
  • #27 1435526
    m_wojcik
    Poziom 25  
    Posty: 832
    Pomógł: 59
    Ocena: 30
    Ja na przykład doczytałem i w sumie to jestem trochę skołowany bo sam lubię proste rozwiązania, ale z drugiej strony wiem, że niekoniecznie proste znaczy najlepsze.
    1. Jeżeli moduł GPS bedzie tylko i wyłacznie służył do nadawania transmisji (nie znam mozliwości GARMINa, czy można go RS-em programować) czyli potrzebna jest TYLKO linia wejsciowa do AVRa RxD to naprawdę sadzę że da się to zrobić na jednym tranzystorku, i takie rozwiązanie popieram - nizaleznie od kosztów MAXa jest to układ z przetwornicą który po prostu nie jest tutaj niezbędny - zobaczcie sobie chociażby np. wyjście informacyjne z UPSa do portu szeregowego, nie stosują tam niczego wymyslnego, w myszkach szeregowych też raczej nie jest to przekombinowane itd.
    2. Jezeli istnieje cień szansy na transmisję w drugą stronę, to absolutnie zgadzam się z zastosowaniem sprawdzonego i łatwego w użyciu MAXa 232, poniewaz nie wiemy dokładnie do czego Kolega będzie stosował swój układ (na razie napisał tylko o wyświetlaniu na LCD), nie możemy tego wykluczyć - moze ma zapędy konstruktorskie i dorobi np. parę klawiszy czy jakiś inny buzer wymagający sterowania, albo interfejs do laptopa ;)
    Podsumowując: pokój panowie, każdy ma rację ale najwiekszą rację ma konstruktor, który powinien sam wybrać co dla niego dobre :D
    Pozdrawiam wszystkich -
    Marcin.
  • #28 1436105
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    pgoral napisał:
    Ten pulllup to nie jest rezystor a źródło prądowe.

    Nie wiem co o tym myśleć, w pdfie jak byk stoi w tabelce (Do ATmega16 akurat mam otwarte - DC Characteristics, s. 291) :
    Cytat:
    Rpu : I/O Pin Pull-up Resistor - min. 20kΩ - max. 50kΩ.
    Skąd masz informację o źródle prądowym ?
    B.T.W. Dyskusja cały czas była rzeczowa, tylko nie zestrojona wskutek narastających emocji... ;)
  • #29 1437664
    pgoral
    Poziom 26  
    Posty: 1065
    Pomógł: 27
    Ocena: 107
    Takie źródło zasilane z Vcc zachowuje się tak jak by to był rezystor - ale ma lepsze właściwości pod względem marginesu błędów. Ta rezystancja rośnia jak spada napięcie a maleje jak rośnie. :) W ten sposób jak chcesz wymusić niski stan to malutko prądu się traci.

    Inna sprawa, że głowy bym nie dał, że każdy AVR ma tak właśnie zbudowane wejścia. Aczkolwiek jest to podobnie skomplikowane jak rezystor i jakiś przełącznik a znacznie lepsze pod względem marginesu błedu w stosunku do poboru mocy.

    :)
  • #30 1437683
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Ze schematów w pdf wynikałoby, ze to jest rezystor, załączany tranzystorem p-MOS, np. notka katalogowa od ATmega8515, s.59

Podsumowanie tematu

✨ Dyskusja dotyczy odczytu danych z modułu GPS Garmin przez interfejs UART na mikrokontrolerze ATmega8 z użyciem języka Bascom. GPS wysyła dane w formacie NMEA (np. $GPRMC) z prędkością 4800 bps, 8 bitów danych, 1 bit stopu, bez parzystości. Problemem było poprawne skonfigurowanie UART i odbiór danych, zwłaszcza z uwagi na różnice poziomów napięć między RS232 a TTL. Zalecane jest stosowanie konwertera poziomów MAX232 do bezpiecznego podłączenia GPS do ATmegi8, gdyż standard RS232 operuje na napięciach ±12 V, które mogą uszkodzić mikrokontroler. Bezpośrednie podłączenie GPS do portów ATmegi działa, ale pojawiają się nieczytelne znaki, co wynika z braku konwersji poziomów napięć. Wątek porusza także alternatywne rozwiązania konwersji sygnału, takie jak użycie pojedynczego tranzystora NPN z rezystorem zamiast MAX232, co jest prostszym i tańszym rozwiązaniem przy odbiorze danych jednokierunkowym. Dyskusja obejmuje także kwestie techniczne dotyczące wewnętrznych rezystorów podciągających w AVR oraz ich charakterystyki. Ostatecznie problem został rozwiązany po poprawnym lutowaniu i zastosowaniu MAX232. Program w Bascom powinien wykorzystywać buforowanie i przerwania UART do odbioru danych, a następnie wyświetlać je na LCD. Wskazano także, że do debugowania warto podłączyć GPS do komputera przez terminal emulujący port szeregowy, co pozwala zweryfikować poprawność transmisji i format danych NMEA.
Wygenerowane przez model językowy.
REKLAMA