[PIC®/AVR®/dsPIC®产品] ATMEGA4809的IO输出与输入应用

[复制链接]
2034|10
 楼主| gaoyang9992006 发表于 2025-1-8 18:54 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2025-1-10 15:26 编辑

#申请原创# @21小跑堂

本人计划发一个系列的AVR单片机的MCC开发图文教程,之前发过类似的,发现新版的MCC跟之前改动比较大,也更加完备,更加好用了。
特此开贴更新一系列教程
本教程使用的开发板为:ATMEGA4809 CURIOSITY NANO
该开发板特性如下:ATmega4809 微控制器
一个机械用户开关
一个黄色用户 LED
32.768kHz 晶体,用于精确定时和时钟应用,~20 ppm
板载调试器
Microchip MPLAB X 中的电路板识别
一个绿色电源和状态 LED
编程和调试
虚拟 COM 端口 (CDC)
两个逻辑分析仪通道 (DGI GPIO)
USB 供电
可调目标电压
MIC5353 由板载调试器控制的 LDO 稳压器
1.8 - 5.1 V 输出电压(受 USB 输入电压限制)
500mA 最大输出电流


ATmega4809 微控制器 (MCU) 将智能硬件外设与 AVR 内核的低功耗容量相结合,拓宽了实时控制系统的有效性。使用高速 ADC、内核独立外设 (CIP) 和片上可配置自定义逻辑 (CCL) 提升您的设计。
MPLAB X IDE 作为放大镜,用于查看 MCU 并逐步完成调试。免费、易于使用的图形编程工具 MCC 允许您直观地对 ATmega4809 进行编程。

该开发板的主要特点
一块口香糖大小的板子,有能力将您的想法推向市场
板载调试器 - 无需外部工具即可对 ATmega4809 进行编程
灵活的 8 位 ATmega4809 MCU 非常适合实时控制

好了,接下来进入正题,所有的单片机学习第一步都是从点灯开始,也就是IO的输出。本贴将一并讨论IO的输入与输出配置与使用。
MCC是近年来微芯推出的图形化代码配置工具,可以在不用学习寄存器的基础上即可实现单片机硬件的配置与使用,并生成通俗易懂的库函数与工程模板。
大大降低了学习难度,可以帮助你快速的实现项目的开发。
接下来进入正题
新建工程,新建MCC工程
本次点灯使用的ATmega4809 Curiosity Nano evalutation kit,开发板上PF5是LED,PF6是按钮SW

该部分原理图是

可知,LED在低电平时候点亮,如果上电默认熄灭可配置为初始化高电平。
按钮是直接到地,可配置内部上拉电阻,按下后拉低。
先简单点亮LED,按照1Hz频率闪烁
在MCC网格矩阵配置PF5为输出

并在PINS配置工具条给引脚起一个新的名字YELLOW_LED,并勾选开始时候为高电平,这样默认就是熄灭状态了。

在定时器找到DELAY,添加到工程。
单击Generate生成工程代码,并完成编写main函数
  1. #include "mcc_generated_files/system/system.h"
  2. #include"mcc_generated_files/timer/delay.h"

  3. /*
  4.     Main application
  5. */

  6. int main(void)
  7. {
  8.     SYSTEM_Initialize();

  9.     while(1)
  10.     {
  11.         YELLOW_LED_Toggle();
  12.         DELAY_milliseconds(500);
  13.     }   
  14. }
编译并烧录。
此时PF5的黄色LED已经开始按照1Hz的周期开始闪烁了。
接下来添加按钮功能,以实现按下后停止闪烁,松开后按照上述方式闪烁。
配置PF6为输入模式

给PF6起个新名字SW,并使能上拉电阻


单击Generate生成工程代码
  1. #include "mcc_generated_files/system/system.h"
  2. #include"mcc_generated_files/timer/delay.h"

  3. /*
  4.     Main application
  5. */

  6. int main(void)
  7. {
  8.     SYSTEM_Initialize();

  9.     while(1)
  10.     {
  11.         if(SW_GetValue())
  12.         {
  13.             YELLOW_LED_Toggle();
  14.             DELAY_milliseconds(500);
  15.         }
  16.         else
  17.         {
  18.             YELLOW_LED_SetHigh();
  19.         }

  20.     }   
  21. }
编译测试,达到想要的效果。
好了,接下来有空我会分享多个外设的MCC配置使用方法配有视频教程


补充: Inverted I/O Enable
该功能是翻转IO的电平,使能了该功能的引脚,你在程序里IO输出高电平时候是输出低电平,输出高电平的时候是低电平。
例如上述代码的示例中,按下按钮正常是熄灭LED的,如果使能了PF5引脚的翻转IO功能,那么当按下按钮时候将会点亮LED。
那么输入呢?当然是相似的了,你可以试试这个功能了。

下一课学习IO的中断
https://bbs.21ic.com/icview-3426460-1-1.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
598330983 发表于 2025-1-8 19:39 | 显示全部楼层
MCC 做的代码看着真是优雅别致啊。
weifeng90 发表于 2025-1-9 08:04 来自手机 | 显示全部楼层
单片机的第一个应用程序,从点灯开始。
 楼主| gaoyang9992006 发表于 2025-1-9 10:36 | 显示全部楼层
weifeng90 发表于 2025-1-9 08:04
单片机的第一个应用程序,从点灯开始。

是的,使用单片机要从点灯开始,这样就完成了开发的必备工作。
yiy 发表于 2025-1-9 12:37 | 显示全部楼层
真不错,这个工具挺好用的。板子多少钱买的?
wanduzi 发表于 2025-1-9 19:37 | 显示全部楼层
IO的输入输出模式,不知道支持不支持高阻态模式,只有两种模式吗
21mengnan 发表于 2025-1-9 19:44 | 显示全部楼层
MIC5353 由板载调试器控制的 LDO 稳压器?如何调节?
21mengnan 发表于 2025-1-9 19:45 | 显示全部楼层
应该是已经固定为3.3V了吧,难道软件配置可以修改?
huangcunxiake 发表于 2025-1-10 15:01 | 显示全部楼层
特殊引脚也可以这么配置,自动完成吗
yiy 发表于 2025-1-26 15:38 | 显示全部楼层
ATmega4809 微控制器 (MCU) 将智能硬件外设与 AVR 内核的低功耗容量相结合,拓宽了实时控制系统的有效性。使用高速 ADC、内核独立外设 (CIP) 和片上可配置自定义逻辑 (CCL) 提升您的设计。
jiekou001 发表于 2025-1-26 18:56 | 显示全部楼层
上拉电阻,要不要开始的时候配置输出高电平。不配也可以吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部