Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podłączanie GPS do Atmega

Asmodat 13 Lip 2012 12:48 2138 20
  • #1 13 Lip 2012 12:48
    Asmodat
    Poziom 10  

    Czy jeśli chciałbym podłączyć gps np taki:
    http://www.hestore.hu/files/GPS03.pdf
    do AtmegiL (3,3V), gdzie GPS wysyła sygnały 0-2.9V to muszę to robić przez Maxa 3232, czy może być bezpośrednio do procka ?
    I czy lepiej ustawić Atmegę na 8MHz czy 1MHz wystarczy ?

    0 20
  • Arrow Multisolution Day
  • #2 13 Lip 2012 13:22
    Jaś Wędrowniczek
    Poziom 9  

    Witam,

    W kwestii ustawienia zegara w ATMedze, GPS obsługuje domyślnie transmisję: "Default 9600 baud rate, 8, N, 1". Korzystając ze wzorów na szybkość transmisji możesz obliczyć czy 1MHz wystarczy. W zasadzie to zależy jak bardzo obciążony będzie mikrokontroler. Przy niewielkiej ilości funkcji wykonywanych przed ATMegę wystarczy :)
    W kwestii poziomów napięć, to zależy jak zasilasz ATMegę. GPS zasilany jest napięciem 3,3V. Jeśli zasilasz mikrokontroler napięciem 5V polecałbym użyć MAX232 wraz z zasilaniem n 3,3V. Łatwiejszy rozwiązaniem jest jednak zasilanie ATMegi napięciem 3,3V. Odpada "dokładanie" zasilania na 5V - wszystko pracuje na jednym napięciu 3,3V.

    Pozdrawiam,
    Piotr.

    0
  • #3 13 Lip 2012 13:33
    Asmodat
    Poziom 10  

    Mam AtmegęL - wersję zasilaną na 3.3v.
    Ustawiona jest na 8Mhz wewnętrznie.

    UART mam ustawiony na 9600 8N1,

    W gps zwarte wszystkie masy, podpięte napięcie VIN, i linię TX GPS do RX mikroklocka, a jedyne co odbieram to śmieci. Dlatego się pytam czy czasem nie trzeba maxa dać, bo nie wiem co z tym fantem zrobić.

    0
  • #4 13 Lip 2012 13:36
    wiere
    Poziom 10  

    Wewnętrzny generator jest niedokładny i odbiega od częstotliwości 8 MHz. Najlepiej zastosować zewnętrzny rezonator kwarcowy.
    Pozdrawiam.

    0
  • #5 13 Lip 2012 13:39
    Asmodat
    Poziom 10  

    Z zewnętrznym kwarcowym nie działa mi wyświetlacz 16x2, Mam 2 moduły gps jeden OEMStar 2
    http://www.google.pl/url?sa=t&rct=j&q=&esrc=s...SCbXtIkTmewibT9sw&sig2=94xJPtrNa3CXHLlAmdSyyA

    , z domyślną transmisją 4800 i ten działa, a ten chiński z tematu GPS03 z domyślną 9600 już nie - wysyła bez przerwy znak || i czasami jakieś inne.

    Jest to możliwe, że ten moduł po prostu nie wspiera UART'a ?

    0
  • Arrow Multisolution Day
  • #6 13 Lip 2012 14:07
    Jaś Wędrowniczek
    Poziom 9  

    Jeśli nie działa Ci wyświetlacz na zewnętrznym rezonatorze, to musisz zmienić opóźnienia czasowe w funkcjach obsługi LCD i będzie działał, a wtedy pojawi się możliwość sprawdzenia czy działa transmisja z GPS03.

    Pozdrawiam,
    Piotr.

    0
  • #7 13 Lip 2012 19:06
    Asmodat
    Poziom 10  

    Żeby to było takie oczywiste... na wewnętrznym 8Mhz wyświetlacz działa prawidłowo - opóźnienia nic do tego nie mają, bo na zewnętrznym 8mhz nie działa.

    0
  • #8 13 Lip 2012 21:07
    krru
    Poziom 32  

    To znaczy że masz znacznie poważniejszy problem niż błąd komunikacji z GPS.

    0
  • #9 14 Lip 2012 14:21
    Jaś Wędrowniczek
    Poziom 9  

    Witam,

    A na jakimkolwiek zewnętrznym kwarcu coś działa? Może to kwestia ustawienia fusebitów? Sam miałem kiedyś taki problem i okazało się, że omyłkowo wpisałem błędne wartości do rejestrów Low i High - w efekcie nie tylko LCD nie działał, lecz Mega resetowała się w kółko :)

    Pozdrawiam,
    Piotr.

    0
  • #10 14 Lip 2012 18:27
    Asmodat
    Poziom 10  

    Jak by tak było to bym już nie mógł jej ponownie ustawić na wewnętrzny.

    0
  • #11 14 Lip 2012 21:19
    Jaś Wędrowniczek
    Poziom 9  

    Witam,

    Kolego Asmodat, niekoniecznie tak musi być. Chodzi o ustawienie "Start-up time" oraz bity "Brown-out detection". Może tutaj tkwi problem - przy nieodpowiedniej konfiguracji tych bitów mikrokontroler dalej można przestawić, jednak program nie będzie pracował. Proponowałbym spróbować albo ustawić opóźnienie po starcie albo uaktywnić bit BODEN.

    Pozdrawiam,
    Piotr.

    0
  • #12 16 Lip 2012 20:11
    Asmodat
    Poziom 10  

    Staram się to rozwikłać, ale marnie idzie. Z tego co zauważyłem Atmega8A odbiera dane prawidłowo taktowana wewnęcznie 1Mhz, natomiast tak samo ustawiona Atmega8L już nie - tylko śmieci lub częściowe ramki.

    Chyba nie powinno być żadnej różnicy między tymi prockami ?, różnią się chyba tylko ilością pamięci ...

    Może ktoś miał podobny problem z uartem ?

    0
  • #13 16 Lip 2012 22:13
    LordBlick
    VIP Zasłużony dla elektroda

    Asmodat napisał:
    Chyba nie powinno być żadnej różnicy między tymi prockami ?, różnią się chyba tylko ilością pamięci ...
    I poborem prądu... A i o której pamięci mówisz ?
    Tutaj masz notę aplikacyjną AVR523 pokazującą różnice...
    BTW: Tak bez kodu to sobie pogdybamy długo jeszcze... ;)

    0
  • #14 16 Lip 2012 22:30
    Asmodat
    Poziom 10  

    @up chodziło mi o 2x więcej SRAM'u


    Ot.cały kod:

    Code:
    .cseg
    
    .org 0
    rjmp start
    reti
    reti
    reti
    reti
    reti
    reti
    reti
    reti
    reti
    reti
    rjmp USART_RXC
    reti
    reti
    reti
    reti
    reti
    reti

    rcall USART_Initialization

    sei

    loop:
    rjmp loop



    USART_RXC:
      in R16, UDR       ;get byte
      rcall SendTo_LCD
    reti

    ;----------------------------------------

    USART_Initialization:
     cbi UCSRA, U2X   ;transmision speed x1
     ldi R17, 0
     ldi R16, 12   ;speed 4800
     out UBRRH, R17
     out UBRRL, R16

     ldi R16, (1<<RXEN)|(1<<RXCIE)   ;odbiór i przerwanie RXC
     out UCSRB, R16

     ldi R16, (1<<URSEL)|(0<<USBS)|(3<<UCSZ0)   ; 8N1
     out UCSRC, R16
    ret


    ;-------------------------------------------


    Schemat: płytka prototypowa zl2avr: http://www.btc.pl/pdf/zl2avr.pdf
    tylko zamiast stabilizatora ze schematu (7805) mam MCP 3,3V (tu też podpięty jest gps), ekran jest osobno na 5V (przez konektror na płytce I2C w którym siedzi stabilizator 7805 ) - bo na 3,3 nie działa.


    ;------------------------------------

    Dodam też że po około 30min wysypują też się atmego8A, i zaczynają najpierw gubić znaki, a potem pojawiają się krzaki. Mimo,że napięcia i natężenia na zasiłach pozostają niezmienione (dla średniej klasy miernika) od czasu uruchomienia.

    Problem dotyczy 5 różnych procesorów i 5 różnych modułów GPS, więc niema mowy o problemach z pojedynczym egzemplarzem.
    ;-----------------------------------

    0
  • #15 16 Lip 2012 22:59
    Jaś Wędrowniczek
    Poziom 9  

    LordBlick napisał:
    Asmodat napisał:
    Chyba nie powinno być żadnej różnicy między tymi prockami ?, różnią się chyba tylko ilością pamięci ...
    I poborem prądu... A i o której pamięci mówisz ?
    Tutaj masz notę aplikacyjną AVR523 pokazującą różnice...
    BTW: Tak bez kodu to sobie pogdybamy długo jeszcze... ;)


    Dodatkowo ATMega8 ma możliwość pracy z zegarem o częstotliwości 0-16MHz, zaś wersja L tylko w zakresie 0-8 MHz. Tym te mikrokontrolery się różnią.


    Pozdrawiam,
    Piotr.

    0
  • #16 16 Lip 2012 23:38
    Asmodat
    Poziom 10  

    Bardziej ciekawi mnie, czy możliwy jest spadek taktowania w czasie ?, bo na to wskazują objawy... chyba ...

    0
  • Pomocny post
    #17 17 Lip 2012 00:23
    LordBlick
    VIP Zasłużony dla elektroda

    Nie pokazałeś całego kodu.
    W obsłudze przerwania nie stosuje się numerów z LCD i czymkolwiek czasochłonnym. Co do realizacji odczytu USART w przerwaniu to podpowiedź brzmi " bufor kołowy".

    Asmodat napisał:
    Dodam też że po około 30min wysypują też się atmego8A,
    No ja się wcale temu nie dziwię, w ogóle nie dbasz o zapisanie SREG ani używanych rejestrów w obsłudze przerwania.

    0
  • #18 17 Lip 2012 16:19
    Asmodat
    Poziom 10  

    Ramki mają ponad 10*80 B, to się nigdy nie zmieści na sramie wraz z innymi danymi, do tego mają zmienną długość więc nie ma możliwości bez żadnych sensownych operacji w trakcie przybywania danych wykonać bufor o którym mówisz

    0
  • Pomocny post
    #19 17 Lip 2012 17:05
    LordBlick
    VIP Zasłużony dla elektroda

    No skoro tak, to trzeba więcej pamięci albo usystematyzować odbiór, np. pomijać niektóre ramki. Ten pdf od tego GPS03 raczej biedny jest. Powinno się móc sterować pakietami.

    0
  • #20 17 Lip 2012 21:31
    Asmodat
    Poziom 10  

    Coś mi się wydaje, że to nie problem programu - gdyby było tak, że nie wyrabia z instrukcjami pomiędzy przyjściem 1 a 2 znaku, to by po prostu ten znak się nie pojawiał. Natomiast śmieci muszą być ściśle związane z brakiem synchronizacji modelu odbierającego dane. Może wynika to z zakłuceń ?

    Czy np. zasilanie w formie : zapalniczka samochodowa (zwykły kabelek bez żadnych zabezpieczeń)(12v) -> L7805(5v) -> MCP(3,3V) to nie najlepszy sposób stabilizacji napięcia ?

    0
  • #21 17 Lip 2012 22:59
    LordBlick
    VIP Zasłużony dla elektroda

    Póki co to najlepiej uruchamiać stacjonarnie z zasilacza, byleby tylko satelity złapać, np. przy oknie. Jak już projekt będzie dopięty, to można sobie zapuszczać testy w trasie... ;)
    Co do kodu, to nie jestem w stanie go oceniać, bo to można zrobić tylko z kompletną całością. Wszystkie sztuczki dozwolone, ale z głową, aby µC nie poszedł na maliny. ;)

    0