主题中讨论的其他器件: MSP430WARE
我使用 MSP430L092示例代码来测量温度传感器值、但似乎操作有延迟。 例如、我设置了一个条件、即如果 degC 大于30、则连接 LED 的 P1.4端口为高电平。 42秒后、我的 LEDs 处于高电平。 我不理解这种延迟。 如果我设置的传感器结果大于20、则在30秒后该传感器会分别处于高电平。 我将我重新排列的示例代码放在下面。
/*-版权所有-、BSD_EX
*版权所有(c) 2012、德州仪器(TI)公司
*保留所有权利。
*
*以源代码和二进制形式重新分发和使用、有无
*如果满足以下条件、则允许进行修改
符合*:
*
**源代码的重新分发必须保留上述版权
*注意、此条件列表和以下免责声明。
*
**二进制形式的再发行必须复制上述版权
*请注意、中的此条件列表和以下免责声明
*随分发提供的文档和/或其他材料。
*
**德州仪器公司的名称和名称均不相同
*其贡献者可用于认可或推广衍生产品
*未经特定的事先书面许可。
*
*本软件由版权所有者和贡献者"按原样"提供
*以及任何明示或暗示的保证、包括但不限于:
*特定适销性和适用性的隐含保证
*不承认目的。 在任何情况下、版权所有者不得或
*派遣国应对任何直接、间接、偶然、特殊、
*典型或必然的损害(包括但不限于
*采购替代货物或服务;丧失使用、数据或利润;
*或业务中断)、无论原因是什么以及任何责任理论、
*无论是合同、严格责任还是侵权行为(包括疏忽或)
*否则)因使用本软件而以任何方式产生、
*即使被告知可能会发生此类损坏。
*
秘书长的报告
*
* MSP430代码示例免责声明
*
* MSP430代码示例是通常包含的低级程序
*高度演示单个外设功能或器件功能
*简明扼要。 为此、代码可能依赖于器件的加电默认值
*寄存器值和设置、如时钟配置和注意
*在组合多个示例中的代码时应采取这种方法、以避免潜在的问题
*效果。 有关 GUI、另请参阅 www.ti.com/grace 和 www.ti.com/msp430ware
*用于外设配置的 API 函数库方法。
*
*--/版权--*/
/*说明:ADC 温度采样*
/********* A_POOL ADC 转换********* /
/**//
/**//
/*+--L092--+*/
/*|*1 14 |*/
/*| 2 13 |*/
/*| 3 12 |*/
/*| 4 11 |*/
/*| 5 10 |*/
/*| 6 9 |*/
/*| 7 8 |*/
/*+--- +*/
/**//
/* D.Dang/D.Archbold/D.Szmulewicz /F. Chen */
/*德州仪器(TI)公司 *
/*使用 IAR 版本5.51.1和 CCS 版本5.3.00090构建*/
/ /
#include
INT 结果;
挥发性短整型 degC;
int main (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
//开始配置 A-POOL 寄存器
APCTL = 0;//清除 APCTL 寄存器
APIE |= EOCIE;//为转换结束启用中断
APTRIM = REFTSEL;
APVDIV = TMPSEN;//启用温度传感器
APCNF = CMPON+DBON+CONVON+APREFON+CLKSEL_MCLK;//配置 A-POOL 元素,选择 MCLK 作为 A-POOL 时钟源
P1DIR |=(BIT4+BIT5+BIT6);
while (1)
{
APCTL = OSEL+oden+OSWP+APPSEL_4+APNSEL_5;//设置通道并开始转换-+oden+
APINT = 0x00;//清除 ADC-DAC-REG
APIFG = 0;
APCTL |= CBSTP+SBSTP+RUNSTOP;
_bis_SR_register (LPM0_bits + GIE);//启用中断后进入 LPM0
结果= APINT;
degC =(((Result-179)*125)/58)+ 30;//请参阅数据表以了解精度和偏移规格
if (degC>20){
P1OUT|=BIT4;
}
否则{
P1OUT&=~BIT4;
}
__no_operation();//在此设置断点
}
}
//a_pool 中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=APOOL_vector
_interrupt void a_pool (void)
#Elif defined (_GNU_)
void __attribute__((interrupt (APOL_vector)) a_pool (void)
其他
错误编译器不受支持!
#endif
{
APIFG = 0;//清除中断标志
__BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动状态以计算温度
}
请、是否有人能给我建议、以防止这种延迟?
提前感谢
