我得到了msp430l092的这个例子,并且我已经修改了获取光电二极管传感器值的方法。 我尝试过当通道A2大于150 (整数值)时,WFP 1.6 为高,WFP 1.5 为低。 当频道A2的值低于150时 ,WFP的1.5 值较高,WFP的1.6 值较低。 我曾经经历过,如果我向光电二极管提供闪光,传感器值将大于150 (整数值)。 不幸的是,我意识到五分钟后,我的项目就被破坏了。 WFP 1.5 和WFP 1.6 正在随意闪烁。 读取光电二极管传感器值的代码是否正确。 我是否需要使用" P1DIR &=~BIT6;"来设置输入方向WFP 1.6。 读取传感器值时我有点困惑。 有人能帮我吗? 提前感谢
/* 说明:多个ADC信道*/
/********************** A_Pool ADC转换******************************* /
/* */
/* */
/* ++--L092--+ */
/* |*1 14 | */
/* | 2 13 | */
/* | 3 12 |<-通道A0 (0-256mV) */
/* | 4 11 | */
/* | 5 10 | */
/*通道A2 (0-256mV)-> | 6 9 | */
/*通道A1 (0-256mV)-> | 7 8 | */
/* +----------- + */
/* */
D. Dang/ D. Archbold/ D. Szmulewicz *
/* 德州仪器(TI) */
/* 使用IAR版本5.10 构建.................4*/
/******************************************************************************************* /
#include <MSP4S.h>
Int ChannelA0,ChannelA1,ChannelA2;
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
P1DIR =(BIT5 | BIT6); //将WFP 1.0 设置为输出方向
// A池寄存器的开始配置
APCTL = 0; //清除APCTL寄存器
APCNF = CMPON+DBON+CONVON+EOCBU+APREFON+CLKSEL_MCLK; //配置A池元素,选择MCLK作为A池时钟源
APINT = 0x00; //清除ADC-DAC-REG
同时(1)
{
/*
APIE = EOCIE; //为转换结束启用中断
APINT = 0x00; //清除ADC-DAC-REG
APCTL = Osel+CBSTP+RUNSTOP+APNSEL_0+APPSEL_5; //设置通道并开始转换
__bis_sr_register(LPM0_bits + GIE); //输入启用中断的LPM0
ChannelA0 = APINT; //获取A0的结果
*/
/*
APIE = EOCIE; //为转换结束启用中断
APINT = 0x00; //清除ADC-DAC-REG
APCTL = Osel+CBSTP+RUNSTOP+APNSEL_1+APPSEL_5; //设置通道并开始转换
__bis_sr_register(LPM0_bits + GIE); //输入启用中断的LPM0
ChannelA1 = APINT; //获取A1的结果
*/
APIE = EOCIE; //为转换结束启用中断
APINT = 0x00; //清除ADC-DAC-REG
APCTL = Osel+CBSTP+RUNSTOP+APNSEL_2+APPSEL_5; //设置通道并开始转换
__bis_sr_register(LPM0_bits + GIE); //输入启用中断的LPM0
ChannelA2 = APINT; //获取A2的结果
//__no_operation(); //在此处放置断点
IF (信道A2<150){
P1OUT || BIT5;
P1OUT&=~BIT6;
}
否则IF (ChannelA2>150){
P1OUT || BIT6;
P1OUT&=~BIT5;
}
否则{
P1OUT&=~BIT5;
P1OUT&=~BIT6;
}
}
}
//a_pool Interrupt Service例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=APOOL_vector
__interrupt void a_pool (void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (APOOL_vector)) a_pool (void)
#否则
错误编译器不受支持!
#endif
{
APIFG = 0; //清除中断标志
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits); //退出活动模式以采样下一个通道
}