[PIC®/AVR®/dsPIC®产品] 请问定义的中断方式A/D转换,什么时候触发中断啊

[复制链接]
1383|7
 楼主| jinwe 发表于 2020-2-26 22:07 | 显示全部楼层 |阅读模式
总是没搞懂,发像不知道怎样调用这个中断。谢谢了

//A/D中断函数
void __interrupt() ISR(void)
{
    if (ADIE && ADIF)
    {
        ADIF = 0;
        ADbuf = ADRESH * 256 + ADRESL; //将10位A/D转换结果暂存在ADbuf       
        GO_DONE = 1;
    }
}

奔波儿熊 发表于 2020-2-27 11:51 | 显示全部楼层
什么芯片啊? 这个通用中断函数名看起来像PIC,不像AVR. 一般是一次采集完了触发下一次中断.
 楼主| jinwe 发表于 2020-2-27 14:57 | 显示全部楼层
是pic16f877a啊,初学AD中断,没搞懂这个?比如定时器中断是时间到了触发一次,串口中断是收到数据触发一次,但是AD中断是怎么用啊?是每次要手动触发一次吗? 就是要在主循环里执行一次GO_DONE = 1吗?没明白的是如果还是要手动执行的话不是和查询法转换没什么区别吗?请帮忙指教哈,谢谢了!
lcczg 发表于 2020-2-27 15:02 | 显示全部楼层
本帖最后由 lcczg 于 2020-2-27 15:04 编辑

AD中断在转换结束时产生的。至于何时启动,要看你具体的应用。自动的话你可以使用定时器。
 楼主| jinwe 发表于 2020-2-27 15:11 | 显示全部楼层
lcczg 发表于 2020-2-27 15:02
AD中断在转换结束时产生的。至于何时启动,要看你具体的应用。自动的话你可以使用定时器。 ...

请问是否可以这样理解:在主循环中启动一次转换后继续执行别的事情,AD转换完成后会产生中断后处理数据,如果需要可在定时中断时来启动转换,然后在转换完成后在中断中得到转换后的数据。请问是吗?谢谢了!
lwang8797 发表于 2020-2-27 21:19 | 显示全部楼层
jinwe 发表于 2020-2-27 14:57
是pic16f877a啊,初学AD中断,没搞懂这个?比如定时器中断是时间到了触发一次,串口中断是收到数据触发一次 ...

ad模块的控制寄存器中应该可以设置触发中断的方式,我用的是dspic系列的,可以设置为转换完成时产生中断。
lcczg 发表于 2020-2-28 11:25 | 显示全部楼层
jinwe 发表于 2020-2-27 15:11
请问是否可以这样理解:在主循环中启动一次转换后继续执行别的事情,AD转换完成后会产生中断后处理数据, ...

是的。
 楼主| jinwe 发表于 2020-2-28 21:12 | 显示全部楼层
谢谢各位了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

115

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部