| Author |
Message
|
Pagodin Poziom 10

Joined: 24 Mar 2006 Posts: 47 Location: Koszalin
|
#1
30 Jan 2007 16:33 GPS (HI-204) + ATmega8 |
|
|
|
Witam!
Może mój problem wyda się niektórym banalny ale nie mogę odebrać danych z odbiornika GPS (Haicom Hi-204e) na atmedze8, próbowałem podciągać TX GPS'a do napięcia zasilania jednak bez rezultatu. Czy ktoś ma może jakieś sugestie? Za wszelkie rady serdecznie dziekuje.
Pozdrawiam.
Chcialbym dodac ze nasluchuje transmisje przy parametrach 4800 8N1, jedyne co odbieram to zera, jednak "leca" one w sekwencjach co sugeruje ze ramki sa nadawane.
|
|
| Back to top |
|
 |
Google

|
#
30 Jan 2007 16:33 |
|
|
|
|
|
| Back to top |
|
 |
rezi_ar Poziom 14

Joined: 09 Jan 2005 Posts: 159 Location: Piotrków T.
|
#2
30 Jan 2007 18:15 Re: GPS (HI-204) + ATmega8 |
|
|
|
witam
podciąganie do Vcc chyba nie jest potrzebne
nie znalazłem tego w dokumentacji ale jest szansa, że GPS nadaje z poziomami 0-3,3V (tak mam w holux gm-210)
z pozdrowieniami
rezi
|
|
| Back to top |
|
 |
M. S. Poziom 22

Joined: 12 Jan 2005 Posts: 1508 Location: Czechowice - Dziedzice
|
#3
30 Jan 2007 18:22 Re: GPS (HI-204) + ATmega8 |
|
|
|
Zamieść odczyt. Zera i przecinki świadczą, że odbiornik nie widzi satelitów. Krzaki świadczą o błędnym odbiorze danych. Jeśli możesz to sprawdź GPS na PC (za pomocą np. Hyperterminala).
Ja mam HI -204III i z Megą8 żyją za pan brat.
Jak znasz się na Bascomie to u mnie wygląda to tak:
| Code: |
Open "comd.3:4800,8,n,1,inverted" For Input As #1
Odczytaj_gps:
Gpstxt = ""
Przerwanie = 0
Do ' W tej pętli szukaj znaku "R" (82). Ona zsynchronizuje odczyt $GPRMC ...
Gps = Inkey(#1)
Incr Przerwanie
Loop Until Gps = 82 Or Przerwanie = 1024
If Gps = 82 Then ' Jak znajdziesz to odbierz resztę
Input #1 , Gpstxt
Gpstxt = Left(gpstxt , 43)
Dobry_odczyttxt = Mid(gpstxt , 15 , 1) ' Sprawdz
If Dobry_odczyttxt = "A" Then
Czastxth = Mid(gpstxt , 4 , 2)
Czastxtm = Mid(gpstxt , 6 , 2)
Szerokosctxtst = Mid(gpstxt , 17 , 2)
Szerokosctxtmin = Mid(gpstxt , 19 , 2)
Szerokosctxtsek = Mid(gpstxt , 22 , 4)
Szerokoscsek = Val(szerokosctxtsek)
Szerokoscsek = 0.006 * Szerokoscsek
Szerokosctxtsek = Fusing(szerokoscsek , "#.##")
Dlugosctxtst = Mid(gpstxt , 30 , 2)
Dlugosctxtmin = Mid(gpstxt , 32 , 2)
Dlugosctxtsek = Mid(gpstxt , 35 , 4)
Dlugoscsek = Val(dlugosctxtsek)
Dlugoscsek = 0.006 * Dlugoscsek
Dlugosctxtsek = Fusing(dlugoscsek , "#.##")
Knotstxt = Mid(gpstxt , 42 , 2)
If Knotstxt = "0." Then
Kmh = 0
Else
Kmh = Val(knotstxt)
Kmh = Kmh * 1.852
End If
Knotstxt = Fusing(kmh , "#.#" )
Locate 1 , 1 : Lcd "N=" ; Szerokosctxtst ; "'" ; Szerokosctxtmin ; "'" ; Szerokosctxtsek ; " " ; Czastxth ; ":" ; Czastxtm ; " "
Locate 2 , 1 : Lcd "E=" ; Dlugosctxtst ; "'" ; Dlugosctxtmin ; "'" ; Dlugosctxtsek ; " V=" ; Knotstxt ; " "
Else
Locate 1 , 1 : Lcd "BRAK ODCZYTU GPS "
Locate 2 , 1 : Lcd " "
End If
End If
Return |
GPS u mnie podłączyłem do programowego "UART"
ATMEGA prawidlowo odczytuje 3V3 Jako stan wysoki.
|
|
| Back to top |
|
 |
Pagodin Poziom 10

Joined: 24 Mar 2006 Posts: 47 Location: Koszalin
|
#4
31 Jan 2007 10:25 Re: GPS (HI-204) + ATmega8 |
|
|
|
Witam
Czyli ATmega zasilana 5V nie odczyta prawidłowo danych z GPS (3,3V)?
Pozdrawiam
Dodano po 1 [godziny] 21 [minuty]:
Z dokumentacji:
Primary Power: +3.8V ~ 8V DC
Czyli moge zasilić GPS 5 Voltami i połączyć wprost z ATmega, jednak jest bez zmian.
|
|
| Back to top |
|
 |
Google

|
#
31 Jan 2007 10:25 |
|
|
|
|
|
| Back to top |
|
 |
rezi_ar Poziom 14

Joined: 09 Jan 2005 Posts: 159 Location: Piotrków T.
|
#5
31 Jan 2007 11:59 Re: GPS (HI-204) + ATmega8 |
|
|
|
Mój holux też jest zasilany z 5v, mimo to nadaje z poziomami 0-3,3v
i ciekawostka: PIC16f84a rozpoznaje 3,3v jako 1 logiczną, a PIC16f628a już nie.
Z podobnym do Twojego efektem spotkałem się jeszcze raz gdy podłączyłem wyjście RS232 (+/-12V) do wejścia TTL w palmtopie - ramki szły i nic w ramkach.
z pozdrowieniami
rezi
|
|
| Back to top |
|
 |
Pagodin Poziom 10

Joined: 24 Mar 2006 Posts: 47 Location: Koszalin
|
#6
31 Jan 2007 12:28 Re: GPS (HI-204) + ATmega8 |
|
|
|
Więc jakie może byc tego rozwiązanie?
Pozdrawiam
|
|
| Back to top |
|
 |
Google

|
#
31 Jan 2007 12:28 |
|
|
|
|
|
| Back to top |
|
 |
rezi_ar Poziom 14

Joined: 09 Jan 2005 Posts: 159 Location: Piotrków T.
|
#7
31 Jan 2007 12:49 Re: GPS (HI-204) + ATmega8 |
|
|
|
problem z 3,3v rozwiązałem na dwa różne sposoby (w różnych aplikacjach):
- zbudowałem konwerter poziomów 3,3 - 5 (2x NPN)
- zasiliłem PIC'a 3,3v
oba działają
|
|
| Back to top |
|
 |
Pagodin Poziom 10

Joined: 24 Mar 2006 Posts: 47 Location: Koszalin
|
#8
31 Jan 2007 13:08 Re: GPS (HI-204) + ATmega8 |
|
|
|
Czy może chodzi o takie coś?
|
|
| Back to top |
|
 |
rezi_ar Poziom 14

Joined: 09 Jan 2005 Posts: 159 Location: Piotrków T.
|
#9
31 Jan 2007 13:58 Re: GPS (HI-204) + ATmega8 |
|
|
|
tak - ten schemat
|
|
| Back to top |
|
 |
Robin Robinowski Poziom 11

Joined: 24 May 2003 Posts: 60 Location: Świdnica
|
#10
31 Jan 2007 14:03 Re: GPS (HI-204) + ATmega8 |
|
|
|
Zrób sobie konwerter poziomów napięć. Za pomocą bramek typu
HCT 126 i LVX 125. Wykorzystanie obu bramek pozwoli ci na stworzenie konwertera dwukierunkowego 3,3 V<=>5 V. Jeśli potrzebujesz tylko podnieść napięcie na 5 V wystarczy jeden układ HCT 126
Problem ten był już poruszany na forum.
Pozdrawiam.
Robin
|
|
| Back to top |
|
 |
creative Poziom 6

Joined: 27 Mar 2004 Posts: 18 Location: gliwice
|
#11
14 May 2007 18:30 Re: GPS (HI-204) + ATmega8 |
|
|
|
witam chciałem troszkę odswierzyć temat, mianowicie korzystajac z częsci napisanej przez kolegę M. S. skleciłem takie coś:
| Code: |
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 2400
Dim Gps As Byte
Dim Gpstxt As String * 80
Dim Czastxth As String * 4,
Dim Czastxtm As String * 4,
Dim Szerokosctxtst As String *4
Dim Szerokosctxtmin As String * 4
Dim Szerokosctxtsek As String * 4
Dim Szerokoscsek As Single
Dim Dlugoscsek As Single
Dim Dlugosctxtsek As String * 4
Dim Dlugosctxtst As String * 4
Dim Dlugosctxtmin As String * 4
Dim Knotstxt As String * 3
Dim Przerwanie As Single
Dim Dobry_odczyttxt As String * 4
Dim Kmh As Single
Enable Urxc
Enable Interrupts
On Urxc Czytaj_soft_uart
'-------------------------------------------------------------------------------
Open "comd.2:4800,8,n,1" For Input As #1
Czytaj_soft_uart:
Gpstxt = ""
Przerwanie = 0
Do ' W tej pętli szukaj znaku "R" (82). Ona zsynchronizuje odczyt $GPRMC ...
Gps = Inkey(#1)
Incr Przerwanie
Loop Until Gps = 82 Or Przerwanie = 1024
If Gps = 82 Then ' Jak znajdziesz to odbierz resztę
Input #1 , Gpstxt
Gpstxt = Left(gpstxt , 43)
Dobry_odczyttxt = Mid(gpstxt , 15 , 1) ' Sprawdz
If Dobry_odczyttxt = "A" Then
Czastxth = Mid(gpstxt , 4 , 2)
Czastxtm = Mid(gpstxt , 6 , 2)
Szerokosctxtst = Mid(gpstxt , 17 , 2)
Szerokosctxtmin = Mid(gpstxt , 19 , 2)
Szerokosctxtsek = Mid(gpstxt , 22 , 4)
Szerokoscsek = Val(szerokosctxtsek)
Szerokoscsek = 0.006 * Szerokoscsek
Szerokosctxtsek = Fusing(szerokoscsek , "#.##")
Dlugosctxtst = Mid(gpstxt , 30 , 2)
Dlugosctxtmin = Mid(gpstxt , 32 , 2)
Dlugosctxtsek = Mid(gpstxt , 35 , 4)
Dlugoscsek = Val(dlugosctxtsek)
Dlugoscsek = 0.006 * Dlugoscsek
Dlugosctxtsek = Fusing(dlugoscsek , "#.##")
Knotstxt = Mid(gpstxt , 42 , 2)
If Knotstxt = "0." Then
Kmh = 0
Else
Kmh = Val(knotstxt)
Kmh = Kmh * 1.852
End If
Knotstxt = Fusing(kmh , "#.#" )
Print "N=" ; Szerokosctxtst ; "'" ; Szerokosctxtmin ; "'" ; Szerokosctxtsek ;
Print "E=" ; Dlugosctxtst ; "'" ; Dlugosctxtmin ; "'" ; Dlugosctxtsek ;
Else
Print "BRAK ODCZYTU GPS "
End If
End If
Return
|
niestety program zwraca mi ciągle "brak odczytu gps"
proszę o sprawdzenie i korektę.
witam ponownie,
sprawdzilem co rpzychodzi mi z gps do procesora usuwajac warunek
| Code: |
if dobry otczyt ="A" then
|
w terminau dostaje dziwne znaki :)
| Quote: |
Ç'0.00E=‚b'rb'0.00N=.8'83'0.00E=9.'49'0.00N=b˛'˘b'0.00E=’b'š‚'0.00N=09',5'0.0
|
co moze byc przyczyna zlego odbioru??
atmega i gps pracuje na 3.3V
pozdrawiam michal.[
|
|
| Back to top |
|
 |
M. S. Poziom 22

Joined: 12 Jan 2005 Posts: 1508 Location: Czechowice - Dziedzice
|
#12
14 May 2007 22:04 Re: GPS (HI-204) + ATmega8 |
|
|
|
Może masz inną wersję, lecz mój HAICOM HI-204III jest zasilany napięciem 5V i basta. Sprawdź w dokumantacji. Podaj prawidłowe zasilanie. Jeśli wysoki poziom wyniesie 3V3 to AT MEGA prawidlowo go odczyta jako "1". Ponadto jak zmieniasz program prawidłowo działający to zmieniaj go na lepsze a nie odwrotnie.
Powinno być:
Open "comd.2:4800,8,n,1,inverted" For Input As #1
a nie:
Open "comd.2:4800,8,n,1" For Input As #1
jeśli masz połączenie bezposrednie. Inaczej jedynka staje się zerem i odwrotnie - jednym słowem kaszanka.
|
|
| Back to top |
|
 |
creative Poziom 6

Joined: 27 Mar 2004 Posts: 18 Location: gliwice
|
#13
15 May 2007 11:20 Re: GPS (HI-204) + ATmega8 |
|
|
|
Witam, niestety nie posiadam takiego gpsa jak wasz, mam model novtel superstarII z allegro, prawdopodobnie tez z tego powodu nie moge miec zapisane przy otwarciu portu"inverted". po podniesieniu zasilania procesora do 5v zaczynam w terminalu odczytywac dane pozycji prawidlowo.
niestety mam kolejny problem, jesli chce użyć zmiennej np."gpstxt" w glownej petli programu zmienna jest pusta, dlaczego??
gdy robie print gpstxt w przerwaniu to wyswietla mi cala linijke.
dzieki za podpowiedzi
do kolegi M. S.
staram sie zmienac program na lepsze, niestety nie znam bascoma tak biegle jak wiekszosc z was, dlatego pisze na tym forum oczekujac pomocy.
|
|
| Back to top |
|
 |
Google

|
#
15 May 2007 11:20 |
|
|
|
|
|
| Back to top |
|
 |
M. S. Poziom 22

Joined: 12 Jan 2005 Posts: 1508 Location: Czechowice - Dziedzice
|
#14
15 May 2007 12:57 Re: GPS (HI-204) + ATmega8 |
|
|
|
Przepraszam. Pomyliłem głównych bohaterów tego wątku.
Sprawdź czy przez przypadek nie wstawiłeś gdzieś Gpstxt = "" poza początkiem podprogramu.
|
|
| Back to top |
|
 |