PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR u. GPS Maus



Andy123
05.02.2007, 15:51
Meine Überlegungen zu einem GPS-Empfängers .

Ein GPS-Empfängers besitzt eine Antenne.
Diese Antenne nimmt nun unterschiedliche Signale von z.B. maximal 20 Satelliten auf.
Jedes dieser 20 Satelliten gibt sein Signal auf einer anderen Frequenz ab.

Nun wertet ein Mikrocontroller des GPS-Empfängers diese Signale aus und legt diese in festgelegte Registerbereiche ab.
Diese ausgwerteten Daten werden jedoch erst in die festgelegten Registerbreiche des GPS-Empfängers gelegt, wenn die
Variabele x den Wert 4801 hat.

Dazu aber später mehr.......


Nun meine Frage: Was für Register sind es, die beim GPS-Empfängers verwendet werden. Sind es Arbeitsregiser, oder ist es das SRAM.


Nun kann man diese Registerbereiche des GPS-Empfängers auslesen.

Hierzu taktet man einfach den Binärcode aus den Registerbereiche des GPS-Empfängers hinaus.

Das bedeutet, dass der Mikrocontroller des GPS-Empfängers einen Eingang schaltet.
Gelangt zu diesem Eingang ein Strom, so beginnt er den Binärcode der festgelegten Registerbereiche auszulesen.


Wie aber das?
Pro registrierter positiven und herabfallenden Flanke beim Eingang des Mikrocontrollers des GPS-Empfängers wird eine Variabele hochgezählt.
Je nachdem was für ein Wert diese Variabele "in meinem Beispiel Variabele x" hat, weiss der Mikrocontroller des GPS-Empfängers , was für ein Bit er bei was für einen Registerbereich er auslesen muss.

z.B. liest er bei Variabele x Wert 1, das erste Register und das erste Bit aus.
hat die Variabele x den Wert 12, so liest er das zweite Register und das 4 Bit aus.


Je nachdem ob das Bit im Register eine 1 oder eine 0 hat, wird entweder ein Ausgang des Mikrocontrollers des GPS-Empfängers aktiviert oder nicht.

Wurde ein Ausgang aktiviert, so signalisiert es ein High Signal (1).
Wurde ein Ausgang nicht aktiviert, so signalisiert es ein Low Signal (0).



Was bedeutet dies nun aber für die Baudrate und dem Stop Bit und für mich, um den Binärcode aus dem GPS Empfänger zu bekommen.

Der GPS Empfänger besitzt nun z.B. folgende Eigenschaften:

- Baudrate 4800/sec
- 1 Stop Bit

4800 Bit = 600 Byte.

Da man ja die Baudrate des GPS Empfängers weiss, dann müsste man demzufolge auch wissen wieviele Register der Mikrocontroller des GPS-
Empfängers besitzt, wo er ja die ausgewerteten Daten der Satelliten ablegt.

4800 / 8 = 600

Demzufolge wären es 600 Register und jedes dieser Register wäre 8 Bit lang.

Da ja 8 Bit ein Zeichen in ASCII Format sein kann, so wären es auch maximal 600 Zeichen die man vom GPS Empfänger erhält.




Nur wie wie bekommt man nun den Binärcode aus dem Registerbereiche des GPS-Empfängers hinaus?

Ich verwende in meinem Beispiel den Mikrocontroller Atmega8.

Dieser aktiviert und deaktiviert immer einen Ausgang.

Beim Eingang des Mikrocontroller des GPS-Empfängers liegt nun eine positive Flanke an, die auch wieder herabfällt.
Nun weiss der Mikrocontroller des GPS-Emfängers, dass er die Variabele x um 1 addieren muss.

Anschliessend liest er den neuen Wert der Variabele x aus und je nachdem wie der Wert ist, greift er dann auf das entsprechende
Bit im Registerbereich des GPS-Empfängers drauf zu.

Ist der Wert dieses Bits eins, so wird der Ausgang des Mikrocontrollers des GPS Empfängers aktiviert.
Ist der Wert dieses Bits null, so wird kein Ausgang des Mikrocontrollers des GPS Empfängers aktiviert.


Nun wertet es mein Mikrocontroller beim Eingang aus und sollte den Wert 1 oder 0 dann in eine SD Karte ablegen.


Hat nun mein Mikrocontroller 4800 High/Low Signale zum Mikrocontroller des GPS Empfängers gesendet,
so hat die Variabele x den Wert 4800 beim GPS Empfänger.

Folgt nun noch einmal ein High/Low Signal von meinem Mikrocontroller zum Mikrocontroller des GPS Empfängers, so hat die
Variabele x den Wert 4801 beim GPS Empfänger.

Da die Variabele x beim GPS Empfänger nun den Wert 4801 hat, werden neue ausgewertete Daten des GPS Empfängers in die Registerbereiche des Mikrocontrollers gelegt.
Anschliessend wird die Variabele x des GPS Empfängers wieder auf den Wert 0 gesetzt.


Ich hoffe ihr könnt mir zu meinen Überlegung zum GPS-Empfänger helfen.

Bis denne.....

m4444x
05.02.2007, 20:21
Eigentlich senden die GPS-Satelliten alle auf der gleichen Frequenz nur mit einer anderen Codierung. Den Rest deines Posts verstehe ich nicht so ganz willst du den Empfänger nachbauen?

jschilli
06.02.2007, 10:46
Hä??????

Hast Du eigentlich mal eine GPS-Maus zerlegt? Dort werkelt ein etwas leistungsstärkerer uC als ein AVR evtl. ein DSP und hat so zwischen 256-512kB Flash.

Hast Du Dir schon mal das NMEA oder SiRf-Binary Protokoll angeschaut? Dort kriegst Du alle Daten über Satelliten, etc. aus einer solch einer Maus heraus...

Ich verstehe ehrlich gesagt nicht, was Du genau machen willst... Kannst Du bitte mal mehr über Deine Applikation berichten.

Grüsse,
Schimmi

Jaecko
06.02.2007, 16:37
Hab mal nen Garmin III offen gehabt (Display repariert); da versteckt sich ein Intel 386 drin...

jschilli
06.02.2007, 20:06
Sodele,

hab mal in meine zerlegte (defekte) RGM-2000 geschaut... Darin ist ein 512kByte Flash, und es werkelt ein SiRF GSP2e als Prozessor und ein SiRF GRF2i auf der HF Seite.

Leider lässt sich die Fa. SiRF nicht gerne in die Karten schauen, aber ich vermute mal es könnte sich um ein ARM Derivat handeln, das noch mit einsprechender Peripherie ausgestattet ist...

Grüsse,
Schimmi

Andy123
10.02.2007, 14:26
Noch eine Frage zum NMEA Protokoll.:

Wenn mir z.B. so ein Protokoll folgendermasen vorliegt:
$GPRMC,191410,A,4735.5634,N,00739.3538,E,0.0,0.0,1 81102,0.4,E,A*19

wird es von rechts nach links rausgeschoben, oder von links nach rechts