⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hpltda5250configp.nc

📁 tinyos2.0版本驱动
💻 NC
📖 第 1 页 / 共 2 页
字号:
/** Copyright (c) 2004, Technische Universitat Berlin* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:* - Redistributions of source code must retain the above copyright notice,*   this list of conditions and the following disclaimer.* - Redistributions in binary form must reproduce the above copyright*   notice, this list of conditions and the following disclaimer in the*   documentation and/or other materials provided with the distribution.* - Neither the name of the Technische Universitat Berlin nor the names*   of its contributors may be used to endorse or promote products derived*   from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.* - Revision -------------------------------------------------------------* $Revision: 1.5 $* $Date: 2008/06/13 13:40:59 $* ========================================================================*//*** HplTda5250ConfigP module** @author Kevin Klues (klues@tkn.tu-berlin.de)* @author Philipp Huppertz (huppertz@tkn.tu-berlin.de)*/module HplTda5250ConfigP {  provides {    interface Init;    interface HplTda5250Config;  }  uses {    interface Tda5250WriteReg<TDA5250_REG_TYPE_CONFIG>      as CONFIG;    interface Tda5250WriteReg<TDA5250_REG_TYPE_FSK>         as FSK;    interface Tda5250WriteReg<TDA5250_REG_TYPE_XTAL_TUNING> as XTAL_TUNING;    interface Tda5250WriteReg<TDA5250_REG_TYPE_LPF>         as LPF;    interface Tda5250WriteReg<TDA5250_REG_TYPE_ON_TIME>     as ON_TIME;    interface Tda5250WriteReg<TDA5250_REG_TYPE_OFF_TIME>    as OFF_TIME;    interface Tda5250WriteReg<TDA5250_REG_TYPE_COUNT_TH1>   as COUNT_TH1;    interface Tda5250WriteReg<TDA5250_REG_TYPE_COUNT_TH2>   as COUNT_TH2;    interface Tda5250WriteReg<TDA5250_REG_TYPE_RSSI_TH3>    as RSSI_TH3;    interface Tda5250WriteReg<TDA5250_REG_TYPE_RF_POWER>    as RF_POWER;    interface Tda5250WriteReg<TDA5250_REG_TYPE_CLK_DIV>     as CLK_DIV;    interface Tda5250WriteReg<TDA5250_REG_TYPE_XTAL_CONFIG> as XTAL_CONFIG;    interface Tda5250WriteReg<TDA5250_REG_TYPE_BLOCK_PD>    as BLOCK_PD;    interface Tda5250ReadReg<TDA5250_REG_TYPE_STATUS>       as STATUS;    interface Tda5250ReadReg<TDA5250_REG_TYPE_ADC>          as ADC;    interface GeneralIO as ASKNFSK;    interface GeneralIO as TXRX;    interface GeneralIO as PWDDD;    interface GpioInterrupt as PWDDDInterrupt;  }}implementation {      /****************************************************************************************************  **                                                                                                 **  **                                                                                                 **  **     Important !!! Only function marked with << tested >> are potentially working!               **  **                                                                                                 **  **                                                                                                 **  *****************************************************************************************************/    /****************************************************************  Global Variables Declared  *****************************************************************/  norace uint16_t currentConfig = TDA5250_REG_DEFAULT_SETTING_CONFIG;  uint8_t currentClockDiv;  norace uint8_t currentLpf = TDA5250_REG_DEFAULT_SETTING_LPF;  /****************************************************************  async commands Implemented  *****************************************************************/  /**  * Initializes the Radio, setting up all Pin configurations  * to the MicroProcessor that is driving it and resetting  * all Registers to their default values  *  * @return always returns SUCCESS  */  command error_t Init.init() {    // setting pins to output    call TXRX.makeOutput();    call PWDDD.makeOutput();    // initializing pin values    call TXRX.set();    call PWDDD.clr();    return SUCCESS;  }  /**  * Reset all Radio Registers to the default values as defined  * in the tda5250RegDefaults.h file  * << tested >>  */  async command void HplTda5250Config.reset() {    //Keep three state variables to know current value of    //config register, ClockDiv, and Lpf register        atomic {          currentConfig = TDA5250_REG_DEFAULT_SETTING_CONFIG;          currentClockDiv = TDA5250_REG_DEFAULT_SETTING_CLK_DIV;          currentLpf = TDA5250_REG_DEFAULT_SETTING_LPF;        }        call CONFIG.set(TDA5250_REG_DEFAULT_SETTING_CONFIG);        call FSK.set(TDA5250_REG_DEFAULT_SETTING_FSK);        call XTAL_TUNING.set(TDA5250_REG_DEFAULT_SETTING_XTAL_TUNING);        call LPF.set(TDA5250_REG_DEFAULT_SETTING_LPF);        call ON_TIME.set(TDA5250_REG_DEFAULT_SETTING_ON_TIME);        call OFF_TIME.set(TDA5250_REG_DEFAULT_SETTING_OFF_TIME);        call COUNT_TH1.set(TDA5250_REG_DEFAULT_SETTING_COUNT_TH1);        call COUNT_TH2.set(TDA5250_REG_DEFAULT_SETTING_COUNT_TH2);        call RSSI_TH3.set(TDA5250_REG_DEFAULT_SETTING_RSSI_TH3);        call CLK_DIV.set(TDA5250_REG_DEFAULT_SETTING_CLK_DIV);        call XTAL_CONFIG.set(TDA5250_REG_DEFAULT_SETTING_XTAL_CONFIG);        call BLOCK_PD.set(TDA5250_REG_DEFAULT_SETTING_BLOCK_PD);  }  async command void HplTda5250Config.SetLowPassFilter(tda5250_data_cutoff_freqs_t data_cutoff){    currentLpf = (((data_cutoff << 4) | (currentLpf & 0x0F)));    call LPF.set(currentLpf);  }  async command void HplTda5250Config.SetIQFilter(tda5250_iq_cutoff_freqs_t iq_cutoff){    currentLpf = (((iq_cutoff & 0x0F) | (currentLpf & 0xF0)));    call LPF.set(currentLpf);  }  async command void HplTda5250Config.UseRCIntegrator() {    currentConfig = CONFIG_SLICER_RC_INTEGRATOR(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.UsePeakDetector() {    currentConfig = CONFIG_SLICER_PEAK_DETECTOR(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.PowerDown() {    currentConfig = CONFIG_ALL_PD_POWER_DOWN(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.PowerUp() {    currentConfig = CONFIG_ALL_PD_NORMAL(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.RunInTestMode() {    currentConfig = CONFIG_TESTMODE_TESTMODE(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.RunInNormalMode() {    currentConfig = CONFIG_TESTMODE_NORMAL(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.ControlRxTxExternally() {    currentConfig = CONFIG_CONTROL_TXRX_EXTERNAL(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.ControlRxTxInternally() {    currentConfig = CONFIG_CONTROL_TXRX_REGISTER(currentConfig);    call CONFIG.set(currentConfig);  }  /* << tested >> */  async command void HplTda5250Config.UseFSK(tda5250_cap_vals_t pos_shift, tda5250_cap_vals_t neg_shift) {    currentConfig = CONFIG_ASK_NFSK_FSK(currentConfig);    if(currentConfig & MASK_CONFIG_CONTROL_TXRX_REGISTER) {      call CONFIG.set(currentConfig);    }    else {      call ASKNFSK.clr();     }    call FSK.set(((uint16_t)((((uint16_t)pos_shift) << 8) + neg_shift)));  }  /* << tested >> */  async command void HplTda5250Config.UseASK(tda5250_cap_vals_t value) {    currentConfig = CONFIG_ASK_NFSK_ASK(currentConfig);    if(currentConfig & MASK_CONFIG_CONTROL_TXRX_REGISTER) {      call CONFIG.set(currentConfig);    }     else {      call ASKNFSK.set();     }    call FSK.set((((uint16_t)value) << 8));  }  async command void HplTda5250Config.SetClockOffDuringPowerDown() {    currentConfig = CONFIG_CLK_EN_OFF(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.SetClockOnDuringPowerDown() {    currentConfig = CONFIG_CLK_EN_ON(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.InvertData() {    currentConfig = CONFIG_RX_DATA_INV_YES(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.DontInvertData() {    currentConfig = CONFIG_RX_DATA_INV_NO(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.UseRSSIDataValidDetection(uint8_t value, uint16_t lower_bound, uint16_t upper_bound) {    currentConfig = CONFIG_D_OUT_IFVALID(currentConfig);    call CONFIG.set(currentConfig);    call COUNT_TH1.set(lower_bound);    call COUNT_TH2.set(upper_bound);    call RSSI_TH3.set(0xC0 | value);  }  async command void HplTda5250Config.UseVCCDataValidDetection(uint8_t value, uint16_t lower_bound, uint16_t upper_bound) {    currentConfig = CONFIG_D_OUT_IFVALID(currentConfig);    call CONFIG.set(currentConfig);    call COUNT_TH1.set(lower_bound);    call COUNT_TH2.set(upper_bound);    call RSSI_TH3.set(0x3F & value);  }  async command void HplTda5250Config.UseDataValidDetection() {    currentConfig = CONFIG_D_OUT_IFVALID(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.UseDataAlwaysValid() {    currentConfig = CONFIG_D_OUT_ALWAYS(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.ADCContinuousMode() {    currentConfig = CONFIG_ADC_MODE_CONT(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.ADCOneShotMode() {    currentConfig = CONFIG_ADC_MODE_ONESHOT(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.DataValidContinuousMode() {    currentConfig = CONFIG_F_COUNT_MODE_CONT(currentConfig);    call CONFIG.set(currentConfig);  }  async command void HplTda5250Config.DataValidOneShotMode() {    currentConfig = CONFIG_F_COUNT_MODE_ONESHOT(currentConfig);    call CONFIG.set(currentConfig);  }  /* <<tested>> */  async command void HplTda5250Config.HighLNAGain() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -