Forum: Mikrocontroller und Digitale Elektronik RFM12 -- SPI Configuration


von Alexander U. (alexander_u)


Lesenswert?

Grüss euch,

Ich experimentiere gerade mit zwei RFM12 Modulen. Bevor ich aber mit der 
Initialisierung etc beginne, wollt ich sicher stellen, dass die SPI 
Kommunikation einwandfrei ist. In einen Beitrag hier hab ich gelesen, 
man könne direkt nach dem Einschalten das Statusregister abfragen und 
man bekomme 0x4000 als Antwort. Tja, aber alles was ich bekomme ist 
0x0000.

Hier ein paar Auszüge aus meinem Code:
1
#use spi(MODE=0, BITS=16, FORCE_HW)
1
setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_16);
1
  output_low(pin_b2);    //SS
2
  value1 = spi_xfer(0x00);
3
  value2 = spi_xfer(0x00);
4
  output_high(pin_b2);  //SS



Direkt nach meiner SPI Sequenz geht nIRQ auf HIGH, also reagieren tut 
das Ding.

Beschaltung ist die Standart Mindestbeschaltung fürs RFM12. Aufgebaut 
auf ein kleiens Steckbrett, verbunden mit einem kleinem Demoboard.
PIC18F4550 + MPLAB + CCS
Ich verwende die Hardware SPI-Pins.

Vielleicht hat ja jemand eine Idee,

danke,
mfg alex,

von Jens (Gast)


Lesenswert?

Ich arbeite normal mit Atmel, aber bist du dir sicher, dass deine Init 
richtig ist?
Da steht doch was von 16 bits und du überträgst aber zwei mal 8 bit.

Gruß

von Alexander U. (alexander_u)


Lesenswert?

Servus,

Ich habs auch schon so probiert:
1
output_low(pin_b2);    //SS
2
spi_write(0x0000); 
3
value3 = spi_read();
4
output_high(pin_b2);  //SS
1
output_low(pin_b2);    //SS
2
value3 = spi_xfer(0x0000);
3
output_high(pin_b2);  //SS

Das BITS=16 im #use hab ich auch schon auskommentiert, bringt auch nix.


mfg,
alex,

von l-hase (Gast)


Lesenswert?

Hi
versuche den Osz. vom RFM Modul am Ausgang ein u. ausschalten,
dann weist du ob die SPI funkt.
l-hase

von Michael D. (etzen_michi)


Lesenswert?

Guten Tag.

Ich würde mal empfehlen, nachdem du die Daten mit 0x00 angefordert hast 
sie mit 0xFF (NOP) raus zu schieben.

Dann solltest du 0x08 erhalten.
Hier mal meine UART konfiguration (ATmega8, vielleicht hilft dir das was 
in verbindung mit dem Datenblatt:
SPCR= 1<<SPIE | 1<<SPE | 1<<MSTR | 1<<SPR1;

Ich hatte zuerst den Fehler gemacht, das ich ohne Interrupts gearbeitet 
hatte und nicht ausreichen lange gewartet hatte weswegen nur Müll raus 
kahm.

Hoffe ich konnte helfen.

von Alexander U. (alexander_u)


Lesenswert?

@l-hase
Werd ich mal ausprobieren wenn ich ein Oszi zur Verfügung hab. Nächste 
Woche voraussichtlich.

@Michael D.
Leider bringt mich das iwie nicht weiter.
Was meinst du mit "...sie mit 0xFF (NOP) raus zu schieben." ?

Im speziellem beziehe ich mich auf dieses Topic:
Beitrag "Statusregister des RFM12 auslesen"

mfg alex,

von Alexander U. (alexander_u)


Lesenswert?

Bin grad dabei das RFM12 zu initialisieren und dazu studiere ich gerade 
den RFM12 Artikel hier auf Mikrocontroller.net.

Kann es sein, dass da ein Fehler ist?
Bei "Bitrate (Data Rate C6xx)" gibts ja die Tabelle
1-0-0-0-0-1-1-0....Vorgabe 0xC623. Wenn ich aber den Hexwert umrechne, 
bekomm ich:
1-1-0-0-0-1-1-0....

mfg alex,

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.