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

【CuriosityNano测试报告】+ AVR128DA48之按键中断方式测试已成功

[复制链接]
1666|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hu9jj|  楼主 | 2020-8-16 10:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hu9jj 于 2020-8-19 17:48 编辑

    之前测试过按键的轮询方式,继而自然要测试按键的中断方式。从原理图上可以看出是键按下时引脚为低电平:

    配置MCC时在引脚管理中选择下降沿触发:



    生成代码之后,在pin_manager.c文件中可以指定中断处理的函数,我使用默认的,未作修改:


    在中断处理函数中写上代码:


    首先延时20ms,再读取PC7的电平。为了防止重复进入按键处理,我设置了一个keyok的标志,只有keyok=0时才接收按键,接收按键后标志置1,然后在主循环中处理按键,处理之后又将标志归0,以便可以接收下次按键,代码如下:
    while (1){
        ms++;
        if(ms > wait){
            LED_Y_Toggle();
            ms = 0;
        }

        if(1 == keyok){
            wait <<= 1;
            if(wait > 40000)
                wait = 2000;
            keyok = 0;
            keys = 0;
        }


    上述的步骤貌似没有问题,原来设想是每按一次按键就将wait变量翻倍,以达到改变LED闪烁时间的效果。可是编译下载之后,没有按键动作,LED灯却自动改变闪烁频率并周期性变化,如同按下按键一般。反复检查了多次,没有发现问题所在,本次测试又没有成功。
2020.08.19
    在大家的热心帮助下,参照了6楼的代码,按键中断方式的问题已经解决,测试通过了,详见8楼。




使用特权

评论回复
沙发
lcczg| | 2020-8-17 15:08 | 只看该作者
按键管脚有没有设为高电平上拉?图上看着没有。

使用特权

评论回复
板凳
qjp1988113| | 2020-8-17 15:36 | 只看该作者
中断里面变量加上volitile修饰,再试试看。

使用特权

评论回复
地板
CoolSilicon| | 2020-8-17 20:19 | 只看该作者
其实,你可以先控制一个IO口输出方波的看看.能行的话,修改一下方向,就是输入做key用了..也简单..

使用特权

评论回复
5
hu9jj|  楼主 | 2020-8-18 08:24 | 只看该作者
lcczg 发表于 2020-8-17 15:08
按键管脚有没有设为高电平上拉?图上看着没有。

引脚设置了高电平的,用轮询法测试通过,但用中断法却不正常。

使用特权

评论回复
6
lcczg| | 2020-8-18 11:07 | 只看该作者
本帖最后由 lcczg 于 2020-8-18 11:11 编辑

有可能逻辑上的问题。我也搞了个小的测试工程,测下来可以的。按键一下亮一下灯。

AVRDA.zip

62.49 KB

使用特权

评论回复
7
hu9jj|  楼主 | 2020-8-19 09:54 | 只看该作者
lcczg 发表于 2020-8-18 11:07
有可能逻辑上的问题。我也搞了个小的测试工程,测下来可以的。按键一下亮一下灯。 ...

谢谢!我好好学习一下您的测试工程,对照一下看是什么原因。

使用特权

评论回复
8
hu9jj|  楼主 | 2020-8-19 17:23 | 只看该作者
本帖最后由 hu9jj 于 2020-8-19 17:48 编辑

    下载并打开了6楼提供的测试项目,在进入MCC时出现了升级提示:


    在升级的过程中程序似乎死循环了,等待了十几分钟后,无奈启用任务管理器结束MPLAB。再重新启动MPLAB,打开我的测试仪项目,进入MCC后,定时器配置中就出现了时间的上下限数值,也许就是升级了某个包起了作用:


    然后参考6楼的代码,在变量ms和keyok的定义中添加了volatile,最后编译烧录,定时器正常运行了。

使用特权

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

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

151

主题

1059

帖子

11

粉丝