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

📄 magp.nc

📁 tinyos2.0版本驱动
💻 NC
字号:
#include "mts300.h"#include "Timer.h"#include "I2C.h"module MagP{  provides interface SplitControl;  provides interface Mag;  provides interface Atm128AdcConfig as ConfigX;  provides interface Atm128AdcConfig as ConfigY;  uses interface Timer<TMilli>;	uses interface GeneralIO as MagPower;	uses interface MicaBusAdc as MagAdcX;	uses interface MicaBusAdc as MagAdcY;  uses interface I2CPacket<TI2CBasicAddr>;  uses interface Resource as I2CResource;}implementation{  uint8_t gainData[2];  command error_t SplitControl.start()  {    call MagPower.makeOutput();    call MagPower.set();    call Timer.startOneShot(100);     return SUCCESS;  }  event void Timer.fired() {    signal SplitControl.startDone(SUCCESS);  }  command error_t SplitControl.stop()  {    call MagPower.clr();    call MagPower.makeInput();    signal SplitControl.stopDone(SUCCESS);    return SUCCESS;  }  command error_t Mag.gainAdjustX(uint8_t val)  {    gainData[0] = 1;    // pot subaddr    gainData[1] = val;  // value to write    return call I2CResource.request();  }  command error_t Mag.gainAdjustY(uint8_t val)  {    gainData[0] = 0;    // pot subaddr    gainData[1] = val;  // value to write    return call I2CResource.request();  }  /**  * Resource request  *  */  event void I2CResource.granted()  {    if ( call I2CPacket.write(0x3,TOS_MAG_POT_ADDR, 2, gainData) == SUCCESS)    {      return ;    }  }  /**  * I2CPot2  *  */  async event void I2CPacket.readDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data)  {    return ;  }  async event void I2CPacket.writeDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data)  {    call I2CResource.release();    if (gainData[0] ==1)    {      signal Mag.gainAdjustXDone(error);    }    if (gainData[0] ==0)    {      signal Mag.gainAdjustYDone(error);    }    return ;  }  async command uint8_t ConfigX.getChannel() {    return call MagAdcX.getChannel();  }  async command uint8_t ConfigX.getRefVoltage() {    return ATM128_ADC_VREF_OFF;  }  async command uint8_t ConfigX.getPrescaler() {    return ATM128_ADC_PRESCALE;  }  async command uint8_t ConfigY.getChannel() {    return call MagAdcY.getChannel();  }  async command uint8_t ConfigY.getRefVoltage() {    return ATM128_ADC_VREF_OFF;  }  async command uint8_t ConfigY.getPrescaler() {    return ATM128_ADC_PRESCALE;  }   default event error_t Mag.gainAdjustXDone(bool result)   {     return result;   }   default event error_t Mag.gainAdjustYDone(bool result)   {     return result;   }}

⌨️ 快捷键说明

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