查看: 4133|回复: 13

[求助] KL26Z ADC自动比较功能的实现

[复制链接]

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
发表于 2015-11-13 15:32:32 | 显示全部楼层 |阅读模式
现在手上正在做KL26Z ADC自动比较功能,ADC的初始化设置如下:
ADC0_CFG1 = ( ADC_CFG1_ADIV(0x01)
                                | ADC_CFG1_MODE(0x03)
                                | ADC_CFG1_ADICLK(0x00)
                                | ADC_CFG1_ADLSMP_MASK );

        ADC0_CFG2 = (INT32U)((ADC0_CFG2 & (INT32U)(~(INT32U)(
                                                ADC_CFG2_ADACKEN_MASK
                                                |ADC_CFG2_ADLSTS(0x03)
                                                |0xFFFFFFE0U)))
                                | (INT32U)( ADC_CFG2_ADHSC_MASK));//|0x10;//0x10是为了打开b类型通道,比如7b
       
        #ifdef ADC_AUTO_COMPARE_FUNCTION
        //设置比较模式
        ADC0_SC2 |= ADC_SC2_ACFGT_MASK;
        ADC0_SC2 &= ~ADC_SC2_ACREN_MASK;

        ADC0_SC2 |=ADC_SC2_ACFE_MASK;
        #endif
       
        ADC0_OFS = ADC_OFS_OFS(0x04);
        ADC0_SC2 = ADC_SC2_REFSEL(0x0);        //默认参考电压
        ADC0_SC3 = (ADC_SC3_ADCO_MASK | ADC_SC3_AVGS(0x11)|ADC_SC3_AVGE_MASK);

        #ifdef ADC_AUTO_COMPARE_FUNCTION
        //设置中断控制位
        ADC0_SC1A |=ADC_SC1_AIEN_MASK;

        //设定比较值
        ADC0_CV1 = ADC_CV1_CV(0x00);       

        //打开ADC中断
        enable_irq(15);
        #endif

ADC能读到转化后的只,SC1的Coco位也会置一,但是不能进中断处理函数,请各位大神帮忙看看指正,万分感谢
我知道答案 目前已有13人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-11-16 09:03:49 | 显示全部楼层
首先确认转换的结果是否正确,还有检查一下中断向量是否和中断函数名称对照上啊,即名称是一致的
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
 楼主| 发表于 2015-11-16 09:20:15 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-11-16 09:03
首先确认转换的结果是否正确,还有检查一下中断向量是否和中断函数名称对照上啊,即名称是一致的 ...

转换是正确的
中断函数名是ADC0_IRQHandler
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-11-16 09:44:30 | 显示全部楼层
spromise 发表于 2015-11-16 09:20
转换是正确的
中断函数名是ADC0_IRQHandler

我想确认一下没有进入ADC中断,那进入到哪里呢?还有在main.c中加上asm(" CPSIE i");来使能全局中断
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
 楼主| 发表于 2015-11-16 09:48:25 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-11-16 09:44
我想确认一下没有进入ADC中断,那进入到哪里呢?还有在main.c中加上asm(" CPSIE i");来使能全局中断 ...

就是进入到我自己定义的比较中断函数啊 void ADC0_IRQHandler(void)

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-11-16 13:59:35 | 显示全部楼层
spromise 发表于 2015-11-16 09:48
就是进入到我自己定义的比较中断函数啊 void ADC0_IRQHandler(void)

我的意思是,你的中断函数虽然没有正确的进入,但是对应的中断向量应该会触发的,你可以在debug内进行追踪
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
 楼主| 发表于 2015-11-16 14:31:14 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-11-16 13:59
我的意思是,你的中断函数虽然没有正确的进入,但是对应的中断向量应该会触发的,你可以在debug内进行追 ...

我用的调试环境是IAR 设置的中断处理函数和cstartup_M.s中的默认的ADC0的中断处理函数是一样的 至于那个中断向量应该会触发的 ,可以debug追踪我以前没试过 能不能指导一下
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-11-16 14:47:53 | 显示全部楼层
spromise 发表于 2015-11-16 14:31
我用的调试环境是IAR 设置的中断处理函数和cstartup_M.s中的默认的ADC0的中断处理函数是一样的 至于那个 ...

这跟一般的IAR调试没什么区别,就是看看IAR进入预定的中断函数,代码具体运行到哪里去了,说说看,你是如何将中断函数与中断向量关联起来的。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
 楼主| 发表于 2015-11-16 15:00:18 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-11-16 14:47
这跟一般的IAR调试没什么区别,就是看看IAR进入预定的中断函数,代码具体运行到哪里去了,说说看,你是如 ...

中断函数与中断向量关联:置的中断处理函数和cstartup_M.s中的默认的ADC0的中断处理函数是一样的
打开ADC0在NVIC的控制位 :enable_irq(15);
调试的时候我在中断函数打了断点一直没跑进去 因为现在机器跑的工程比较大 所以关注代码跑到哪里意义不大
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

52

帖子

0

注册会员

Rank: 2

积分
195
最后登录
2016-2-29
 楼主| 发表于 2015-11-16 15:00:45 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-11-16 14:47
这跟一般的IAR调试没什么区别,就是看看IAR进入预定的中断函数,代码具体运行到哪里去了,说说看,你是如 ...

中断函数与中断向量关联:置的中断处理函数和cstartup_M.s中的默认的ADC0的中断处理函数是一样的
打开ADC0在NVIC的控制位 :enable_irq(15);
调试的时候我在中断函数打了断点一直没跑进去 因为现在机器跑的工程比较大 所以关注代码跑到哪里意义不大
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-26 13:47 , Processed in 0.108876 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表