Datum:
Hallo, Ich versuche seit einiger Zeit die Funkmodule RFM01 und RMF02 von Pollin zum laufen zu kriegen. Mitlerweile ist es mir sogar gelungen das RFM02 korrekt anzusteuern, leider regt sich seit mitlerweile 1.5Monaten noch immer nichts bei dem RFM01. Der Code stammt aus diesem Beitrag: Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module" von Benedikt K.. Der verwendete Mikrocontroller ist ein Atmega23(programmiert in c) mit einem 16MHz Quarz(beim Sender wurden die 10MHz des Funkmoduls verwendet). Ich vermute, dass die Frequenz des SPI nicht stimmt(von diesem Problem haben einige berichtet), leider habe ich nicht herausgefunden wie ich die Taktrate des SPI anpassen kann?!
#define RF_PORT PORTB #define RF_DDR DDRB #define RF_PIN PINB #define SDI 5 // SDI, -> RF02 #define SCK 6 // SCK, -> RF02 #define CS 7 // nSEL, -> RF02 #define SDO 0 // SDO, <- RF02 // nFFS: 1-10k Pullup an Vcc !!! static unsigned char sdrssi, sgain; void rf01_trans(unsigned short wert) { unsigned char i; cbi(RF_PORT, CS); for (i=0; i<16; i++) { if (wert&32768) sbi(RF_PORT, SDI); else cbi(RF_PORT, SDI); sbi(RF_PORT, SCK); wert<<=1; _delay_us(0.2); cbi(RF_PORT, SCK); } sbi(RF_PORT, CS); } void rf01_init(void) { unsigned char i; RF_PORT=(1<<CS); RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS); for (i=0; i<11; i++) _delay_ms(10); // wait until POR done rf01_trans(0xC2E0); // AVR CLK: 10MHz rf01_trans(0xC42B); // Data Filter: internal rf01_trans(0xCE88); // FIFO mode rf01_trans(0xC6F7); // AFC settings: autotuning: -10kHz...+7,5kHz rf01_trans(0xE000); // disable wakeuptimer rf01_trans(0xCC00); // disable low duty cycle } |
Ich hoffe ihr könnt/wollt mir helfen :) MfG Daniel
Datum:
Will mir denn niemand helfen?
Datum:
Daniel S. schrieb: > Ich vermute, dass die Frequenz des SPI nicht stimmt(von diesem Problem > haben einige berichtet), leider habe ich nicht herausgefunden wie ich > die Taktrate des SPI anpassen kann?! SPI Control Register – SPCR mfg.
Datum:
>> leider habe ich nicht herausgefunden wie ich >> die Taktrate des SPI anpassen kann?! >SPI Control Register – SPCR Macht bei Software SPI keinen Sinn;) Ich würde mal an den delays rumfummeln.
Datum:
Hab ich schon, leider hat es mir bisher nichts gebracht :(
Datum:
Was meinst du mit regt sich nichts? Versuch mal nicht das init auszuführen sondern einfach mal nach dem Start Int result = rf01_trans(0x0) auszuführen. Kommt dort was zurück? Bei mir war meistens wenn's garnicht geklappt hat die verkabelung schuld.
Datum:
F.e schrieb: > Int result = rf01_trans(0x0) rf01_trans() ist void, es gibt keinen Wert der zurück gegeben wird.
Datum:
Lies Dir doch mal diesen Threat hier Beitrag "RFM12 Empfang von Sensordaten im IRQ" durch, da liegt auch die SW für die RFM02 zur reinsehen... Du weißt aber schon, daß der RFM02 anders angesteuert wird, als der RFM12? LG Elux
Datum:
Ja, ist mir durchaus bewusst, in dem von mir genannten Beitrag wurde auch Beispielcode für die RFM01 und RFM02 gepostet. Das RFM02 funktioniert bei mir übrigens.