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

PIC18F14K50 - uC nie potrafi odebrać danych od modułu GPS

PStone 06 Sie 2013 13:08 1407 3
  • #1 06 Sie 2013 13:08
    PStone
    Poziom 2  

    Próbuję odebrać dane z modułu GPS fgpmmopa6e za pomocą wspomnianego mikrokontrolera w wersji niskonapięciowej (3.3V). Oba elementy znajdują się już jednej płytce PCB, GPS został przylutowany zgodnie z notą katalogową (Datasheet s.22) i sam w sobie działa (wnioskuję po tym że podłączona do pinu 3D-fix dioda mruga przez jakiś czas, po czym gaśnie, co oznacza złapanie fixa). uC też funkcjonuje poprawnie, jest do niego podłączonych kilka diod. Dodam, że operuje na kwarcu zewnętrznym 12MHz, środowisko programistyczne to MPLAB X, a kompilator - XC8.

    Problem polega na tym, że nie potrafię się skomunikować z modułem, czy to przy pomocy biblioteki usart.h czy używając wprost rejestrów. Poniżej kluczowa część kodu.

    Fusebity

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Funkcja main()
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Inizjalizacja UARTu
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodatkowo występują poniższe definicje
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Generalnie program staje na linijce "while(!PIR1bits.RCIF); //Waiting for data to appear", więc dane nie zostają odebrane. Jeśli korzystam z biblioteki usart.h, odebrane znaki to same 0xff.
    Wprawdzie nie mam możliwości podłączenia sprzętu do komputerowego terminala, jednak dzięki "zaawansowanemu" systemowi dwóch diod mogłem napisać funkcję, która "wymruga" dowolny znak, stąd wiem co zostało przez UART zwrócone.

    Co przychodzi mi do głowy, to jakiś problem z fusebitami/konfiguracją zewnętrznego oscylatora lub po prostu jakiś głupi błąd w odczycie danych z UARTu, jednak próbowałem różnych konfiguracji i żadna z nich nie poskutkowała.
    Ktoś coś widzi/ma pomysł jak to rozwiązać?

    0 3
  • Pomocny post
    #2 06 Sie 2013 13:44
    94075
    Użytkownik usunął konto  
  • Pomocny post
    #3 06 Sie 2013 15:50
    archanoid
    Poziom 25  

    Witam . Kolego ustaw poprawnie piny PB7 i PB5 . Wyłącz tak jak kolega albert napisał funkcje analogowe dla pinu PB5 ( rejestr ANSELH ) a następnie ustaw właściwie kierunki . Jak na razie masz włączone funkcje analogowe i oba piny jako wyjścia a RX to raczej ma być wejście.

    0
  • #4 06 Sie 2013 17:43
    PStone
    Poziom 2  

    archanoid, PB5 na 0 to efekt eksperymentów, normalnie był ustawiony 1, ale to fakt, oczywisty błąd. Czego mi zabrakło to przestawienia trybu pinu PB5 na cyfrowy, a myślałem że już wszystkiego spróbowałem :) (gdyby tak było nie miałbym problemu ;).
    Dziękuję bardzo za szybką odpowiedź! Działa :)

    0