打印
[STM8]

ADC转换问题

[复制链接]
1682|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qianguiyi|  楼主 | 2013-2-1 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用TIM1,DMA,ADC,模式去转换AD,如果打开其他中断(外部中断,串口中断,TIM2中断),发现AD值有时会为零,求高手解答
沙发
jlass| | 2013-2-1 15:28 | 只看该作者
是不是中断检索没做好,和其他中断冲突了。

使用特权

评论回复
板凳
qianguiyi|  楼主 | 2013-2-1 15:46 | 只看该作者
刚才试了一下在中断里面保存值并判断大于零,在大循环里面检测保存的值是否大于零,结果还是有时对于保存的值为零,
如下
@far @interrupt void DMA1_CHANNEL0_1_IRQHandler(void)
{
        if(DMA1_C0SPR & 0x04)
        {
                if(power.temp_vol[0]>100)
                {
                        power.vol[0]=power.temp_vol[0];
                }
                else
                {
                        _asm("nop");
                }
                if(power.temp_vol[1]>100)
                {
                        power.vol[1]=power.temp_vol[1];
                }
        }
        DMA1_C0SPR &= ~(0x06);
        //Half transaction interrupt flag,Transaction complete interrupt flag
}


//该语句在大循环
if(power.vol[0]<10)
{
                _asm("nop");
                NTC_CS = 0;
//不应该跑进这里面的
}
       

使用特权

评论回复
地板
uet_cache| | 2013-2-1 16:47 | 只看该作者
是不是其它方还对这个变量赋了值。或初始化小于10,而实际采集的时候上面赋值的条件不满足,从而不执行?

使用特权

评论回复
5
qianguiyi|  楼主 | 2013-2-1 20:26 | 只看该作者
我把那个全局变量从结构体拿出来,用独立的全局变量就不会了,太神奇了,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

82

帖子

2

粉丝