找回密码
 注册
关于网站域名变更的通知
查看: 3073|回复: 10
打印 上一主题 下一主题

求助:如何利用定时器中断实现呼吸灯的效果

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-13 09:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 十一月 于 2019-3-13 09:38 编辑
+ P" z+ d% x0 ]  M/ u2 x
: [7 B# b. N$ j$ K# i' D1 o求助:如何利用定时器中断实现呼吸灯的效果: Q  A- F) I8 V% ?  W  w; |* n( Y

9 h% U2 ^1 f* G* o1 Q4 w

5 ^7 ^. E. b; }由于芯片没有硬件的PWM,所以只能软件模拟,但是测下来发现都是在闪烁,没有做出呼吸的效果。. q& ?; k" ^5 U5 F5 ]
如果是使用延时的方法确实可以做出来,但是对于运行效率来说太慢了。( {. o7 u6 z! D& h7 c: {0 M6 n' T% b
; H2 B: ^. S4 K: s; T
我的目标是利用定时器中断实现呼吸灯,请问应该怎么做?

2 s$ b/ w- q$ V8 M: v  u

该用户从未签到

2#
发表于 2019-3-13 09:34 | 只看该作者
软件打开一个40US的中断,每一格加40US就可以了

该用户从未签到

3#
发表于 2019-3-13 09:45 | 只看该作者
软件模拟,放中断里就可以了。

点评

定时器中断里,定时一个1ms的中断,计数到100ms翻转一次。这个就是PWM周期, 如果你要调占空比30%,就计数到30ms翻转一次,周期到了再翻转一次,这就是一个PWM波形了。然后就是调占空比变量,慢慢加占空比,加到95%开  详情 回复 发表于 2019-3-13 10:01

该用户从未签到

4#
 楼主| 发表于 2019-3-13 09:46 | 只看该作者
可以说一下具体的逻辑怎么实现吗?我现在的问题是出在不知道如何在程序上调整占空比。谢谢了  

点评

定时器中断里,定时一个1ms的中断,计数到100ms翻转一次。这个就是PWM周期, 如果你要调占空比30%,就计数到30ms翻转一次,周期到了再翻转一次,这就是一个PWM波形了。然后就是调占空比变量,慢慢加占空比,加到95%开  详情 回复 发表于 2019-3-13 10:01

该用户从未签到

5#
发表于 2019-3-13 10:01 | 只看该作者
十一月 发表于 2019-3-13 09:46
6 u! K: l( |1 t/ g可以说一下具体的逻辑怎么实现吗?我现在的问题是出在不知道如何在程序上调整占空比。谢谢了
4 C& L7 G: }( F' @9 j
定时器中断里,定时一个1ms的中断,计数到100ms翻转一次。这个就是PWM周期, 如果你要调占空比30%,就计数到30ms翻转一次,周期到了再翻转一次,这就是一个PWM波形了。然后就是调占空比变量,慢慢加占空比,加到95%开始减少,减小到20%左右开始增加。就是呼吸效果了
8 [+ s/ X  S4 q* D+ }" R+ }

该用户从未签到

6#
 楼主| 发表于 2019-3-13 10:11 | 只看该作者
我试了下,还是有问题。我的问题应该出在怎么占空比上面。如果PWM周期为100ms的话,30%的占空比就应该是亮30ms灭70ms? 那我程序上在何时调整我的占空比呢?

点评

可以调整占空比的时间,比如你要一个呼吸周期3s,那么从最暗到最亮需要1.5s,你假如从20%亮度调节到100%,需要调节80个,那么调节周期就是1500/80 = 15ms,就是每15ms改变一次占空比,当然最好这个时间要大于一个PWM  详情 回复 发表于 2019-3-13 10:23

该用户从未签到

7#
发表于 2019-3-13 10:23 | 只看该作者
十一月 发表于 2019-3-13 10:11. W0 \* D+ v* C0 J7 w' ^
我试了下,还是有问题。我的问题应该出在怎么占空比上面。如果PWM周期为100ms的话,30%的占空比就应该是亮3 ...
9 r" D5 k5 R* h$ O* p- C7 p
可以调整占空比的时间,比如你要一个呼吸周期3s,那么从最暗到最亮需要1.5s,你假如从20%亮度调节到100%,需要调节80个,那么调节周期就是1500/80 = 15ms,就是每15ms改变一次占空比,当然最好这个时间要大于一个PWM的周期的。  k$ ]3 z) m: y

点评

现在呼吸的现象是有了,但是效果不太理想,估计是我占空比的曲线没有设定好,这个有没有好的方法呢?  详情 回复 发表于 2019-3-13 10:33

该用户从未签到

8#
 楼主| 发表于 2019-3-13 10:33 | 只看该作者
gaoxings 发表于 2019-3-13 10:236 j7 A/ L- B. R3 C
可以调整占空比的时间,比如你要一个呼吸周期3s,那么从最暗到最亮需要1.5s,你假如从20%亮度调节到100% ...

1 b. \% g! c# }9 {+ y0 ~现在呼吸的现象是有了,但是效果不太理想,估计是我占空比的曲线没有设定好,这个有没有好的方法呢?( X: J$ I: T2 S6 v7 h0 ]

点评

估计是曲线问题,你可以调整呼吸曲线的,比如达到100%了,就延时一会再开始变暗,呼吸效果就不会显得太急促。可以多试试,自己觉得呼吸效果舒服就可以了  详情 回复 发表于 2019-3-13 10:57

该用户从未签到

9#
发表于 2019-3-13 10:57 | 只看该作者
十一月 发表于 2019-3-13 10:33
" }0 X! ^3 L4 p2 h% m2 k1 U% K现在呼吸的现象是有了,但是效果不太理想,估计是我占空比的曲线没有设定好,这个有没有好的方法呢?
8 V/ o+ M* O: s$ N) E' X
估计是曲线问题,你可以调整呼吸曲线的,比如达到100%了,就延时一会再开始变暗,呼吸效果就不会显得太急促。可以多试试,自己觉得呼吸效果舒服就可以了
2 |. k* `- T# e: V( r8 a

该用户从未签到

10#
 楼主| 发表于 2019-3-13 11:01 | 只看该作者
感谢楼上各位的回复,找到问题了,模拟的PWM周期控制在10ms,呼吸周期3s,效果比较好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-23 13:34 , Processed in 0.125000 second(s), 31 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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