Karl Zweimüller
/
eth_comfort_test
Programm for decoding radio-signals sent by a ETH-Window-Shutter-Contact, received with a RFM12B-module
Diff: rfm12b.cpp
- Revision:
- 1:fc72e0bdb693
- Parent:
- 0:96794c9fc5a3
--- a/rfm12b.cpp Wed Mar 02 20:46:57 2011 +0000 +++ b/rfm12b.cpp Thu Apr 07 19:54:09 2011 +0000 @@ -2,39 +2,45 @@ #include "rfm12b.h" #include "rfm.h" +/*! + * \file rfm12b.cpp + * \brief class for rfm2b in rawmode - only receive part implemented + * \author Karl Zweimüller based on code from WED 6.9.2009 + */ + + /** Class rfm12b for RFM12B transceiver module http://www.hoperf.com/rf_fsk/rfm12b.htm */ /** rfm12b object */ -rfm12b::rfm12b(PinName mosi, PinName miso, PinName sclk, PinName nsel, PinName rxdata){ - - rfm12b_spi = new SPI(mosi, miso, sclk); // mosi, miso, sclk - cs = new DigitalOut(nsel); // nsel for chipselect - m_pinRXData = new InterruptIn(rxdata); // rxData- generates interrupts +rfm12b::rfm12b(PinName mosi, PinName miso, PinName sclk, PinName nsel, PinName rxdata) { - init_spi(); // init the spi-device + rfm12b_spi = new SPI(mosi, miso, sclk); // mosi, miso, sclk + cs = new DigitalOut(nsel); // nsel for chipselect + m_pinRXData = new InterruptIn(rxdata); // rxData- generates interrupts + + init_spi(); // init the spi-device } - /** init the spi-communication - */ -void rfm12b::init_spi(){ +/** init the spi-communication +*/ +void rfm12b::init_spi() { // Setup the spi for 16 bit data : 1RW-bit 7 adressbit, 8 databit // second edge capture, with a 5MHz clock rate rfm12b_spi->format(16,0); rfm12b_spi->frequency(5000000); } - + /////////////////////////////////////////////////////////////////////////////// // // Initialise RF module // This are parameters for ETH Comfort by ELV /////////////////////////////////////////////////////////////////////////////// -void rfm12b::RFM_init(void) -{ +void rfm12b::RFM_init(void) { - // 0. Init the SPI backend + // 0. Init the SPI backend //RFM_TESTPIN_INIT; //RFM_READ_STATUS(); @@ -45,7 +51,7 @@ //RFM_CONFIG_EF | RFM_CONFIG_BAND_868 | RFM_CONFIG_X_11_0pf - ); + ); // 2. Power Management Command //RFM_SPI_16( @@ -56,10 +62,10 @@ RFM_SPI_16( RFM_FREQUENCY | RFM_FREQ_868Band(868.30) - ); + ); // 4. Data Rate Command - RFM_SPI_16(RFM_DATA_RATE_9600); + RFM_SPI_16(RFM_DATA_RATE_9600); // 5. Receiver Control Command RFM_SPI_16( @@ -69,7 +75,7 @@ RFM_RX_CONTROL_BW_134 | RFM_RX_CONTROL_GAIN_0 | RFM_RX_CONTROL_RSSI_73 - ); + ); // 6. Data Filter Command RFM_SPI_16( @@ -77,13 +83,13 @@ //RFM_DATA_FILTER_ML | //RFM_DATA_FILTER_DQD(3) RFM_DATA_FILTER_ANALOG - ); + ); // 7. FIFO and Reset Mode Command RFM_SPI_16( RFM_FIFO_IT(8) | RFM_FIFO_DR - ); + ); // 8. Receiver FIFO Read @@ -94,13 +100,13 @@ RFM_AFC_EN | RFM_AFC_OE | RFM_AFC_FI - ); + ); // 10. TX Configuration Control Command RFM_SPI_16( RFM_TX_CONTROL_MOD_30 | RFM_TX_CONTROL_POW_0 - ); + ); // 11. Transmitter Register Write Command @@ -116,18 +122,18 @@ // ); // 15. Status Read Command - //RFM_SPI_16(RFM_TX_ON()); - RFM_SPI_16(RFM_RX_ON()); + //RFM_SPI_16(RFM_TX_ON()); + RFM_SPI_16(RFM_RX_ON()); } /////////////////////////////////////////////////////////////////////////////// - + /** write and read 16 bit to device */ -uint16_t rfm12b::rfm_spi16(uint16_t outval){ +uint16_t rfm12b::rfm_spi16(uint16_t outval) { uint16_t readval; // Select the device by seting chip select low @@ -138,7 +144,7 @@ // Deselect the device cs->write(1); wait_ms(1); // wait before going on - return(readval); + return(readval); }