Forum: Mikrocontroller und Digitale Elektronik Inbetriebnahme ORG-1315


von Matthias L. (mcl024)


Lesenswert?

Hallo zusammen,

hat jemand von euch Erfahrungen mit dem GPS Modul ORG-1315? Hat es 
jemand am laufen?

Gruß
mcl024

von Matthias L. (mcl024)



Lesenswert?

Anbei einmal das Datenblatt.
Wo bekomme ich mehr Informationen über die verschiedenen 
Software-Befehle.

Irgendjemand eine Ahnung?

von spess53 (Gast)


Lesenswert?

Hi

>Wo bekomme ich mehr Informationen über die verschiedenen
>Software-Befehle.

Welche meinst du genau?

MfG Spess

von Matthias L. (mcl024)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

OK. Vielen Dank erstmal. Muss mir das mal genau anschauen mit SiRF und 
NMEA.

Melde mich dann wieder.

von Matthias L. (mcl024)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>Mein Problem ist das ich beim Ausgang PPS kein Puls bekomme.

Dann halte die Antenne mal 30 Minuten aus dem Fenster.

von Matthias L. (mcl024)


Lesenswert?

Ok. Und der ON OFF Pin wie muss der sein? Getaktet oder High? Was denkt 
ihr laut dem Datenblatt?

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

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).

von Matthias L. (mcl024)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

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

von Kalle (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

Hi

>Wie kann ich denn den SPI TAkt weiterlaufen lassen? Atmega32.

In dem du etwas sendest.

MfG Spess

von Matthias L. (mcl024)


Lesenswert?

Kalle schrieb:
> Schau mal bei
> Round Solutions nach.

Wo da?

von Matthias L. (mcl024)


Lesenswert?

Spess53 schrieb:
> In dem du etwas sendest.

Muss ich während dessen CS auf Low ziehen. Eigentlich ja schon oder?

von SPI (Gast)


Lesenswert?

Hi,
ja der CS musst du dabei auf LOW ziehen.

Servus

von Kalle (Gast)


Lesenswert?

Schau Dir mal den Beitrag an: "SPI Verständnisproblem". VG

von Matthias L. (mcl024)


Lesenswert?

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.

von Matthias L. (mcl024)


Lesenswert?

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?

von Spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Angehängte Dateien:

Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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;

von Thorsten S. (thosch)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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.

von Thorsten S. (thosch)


Lesenswert?

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

von Matthias L. (mcl024)


Lesenswert?

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
Noch kein Account? Hier anmelden.