Hallo zusammen, hat jemand von euch Erfahrungen mit dem GPS Modul ORG-1315? Hat es jemand am laufen? Gruß mcl024
Anbei einmal das Datenblatt. Wo bekomme ich mehr Informationen über die verschiedenen Software-Befehle. Irgendjemand eine Ahnung?
Hi >Wo bekomme ich mehr Informationen über die verschiedenen >Software-Befehle. Welche meinst du genau? MfG Spess
Nun ja, die unter 8.2 SiRF Binary Verstehe ich unter output message das das GPS Modul mir etwas mitteilt? In welcher Form? Also Welches Bytes zuerst usw. Verstehe ich unter input message das ich dem GPS Modul etwas sende? Bsp.: 0x86 Set main serial port und dann? Welche Reihenfolge? Es fehlen doch informationen zu den einzelnen Befehle. Oder stelle ich mich zu blöd an.
Hi >Verstehe ich unter output message das das GPS Modul mir etwas mitteilt? >In welcher Form? Also Welches Bytes zuerst usw. Wenn du nicht auf Sirf Binary umschaltest sind das normale NMEA-Strings. Also die Daten stehen im Klartext drin. Beschreibungen sind haufenweise im Internet zu finden. Such mal nach 'NMEA Reference Manual'. >Verstehe ich unter input message das ich dem GPS Modul etwas sende? >Bsp.: > >0x86 Set main serial port >und dann? Welche Reihenfolge? Gilt das gleiche, wie für die Input Messages. >Es fehlen doch informationen zu den einzelnen Befehle. Oder stelle ich >mich zu blöd an. Über den Tabellen steht schon, das das Modul NMEA-xxx und Sirf Binary unterstützt. MfG Spess
OK. Vielen Dank erstmal. Muss mir das mal genau anschauen mit SiRF und NMEA. Melde mich dann wieder.
Wie versteht ihr das mit dem ON_OFF Pin. Muss der die ganze Zeit mit angegebenen Taktrate laufen oder reicht es wenn er ein High ist? Mein Problem ist das ich beim Ausgang PPS kein Puls bekomme. Da passiert nichts. Soweit wie ich das jetzt mit SiRF Befehlen verstanden habe gibt es auch kein "START" Befehl.
>Mein Problem ist das ich beim Ausgang PPS kein Puls bekomme.
Dann halte die Antenne mal 30 Minuten aus dem Fenster.
Ok. Und der ON OFF Pin wie muss der sein? Getaktet oder High? Was denkt ihr laut dem Datenblatt?
Matthias Laubnitz schrieb: > Ok. Und der ON OFF Pin wie muss der sein? Getaktet oder High? Was denkt > ihr laut dem Datenblatt? Ein High-Impuls schaltet das Modul ein, der nächste wieder aus. Details zum Timing stehen im Datenblatt (100ms high as recommended).
Also irgendwie klappt das nicht. Ein ON_OFF Impuls zeigt keine Wirkung. Am SPI Ausgang vom GPS Modul passiert nichts auch wenn ich z.B SiRF ID 152 sende bekomme ich keine Antwort. Ein PPS bekomme ich auch nicht wenn ich das Modul 30min aus dem Fenster halte. Es passiert einfach gar nichts. Wenn ich den ON_OFF mit dem beschriebenen Timing durchgehend laufen lasse bekomme ich am GPIO2 ca. alle 1,4s einen ganz kurzen Impuls (µs). Vielleicht habt ihr ja noch ein paar Ideen
Hi >Am SPI Ausgang vom GPS Modul passiert nichts auch wenn ich z.B SiRF ID >152 sende bekomme ich keine Antwort. Dir ist aber bewusst, das das Modul ein SPI-Slave ist. Von allein sendet das gar nichts. Und ist es auch über COMM_SEL aktiviert? Warum nimmst du nicht das UART-Interface? MfG Spess
Ja dessen bin ich mir bewusst. Daher spreche ich es ja auch mit ID 152 "Poll Navigation Parameter" an, darauf sollte es eigentlich mit ID 19 antworten. COMM_SEL ist mit 0Ohm gegen Masse gezogen. Mit UART kann ich es nicht probieren da ich es nicht auf meiner Leiterplatte im Layout vorgesehen habe.
Hi >Ja dessen bin ich mir bewusst. Daher spreche ich es ja auch mit ID 152 >"Poll Navigation Parameter" an, darauf sollte es eigentlich mit ID 19 >antworten. Nur, wenn du den Takt vorgibst. >Mit UART kann ich es nicht probieren da ich es nicht auf meiner >Leiterplatte im Layout vorgesehen habe. Wäre besser gewesen. Aber du wirst doch testweise an das TX-Pin herankommen? Wo bekommt man eigentlich diese Module? MfG Spess
Ich hatte das geliche Problem mit dem ORG 1318. hier erwartet das GPS-Modul zur Übertragung von Daten... "The external SPI master shall transmit the following idle pattern, 0xA7B4" Also abwechselnd 0xA7 oder 0xB4 da ja 8 Bit Register. Schau mal bei Round Solutions nach. VG
ich habe es über round solution für ca. 31 Euro ohne MwSt als Privatmann gekauft. Ist echt klein das Teil. Aber es ärgert mich das die Beschreibung so dünn ist. Naja vielleicht mir auch nur das Wissen. Wie kann ich denn den SPI TAkt weiterlaufen lassen? Atmega32.
Hi
>Wie kann ich denn den SPI TAkt weiterlaufen lassen? Atmega32.
In dem du etwas sendest.
MfG Spess
Spess53 schrieb: > In dem du etwas sendest. Muss ich während dessen CS auf Low ziehen. Eigentlich ja schon oder?
Also als erstes schalte ich den ON_OFF Pin auf High nach 100ms wieder auf Low. Dann warte ich ca. eine halbe Sekunde und sende folgendes:
1 | uint8_t payload_ID152[10] = {0xA0,0xA2,0x00,0x02,0x98,0x00,0x00,0x98,0xB0,0xB3}; |
2 | |
3 | int main (void) |
4 | {
|
5 | SPI_Init(); |
6 | spi_sent_sirf_message(152); |
7 | |
8 | for(;;) |
9 | {
|
10 | spi_send_byte(0xA7); |
11 | spi_send_byte(0xB4); |
12 | }
|
13 | }
|
14 | |
15 | void SPI_Init(void) |
16 | {
|
17 | SPCR |= (1<<SPR0) | (1<<SPR1) | (1<<MSTR) | (1<<SPE); // Schiebetakt = Sytemtakt/128 |
18 | // Taktphase = versetzt
|
19 | // Ruhezustand Clock = Low
|
20 | // Betrieb = Master
|
21 | // Richtung = MSB zuerst
|
22 | // Freigabe = SPI frei
|
23 | // Interrupt = deaktiviert
|
24 | }
|
25 | |
26 | void spi_send_byte(uint8_t value) |
27 | {
|
28 | DDRA |= (1<<DDA1); // GPS CS Low |
29 | SPDR = value; // Daten uebernehmen und starten der Uebertragung |
30 | while( ! (SPSR & (1<<SPIF))); // warten bis SPIF=1 (Uebrtragung beendet) |
31 | value = SPDR; // SPIF wieder 0 (Pseudolesen) |
32 | DDRA &= ~(1<<DDA1); // GPS CS High |
33 | }
|
34 | |
35 | void spi_sent_sirf_message(uint8_t ID) |
36 | {
|
37 | uint8_t i; |
38 | |
39 | DDRA |= (1<<DDA1); // GPS CS Low |
40 | for(i=0; i<10; i++) |
41 | {
|
42 | spi_send_byte(payload_ID152[i]); |
43 | }
|
44 | DDRA &= ~(1<<DDA1); // GPS CS High |
45 | }
|
aber leider kommt trotzdem nichts auf MISO Leitung bei mir an.
Im SiRF Protokoll ist beschrieben das als erstes die Start Sequence: 0xA0A2 gesendet werden soll danach die Payload Length: 2-Bytes (15Bit) dann die Daten selbst und dann eine die Checksum: 2-Bytes (15Bit) und zum Abschluss die End Sequence: 0xB0B3 Meine Frage ist nun wie sende ich bei Payload Length und Checksum nur 15Bit?
Hi >Meine Frage ist nun wie sende ich bei Payload Length und Checksum nur >15Bit? Weiss ich nicht. Aber bist du sicher, das sich das Modul überhaupt im SIIRF-Mode befindet? Die Module mit SIRF-Chipsatz, die ich kenne, befanden sich im Auslieferungszustand im NMEA-Mode. Um das SIRF-Protokoll zu nutzen, mussten die erst umprogrammiert werden. Habe ich aber nie gemacht. MfG Spess
Ok, danke für den Hinweis. Mit Set Protocol Message ID135 kann man das SiRF Binary Protocol aktivieren. Habe ich auch gemacht, ändert allerdings auch nicht. Es reagiert nicht.
Hi Dumme Frage: Was stört dich an NMEA? Du hast dir den, mit deinen Vorkenntnissen, denkbar ungünstigsten Weg (SPI, Sirf-Protokoll) gesucht. MfG Spess
Spess53 schrieb: > Du hast dir den, mit deinen Vorkenntnissen, denkbar ungünstigsten Weg > (SPI, Sirf-Protokoll) gesucht. Warum? Was heißt mit meinen Vorkenntnissen. Mein beschriebener C-Code ist doch nicht falsch. Ich verstehe nur das mit den 15 Bits nicht. Du anscheinend ja auch nicht. Spess53 schrieb: > Dumme Frage: Was stört dich an NMEA? Nichts! Ich möchte trotzdem wissen warum mein Weg nicht funktioniert. Sorry soll nicht böse gemeint sein. Bin nur ein wenig frustriert.
Hi >Was heißt mit meinen Vorkenntnissen. Zur Erinnerung: Beitrag "Re: Inbetriebnahme ORG-1315" Beitrag "Re: Inbetriebnahme ORG-1315" >Mein beschriebener C-Code ist doch nicht falsch. Weiß ich nicht. Bin notorischer Assemblerprogrammierer. >Ich verstehe nur das mit den 15 Bits nicht. Du anscheinend >ja auch nicht. Muss ich auch nicht. Meine Module spielen alle auch ohne dieses Wissen. MfG Spess
So habe das GPS-Modul nun endlich mal am laufen. Nachdem ich nach dem ersten Low-High-Low Impuls ca. 1s später den ON_OFF-Pin wieder auf High geschaltet habe, stieg der Stromverbrauch und das GPS-Modul sendet Daten. Die ich allerdings nicht deuten kann. Vielleicht kann ja jemand von euch damit etwas anfangen
Hi >Die ich allerdings nicht deuten kann. Vielleicht kann ja jemand von euch >damit etwas anfangen Nein. Bist du sicher, das du den richtigen SPI-Mode ,also CPOL, CPHA und DORD, benutzt? MfG Spess
Also im Datenblatt steht: MSB zuerst: Also DORD = 0; Taktphase versetzt: Also CPHA = 0; und bei dem Ruhezustand vom Clock bin ich mir nicht ganz sicher. Aus dem Datenblatt interpretiere ich das es egal ist, also CPOL = 0; oder CPOL = 1;
Moinsen, offensichtlich benutzt du den falschen SPI-Mode, die Daten sind um ein Bit nach rechts geschoben, erkennt man an den Füllworten: 0x53DA ergibt sich aus 0xA7B4 >> 1 Gruß, Thorsten
Thorsten S. schrieb: > 0x53DA ergibt sich aus 0xA7B4 >> 1 Ok danke für den Hinweis. Aber was bedeutet 0xA7B4. Och hätte eher 0xA0A2 erwartet.
Matthias Laubnitz schrieb: > Aber was bedeutet 0xA7B4. Och hätte eher > 0xA0A2 erwartet. 0xA7B4 ist das Füllwort, daß sich auch in Deinem Sourcecode wiederfindet... Offensichtlich sendet das Modul dies zwischen den Messages. 0xA0A2 usw. findest Du, in Deinem Log ab Adresse 0x0030, wenn Du die Bitverschiebung rückgängig machst. Da steht: 50 51 00 01 09 00 80 09-D8 59 DA 53 DA 53 D0 51 Wenn wir das jetzt alles um ein Bit nach links schieben, ergibt sich: A0 A2 00 02 12 01 00 13 B0 B3 B4 A7 B4 A7 A0 A2 Was die Daten bedeuten, mußt Du aber selbst herausfinden, jedenfalls sind diese Daten vom Modul gesendet worden. Gruß, Thorsten
Super vielen Dank. Wenn ich CPHA=1 setze kommen die Daten so wie erwünscht. Nur warum steht im Datenblatt CPHA=0
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.