打印
[PIC®/AVR®/dsPIC®产品]

请问定义的中断方式A/D转换,什么时候触发中断啊

[复制链接]
1147|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中断在转换结束时产生的。至于何时启动,要看你具体的应用。自动的话你可以使用定时器。

使用特权

评论回复
5
jinwe|  楼主 | 2020-2-27 15:11 | 只看该作者
lcczg 发表于 2020-2-27 15:02
AD中断在转换结束时产生的。至于何时启动,要看你具体的应用。自动的话你可以使用定时器。 ...

请问是否可以这样理解:在主循环中启动一次转换后继续执行别的事情,AD转换完成后会产生中断后处理数据,如果需要可在定时中断时来启动转换,然后在转换完成后在中断中得到转换后的数据。请问是吗?谢谢了!

使用特权

评论回复
6
lwang8797| | 2020-2-27 21:19 | 只看该作者
jinwe 发表于 2020-2-27 14:57
是pic16f877a啊,初学AD中断,没搞懂这个?比如定时器中断是时间到了触发一次,串口中断是收到数据触发一次 ...

ad模块的控制寄存器中应该可以设置触发中断的方式,我用的是dspic系列的,可以设置为转换完成时产生中断。

使用特权

评论回复
7
lcczg| | 2020-2-28 11:25 | 只看该作者
jinwe 发表于 2020-2-27 15:11
请问是否可以这样理解:在主循环中启动一次转换后继续执行别的事情,AD转换完成后会产生中断后处理数据, ...

是的。

使用特权

评论回复
8
jinwe|  楼主 | 2020-2-28 21:12 | 只看该作者
谢谢各位了!

使用特权

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

本版积分规则

26

主题

115

帖子

0

粉丝