社区导航

 

搜索
查看: 619|回复: 5

[经验] 【ATmega4809 Curiosity Nano测评】串口按键控灯(IoT Led前篇)

[复制链接]

45

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-10-22 10:05 | 显示全部楼层 |阅读模式
本帖最后由 Ansersion 于 2019-10-22 10:07 编辑

1. 简介

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

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

image.png

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

 

2. MCC配置

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

image.png

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

image.png

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

image.png

 

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

image.png

3. 系统流程

image.png

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

image.png

 

最后附上工程文件

繁絮至此,但求明细。

 

 

此帖出自Atmel MCU论坛
image.png

remoteLed.X.zip

197.05 KB, 下载次数: 4

MPLAB X IDE工程文件

评分

1

查看全部评分



回复

使用道具 举报

103

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-10-22 13:37 | 显示全部楼层

666,感谢分享。

stm32f103资料

硬氪网



回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-10-26 18:29 | 显示全部楼层

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

点评

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


回复

使用道具 举报

45

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-10-27 22:44 | 显示全部楼层
本帖最后由 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

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

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

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



回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-11-1 15:53 | 显示全部楼层

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



回复

使用道具 举报

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

关闭

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

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-11-14 08:48 , Processed in 0.207150 second(s), 19 queries , Gzip On, MemCache On.

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