Forum: Mikrocontroller und Digitale Elektronik Atmega64 + SPI + GPS Modul


von spiler (Gast)


Lesenswert?

Hallo,

habe meinen SPI konfiguriert und schicke via diesem meinem GPS Modul 
Befehle im NMEA Standard.

Eigentlich kann nichts schief gehen. Leider reagiert er nicht so, wie 
ich das möchte.

Hab jetzt mal alles umgeschrieben, dadurch ist der Fehler wohl leichter 
zu finden.
1
//GGA Off ($PSRF103,00,00,00,01*24) 
2
int GGA_Off[]={0x24,0x50,0x53,0x52,0x46,0x31,0x30,0x33,0x2c,0x30,0x30,0x2c,0x30,0x30,0x2c,0x30,0x30,0x2c,0x30,0x31,0x2a,0x32,0x34,0x0d,0x0a};

Dieses Array sende ich dann mit SPI innerhalb einer for-Schleife.
1
for(int i=0; i<=24; i++)
2
{
3
SPI_Master_Transmit(GGA_Off[i]);
4
}

Wie gesagt, alles vereinfacht.

Nun zur eigentlichen Frage, ist was falsch und was kann ich besser 
machen?


Am Rande:
1
void SPI_Master_init(void)
2
{
3
  // MISO als Eingang
4
  DDRB &= ~(1 << PB3);
5
  // Setze MOSI , SCK , and SS als Ausgang
6
  DDRB |= ((1<<PB2)|(1<<PB1) | (1<<PB0)); 
7
  
8
  CLEAR_CS();
9
  _delay_ms(10);
10
  
11
  // Enable SPI, Master, set clock rate fck/128, MSB first
12
  SPCR |= ((1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0)); 
13
  
14
  return;
15
}

von spess53 (Gast)


Lesenswert?

Hi

>int GGA_Off[]={0x24,0x50,0x53,...

Ist ein int bei GCC nicht 16 Bit?

>for(int i=0; i<=24; i++)

Es sind incl. CR/LF 25 Zeichen.

MfG Spess

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Sicher, dass das GPS Modul über SPI quasselt?
Meistens quasseln die doch über UART und die SPI Pins sind für was 
anderes da.

von spiler (Gast)


Lesenswert?

Danke für den Tipp mit dem Integer, ich nehm dann wohl lieber "uint8_t"

Ich bin mir da nicht mehr so sicher, ob es über ISP geht.
Leider sind meine HW-UARTs schon verplant.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Wie heist das Modul denn?
Ansonsten gibts noch Software UART, sone hohe Baudrate sollte das Modul 
ja nicht ausspucken.

von Cyblord -. (cyblord)


Lesenswert?

spiler schrieb:
> Ich bin mir da nicht mehr so sicher, ob es über ISP geht.
> Leider sind meine HW-UARTs schon verplant.

SPI, ISP, UART alles doch irgendwie dasselbe oder wie?

Wen interessiert schon das Interface, hauptsache mal drauf los proggen 
und das Forum um Hilfe bitten.

Wie wärs wenn du erstmal rausfindest, was das für ein GPS-Modul ist, 
welche Schnittstellen es hat und wofür die gut sind? Und dann gehts 
weiter.

gruß cyblord

von spiler (Gast)


Lesenswert?

Martin Wende schrieb:
> Wie heist das Modul denn?

Es ist der A2035-H von Maestro

cyblord ---- schrieb:
> SPI, ISP, UART alles doch irgendwie dasselbe oder wie?

Hab zwei weitere Bauteile die ich via ISP anspreche, deshalb will ich 
nicht auch noch nen I2C Bus haben. Die Uarts sind wie gesagt schon 
verplant.
Da der Baustein ISP hat, muss es auch damit gehen.

Der GPS Baustein hätte neben ISP, wie gesagt, noch i2c und uart.

von spess53 (Gast)


Lesenswert?

Hi

>Da der Baustein ISP hat, muss es auch damit gehen.

Anscheinend nicht so einfach:

Beitrag "Schlampiges GPS-Receiver Datenblatt (Maestro 2035-H)"

MfG Spess

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Jetz hör doch mal auf von ISP zu reden das ding heist verdammt nochmal 
SPI!

Und im Datenblatt steht EINDEUTIG:
>1.2 Characteristics Overview
>The module’s most important characteristics are:
>Operable at 3.3V / 29mA (TBC) @ 1fix per second
>• UART interface at CMOS level

>3.3 Serial Port Settings
>The default configuration within the custom-specific GPS firmware is:
>• Serial 0 (NMEA) 4800 baud, 8 data bits, no parity, 1 stop bit, no flow control

I2C ist zwar Hardwaremäßig da aber wird wohl auch nicht genutzt.
Ist bei vielen Modulen so, dass noch SPI, USB, I2C und sonstwas als Pin 
rausgeführt wird aber die Software auf dem Modul spricht nur UART.

Als Trost hier nen guter Software UART der Timerbasiert ist und somit 
nicht viel Rechenzeit schluckt:
http://www.rn-wissen.de/index.php/Software-UART_mit_avr-gcc

von spiler (Gast)


Lesenswert?

Martin Wende schrieb:
> Jetz hör doch mal auf von ISP zu reden das ding heist verdammt nochmal
> SPI!

Vertippt.. wieder

Danke für den Link. Ich werd mich noch weiter daran, mittels SPI, 
versuchen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Noch ganz wichtig für den SoftUART:
Als RXD brauchts unbedingt den ICP Pin eines Timers und der SoftUART 
benötigt dann natürlich auch diesen Timer.
Der TXD Pin kann frei gewählt werden, es sind auch mehrere TXD möglich 
(mit der selben Baudrate dann natürlich).

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.