打印
[活动专区]

【AutoChips 7801x MCU评测报告】也搞电位器调LED亮度-仅一句代码

[复制链接]
2876|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
控制LED亮度,原理很简单
担心大佬们不屑看下去
只好先抛一个噱头----此功能只需手工写一句代码

关键词:AutoGen、CTU、ADC、PWM


一、起因:
论坛里看到这个贴子,实现了可变电阻控制LED亮度:
https://bbs.21ic.com/icview-2983550-1-1.html


感觉这个创意很好啊,给人的观感不错。
原理当然简单:根据ADC的值,控制PWM的占当比,LED亮度就变化了。
我想自己实现它,于是就做了。


二、分析:
AC78013通用板的LED1(丝印是LED2),接在了PC9,而PC9恰好又可以复用为PWM1_CH6:

太好了,导线都省了,直接用PWM1控制LED。

基本的功能框图如下:


看一下AC7801x的CTU框图,PWM可以作为ADC的触发源:


也就是下图红色的路径:


既如此,不用它触发,岂不是浪费。
于是功能框图修改如下:



三、实现:

打开AutoGen Studio,使能ADC、CTU、PWM1:

配置ADC通道8(板载可变电阻接到了通道8):

在CTU中配置PWM1的计数器Init事件为ADC规则通道的触发源:

配置PWM1。注意,AC78013的ADC分辨率是12位,即0-4095。
把PWM的计数值正好设置为0-4095即可

PWM1的通道6缺省为PB6。点击图中的PC9引脚,选中“PWM1_CH6”,
把通道6配置到PC9上

好了,现在可以保存工程、生成代码。
打开生成的MDK工程,找到ADC中断服务函数,输入前面提到的所谓一句代码:


当然,一句只是噱头。因为这句代码用到的API需要引用其它头文件,所以还需添加以下两句#include:


OK,再也不需要写入代码,直接编译烧写看效果吧!
在下不会制作动图,请直接看本贴最上面借用的chongdongchen拍摄的动图吧。

ADC_PWM_LED.rar (1.19 MB)


使用特权

评论回复
评论
chongdongchen 2020-7-1 13:53 回复TA
@lihuasoft :透露一下,我是用【xunlei影音】制作的。。播放界面右击就看到了 
lihuasoft 2020-7-1 13:04 回复TA
文中有笔误。占空比写成了“占当比”,不编辑了,阅者自明。 

相关帖子

沙发
JasonLee27| | 2020-7-1 19:52 | 只看该作者
可以的,其实不一定非要PWM触发ADC,提个想法,可以配置timer定时触发ADC采样,并采用DMA将ADC采样值直接搬运到PWM的CHnV寄存器中,理论上应该可行。这样一句代码都不用了

使用特权

评论回复
评论
lihuasoft 2020-7-3 12:10 回复TA
@dengyonglei :哦哦!果然是我看得不仔细 
lihuasoft 2020-7-3 12:10 回复TA
@JasonLee27 :厉害!这两天又忙。会尽快去看贴,好好学习一下 
JasonLee27 2020-7-2 16:32 回复TA
https://bbs.21ic.com/icview-2985218-1-1.html工程完成了,按照设想,Timer0 10ms触发一次ADC采样,DMA将ADC采样的值写入PWM CHnV寄存器,达到调节LED亮度的效果。不需要额外添加代码。 
dengyonglei 2020-7-2 12:59 回复TA
@lihuasoft :外设的DMA生成在ac780x_msp.c函数里,有问题可以反馈 
lihuasoft 2020-7-2 09:17 回复TA
开始时也尝试过DMA,但AutoGen配置生成的DMA代码为空函数,可能目前版本的AutoGen还不完善吧。打算再试试之后专门反馈一下 
板凳
TechHolder| | 2020-7-1 19:53 | 只看该作者
这个想法真的不错,佩服,集思广益

使用特权

评论回复
地板
ATC2019| | 2020-7-2 08:53 | 只看该作者
nice,好贴

使用特权

评论回复
5
zeshoufx| | 2020-7-3 14:36 | 只看该作者
谢谢分享【电位器调节LED亮度】应用方案

使用特权

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

本版积分规则

19

主题

272

帖子

3

粉丝