Hallo Schreibe in Bascom ein kleines Programm das die GPS koordinaten auf ein display anzeigt. Die hardware ist von display 3000 der Atmega hat ja laut datenbaltt 2 UARTS eine an PE0 und PE1 dort habe ich einen MAX 3232 dran der mein UBLOX MS1E versorgt. Wenn ich am MAX 3232 den PC dran hänge bekomme ich auch GPS daten nur am ATMEL nicht. wie kann ich die daten in den atmega hohlen mit input kommt nichts wie kann ich diese uart ansprechen und nicht die andere. Bin für jede hilfe dankbar habe schon die leitungen gedreht RX<->TX nichts
ohne deinen Code zu kennen wird es schwierig, haste dass denn so deklariert? $baud = 4800 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Hallo habe folgendermaßen gemacht regfile = "m128def.dat" $crystal = 16000000 $baud = 4800 . .LCD Deklaration Dim Inbound As Byte Open "COM1:" For Binary As #1 Do Input #1 , Inbound lcd_string="NMEA:" + Chr(inbound) Lx1 = 1 Ly1 = 24 Fontsize = 0 Lcd_fcolor = Weiss Lcd_bcolor = Dunkelblau Gosub Lcd_print Loop LCD routinen end ich sehe nur das NMEA auf dem display. was mache ich falsch???? auch der Print befehl an COM2: geht nicht auf meinen Terminal kommt nichts an habe schon TX und RX vertauscht kein erfolgt.
Inbound, lcd_string, müssen das denn nicht auch Stringvariablen werden? Dim lcd_string as String*15
>eine an PE0 und PE1 dort habe ich einen MAX 3232 dran der mein UBLOX >MS1E versorgt. Du hast zwischen dem ublox und dem mega nen max3232 ? Der ublox macht doch 0/5V pegel oder ? Dann kannste direk den ublox an den mega port hängen ;) mega und ublox machen 0/5V Pegel Der PC hat -12V/12V, deshalb brauchst du zum PC hin den max3232 Wandler ;) Bye, Simon
Hallo Laut Datenblatt hat der GPS Empfänger einen 3,3V Pegel und muß mit einem MAX 3232 ausgerüstet werden.
nein, nicht wenn er am mega hängt ;) nur zum PC hin ;) Zum mega würde ich ublox TX --> mega RX (erkennt auch 3.3V als high) mega TX --> 22k/33k Spannungsteiler -> 3.3V mege TX o---[22k]-----X-----[33k]-----ognd (bei X den ublox RX hin) Den max brauchst du nur um ihn auf rs232 pegel zu bringen (+/- pegel) BYe, Simon
Habe es direkt an den GPS Empfänger angeschlossen so jetzt kommt was aber wie kann man nun den gesammten Datensatz einlesen z.b $GVTG...............................*32 $GGGA...............................*98 ich bekomme nur $G0........*$01 usw vielen dank
>aber wie kann man nun den gesammten Datensatz einlesen Man könnte step by step jedes Zeichen einlesen und nach einer bestimmten Zeichenfolge, also nach dem Anfang des Strings, suchen. z.B suche nach "$GVTG" Wurde noch kein "$GVTG" gefunden, werden alle nachfolgend eingelesenen Zeichen verworfen. Hat Dein µC "$GVTG" gefunden liest er alle Datenfelder ein. Die Datenfelder werden Durch Kommatas voneinander getrennt. Zum Ende des "$GVTG"-Strings wird ein "*" empfangen. Ob Du die Prüfsumme auswertest oder nicht, das ist Dir überlassen. Man könnte die Datenfelder in den SRAM zur weiteren Verarbeitung ablegen. In Assembler habe ich es so gelöst: http://www.mikrocontroller.net/forum/read-4-354990.html Hoffentlich konnte ich Dir durch den kleinen Tipp etwas weiter helfen. Bernhard
hallo Habe noch folgendes Problem die Daten kommen so rein es sieht so aus als ob der Atmega nicht hinterher kommt GPGGA,235947.000,0000.0000,N,0000.0000,E,017*00 ,071000,,*1C ,M,,N,,K*4E GPGGA,235947.000,0000.0000,N,0000.0000,E,0170 ,,,071000,,*1C ,,N,,K*4E GPGGA,235947.000,0000.0000,N,0000.0000,E,01700 ,,071000,,*1C M,,N,,K*4E GPGGA,235947.000,0000.0000,N,0000.0000,E,017038,M,,,,0000*00 000,*4C C,235947.000,V,0000.0000,N,0000.0000,E,,,017*1C GPGGA,235947.000,0000.0000,N,0000.0000,E,017038 ,071000,,*1C ,M,,N,,K*4E GPGGA,235947.000,0000.0000,N,0000.0000,E,017038000*00 0,,*1C TG,,T,,M,,N,,K*4E $regfile = "m128def.dat" $crystal = 16000000 $baud = 4800 $baud1 = 4800 On Urxc Onrxd 'InterruptRoutine setzen Enable Urxc 'Interupt URXC einschalten Enable Interrupts Dim Buffer As Byte Dim Str1 As String * 30 Dim Counter As Byte Open "COM1:" For Binary As #1 Open "COM2:" For Binary As #2 Do Loop Onrxd: Buffer = Udr Select Case Buffer Case Asc( "$") Str1 = "" Case 13 Counter = 1 Case Else Str1 = Str1 + Chr(buffer) End Select If Counter = 1 Then Print #2 , Str1 Str1 = "" Buffer = "" Counter = 0 End If Return sollte aber mit anfang $ und ende line feed das scheint ja zu klappen aber das $ nicht. hat jemand eine idee mit bascom, assembler verstehe ich nicht vielen dank
So sieht ein komplettes Paket von mir aus: $GPGGA,105836,5059.2543,N,01101.2294,E,0,00,0.0,248.0,M,248.0,M,0.0,0000 *51 $GPGSA,A,1,06,02,06,06,06,02,06,06,02,06,06,06,0.0,0.0,0.0*34 $GPGSV,3,1,12,06,48,032,00,02,20,309,00,06,48,032,00,06,48,032,00*79$GPG SV,3,2,12,06,48,032,00,02,20,309,00,06,48,032,00,06,48,032,00*7A $GPGSV,3,3,12,02,20,309,00,06,48,032,00,06,48,032,00,06,48,032,00*7B $GPRMC,105836,V,5059.2543,N,01101.2294,E,0.00,0.00,100506,0.0,W*7D Dauert ca. 800ms und wird 1x pro Sekunde gesendet. Versuche doch ersteinmal die Daten im SRAM abzulegen? Kann sein, dass Bascom es sonst nicht schafft? Bernhard
>aber wie???
da kann ich Dir leider nicht helfen, ich treibe nur in Assembler mein
unwesen.
Da ich bei BASCOM nicht genau weiß, was der µC wirklich intern so tut
oder nicht tut.
Bernhard
Wenn ich morgen zeit finde schreibe ich dir ein kurzes test programm in assembler, dass du aufflashen kannst. Es legt die daten im ram ab (und aktualisiert sie immer) und sendet sie dann über die serielle an PC oder sonstwas
das wäre toll ist es ratsam sich mit assembler zu beschäftigen??? gibt es dazu ein buch und etwas für anfänger??? danke
Hi @Sven Programmiere auch hartnäckig in Assembler. Wenn ich dein BASCOM-Programm richtig verstanden habe, definierst du beim erkennen von '$' einen leeren String. Dann kann am Anfang kein '$' stehen. Meinesachtens müsste es heissen Str1 = "$". Mit 16MHz dürfte es eigentlich keine Probleme geben. Ich habe ein GPS programmiert, das mit 11,..MHz läuft und problemlos alle Daten(Position,Höhe, Richtung,Datum Uhrzeit..), sowie einen Kartenausschnitt mit der Position anzeigt. MfG HG
Ja Du hast recht aber es fehlt trotzdem was wenn ich zeichenweise Auslese kommt immer nur $ G P G G A............* 8 K oder mal nur C , 2 3 5 9 4 7 . 000,V,0000.0000,N,0000.0000,E,,,017*1C und niemals $GPRMC..................*9I oder auch $GPVTG..........*9O Wenn ich das GPS an meinen PC über Terminal anspeche kommt schön zeile für zeile die eintzelnen Protokolle. Vielen Dank
Hallo Sven, >ist es ratsam sich mit assembler zu beschäftigen??? Ich denke ja, hat einige Vorteile >gibt es dazu ein buch und etwas für anfänger??? Du findest hier in der Codesammlung genügend einfache Beispiele, brauchst nur unter "Assembler" zu suchen >Wenn ich das GPS an meinen PC über Terminal anspeche kommt schön >zeile für zeile die eintzelnen Protokolle Stell uns doch mal ein komplettes Protokoll, möglichst im eingeloggten Zustand des GPS-Empfängers zur Verfügung, denn Hauke wollt Dir ein kleines Programm schreiben, vielleicht muss er es an Deinen GPS-Empfänger sogar etwas anpassen. Bernhard
Hi Mir ist gerade noch etwas aufgefallen. Du schreibst,daß du dein GPS-Modul über einen MAX3232 an den AtMega anschliesst. Für die Verbindung µBlox - PC ist das meinesachtens korrekt. Zwischen µ-Blox und AtMega sollte eine direkte Verbindung ausreichen. Bei Rs232 musst du zweierlei unterscheiden: 1.Protokoll: Das regelt Startbit-Datenbits-Stopbit(s) 2.Pegel: Negative Spannung ist 1, positive Spanung ist 0. Der Max3232 wandelt 3,3V Pegel in Rs232-Pegel und zurück. Am AtMega dürfen aber nur Spannungen zwischen 0V und Betriebspannung anliegen. MfG HG
Habe es jetzt hinbekommen Problem war ein Timing Problem. Jetzt sieht es gut aus nur der ublox ms1e findet keine Sat's trotz das die antenne aus meinen Dachfenster hängt. vielen dank für eure mithilfe aber ohne eure tips hätte ich es nicht geschafft
@SVEN >Jetzt sieht es gut aus nur der ublox ms1e findet keine Sat's trotz >das die antenne aus meinen Dachfenster hängt. Seit gestern läuft mein µ-BLOX Empfänger :) Nach wenigen SEKUNDEN synchronisiert er seine Uhrzeit: "$GPGGA,213926" In folgenden Strings sieht man, welche Satelliten er gerade mit welcher Qualität empfängt: $GPGSV,3,1... $GPGSV,3,2... $GPGSV,3,3... In meinem Mittschnittbeisbiel: er empfängt den Sat-Nr: 05+31+34+04 usw Mittschnitt von jetzt: $GPGGA,213926.206,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,,,,0000*07 $GPGLL,0000.0000,N,00000.0000,E,213926.206,V*2A $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPGSV,3,1,12,05,89,000,31,30,81,000,,24,61,000,,04,53,000,*77 $GPGSV,3,2,12,17,48,000,,23,43,000,,09,33,000,,25,26,000,*7D $GPGSV,3,3,12,06,21,000,,10,11,000,,14,06,000,,07,-15,000,*53 $GPRMC,213926.206,V,0000.0000,N,00000.0000,E,,,140606,,*18 Liegt auch eine Spannung an der Antenne an? Evenuell Antennenspannung Vant mit Drossel sieben. Schau mal hier nach, da wurde das Problem auch mit angesprochen: http://www.mikrocontroller.net/forum/read-1-358089.html Bernhard
Sorry, dass ich mcih nciht gemeldet habe /kein programm geschrieben habe bis jetzt. Mir ist leider etwas dazwischen gekommen. Aber wenn du es jetzt auch so hinbekommen hast ist ja schon :) Aber ich rate dir auch dich mal mit assembler zu beschäftigen. So lernt man sehr viel über die prozessorstruktur und was eigentlich bei einem befehl passiert usw. Man erkennt auch schnell, wie man in hochsprachen geschwindigkeitsoptimirt programmieren kann.
@svenP Was war das für ein Timingproblem und ist der obige Code dann oK gewesen??
@svenP Hallo, mich würde interessieren wie du das jetzt gelöst hast, ich versuche auch ein LEA-4H Modul an den mega8 zu hängen, was mir bisher nicht gelingt. Hast du U-Blox TX auf mega RX, und mega TX auf U-Blox RX, direkt angeschlossen ? Softwaretechnisch bekomme ich bei 9600 baud auch immer Data overrun was ich mir bei 16Mhz Takt eigentlich nicht erklären kann, soviel mache ich zwischen zwei UDR reads nicht. Grüße Ingo
Der Empfangsbuffer war zu klein. habe ihn von 40 auf 255 erhöht und die Daten können Verarbeitet werden. Bin aber jetzt auf C mit WINAVR umgestiegen RS232 Kommunikation ist besser finde ich.
Magst du, wenn du schon den Quellcode bereit stellst, auch den Quellcode vom PC-Programm posten?! Ich will mir nämlich sowas ähnliches Schreiben, aber mir gehlt son bißchen der Ansatz. Gruß
Hallo, ich wäre auch daran interessiert. Ich habe aber einen ATmega 32, an den ich eine GPS Maus hängen will und die Daten dann auch aufzeichnen will. Wäre super wenn mir einer helfen könnte, oder den Code schicken könnte. LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.