2921|4

98

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【ATmega4809 Curiosity Nano测评】串口按键控灯(IoT Led前篇) [复制链接]

本帖最后由 Ansersion 于 2019-10-22 10:07 编辑

1. 简介

放眼市场上现有的IoT产品,其系统设计可简化如下图所示,其中“远端”为APP、网页等交互方式,红色虚线框中则为IoT设备。


本篇内容将用ATmega4809 Curiosity Nano按照以下模块结构关系实现按键和串口共同控制LED明灭,并且当按键控制LED时通知串口。

其中我们将用到ATMega4809的GPIO中断、定时器中断和串口中断功能。

 

2. MCC配置

首先是添加USART1串口,并且使能中断,波特率设置为9600(TTL转USB的GND、RX、TX分别接GND、PC0、PC1)

然后我们添加TC0定时器,并且使能溢出中断,超时时间设置为1ms。之所以需要定时器是为了记录系统时钟,从而可以辅助按键去除抖动。

根据官方文档我们知道PF5是LED,PF6是按键,所以我们将PF5设置为输出端口,PF6设置为输入端口并且使能上升沿触发中断。

 

最后在中断管理器中打开全局中断

3. 系统流程

CheckNetOK:

检查通讯模块是否联网正常(由于此处没有通讯模块,所以恒返回YES)

Parse Packet:

解析串口数据(收到“0”表示关闭LED,收到其他则表示打开LED)

Judge The Signal:

根据按键状态和串口命令决定LED明灭

Response/Notify:

如果收到串口命令则应答“got”;如果获取按键命令,则通知串口“0”/“1”。

 

4. 核心代码分析

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

SystemClockHandler为TC0的中断处理函数,该函数每1ms执行一次,g_SystemTicks记录了当前系统时钟。

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

KeyInterruptHandler为按键中断函数,每次执行会置位按键标志(KEY_VAL_MASK),并翻转按键LED值(g_KeyValue)。100ms内多次发生中断视为信号抖动,并无视。

") rgba(220, 220, 220, 0.5); top: -15px; left: 0px; display: block;">

分别获取串口和按键值,如果LED值翻转,则重置LED。

 

5. 演示截图

 

最后附上工程文件

繁絮至此,但求明细。

 

 

image.png (31.3 KB, 下载次数: 0)

image.png

remoteLed.X.zip

197.05 KB, 下载次数: 7

MPLAB X IDE工程文件

最新回复

感谢博主,问题已经解决,谢谢   详情 回复 发表于 2019-11-1 15:53

赞赏

1

查看全部赞赏

点赞 关注(1)
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

博主能不能将芯片的库函数开发手册发给我一下

点评

在官网上没找到过函数库相关的开发手册,主要是凭借MCC生成的代码函数名猜用法。 如果想要了解寄存器级的代码库,这里有个SearchGate的入门指导(很简单,只是个指导) https://www.researchgate.net/profile/  详情 回复 发表于 2019-10-27 22:44
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
本帖最后由 Ansersion 于 2019-10-29 10:57 编辑
ZHANGKAOLEI 发表于 2019-10-26 18:29 博主能不能将芯片的库函数开发手册发给我一下

在官网上没找到过函数库相关的开发手册,主要是凭借MCC生成的代码函数名猜用法。

如果想要了解寄存器级的代码库,这里有个ResearchGate的入门指导(很简单,只是个指导)

https://www.researchgate.net/profile/Aravind_E_Vijayan/publication/263084656_A_Beginners_Guide_to_AVR/links/0f317539bfdd4eab76000000/A-Beginners-Guide-to-AVR.pdf

 

更深一层可以参考mega0系列的datasheet

http://ww1.microchip.com/downloads/en/DeviceDoc/megaAVR-0-series-Family-Data-Sheet-40002015C.pdf

 

另外建议多使用快捷键“Ctrl+|”自动补全,也可以提供一些信息。

 

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
本帖最后由 ZHANGKAOLEI 于 2019-10-29 11:09 编辑
ZHANGKAOLEI 发表于 2019-10-26 18:29 博主能不能将芯片的库函数开发手册发给我一下

谢谢,我自己配了一个ADC和串口通信,串口通信行了,可是ADC没有数据出来。希望博主出一个这方面的配置,给我学习学习

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 

感谢博主,问题已经解决,谢谢

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表