打印
[8/16-bit MCU]

MC9S08系列 进行呼吸灯设计

[复制链接]
2256|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
focus_447|  楼主 | 2015-4-23 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前,用MC9S08系列进行呼吸灯设计,前期电路设计过程中,LED口没有连接到PTF等PWM口上,所以现在只能采用GPIO模式进行设计,主要思路是:
1)目前测试方案:利用中断定时器进行设计,通过更改中断定时时间来做到改变LED亮度的调整,类似于PWM占空比变化。
2)另外一个方案:利用PWM接口的占空比变化做到亮度调整,但是由于我的LED口没有设计在专用口上,没有这个方案有点局限。
进行第一种方案是出现的问题:
1)意图通过进入定时器溢出中断时,重新复制TPM1MODH:TPM1MODL,从而达到改变定时器时间的效果,但是实际测试过程中发现,目前的定时时间一直为第一次写入TPM1MOD的设置值。
2)如果采用PWM占空比变化,是否可以不直接硬性采用Chx通道输出,而是可以进入中断处理从而改变LED连接的通用口赋值。
如下附上,中断处理函数。

uint_8 dummy=0;
uint_16 time_tmp=0xFFF0;
void interrupt VectorNumber_Vtpm1ovf  TPM_ISR(void)
{
        TPM1SC &=0x0F ;
        PTCD_PTCD4^=1;

         if(time_tmp>0x0020)
         time_tmp-=0x20;

        TPM1MODH=(uint_8)(time_tmp>>8);
        TPM1MODL=(uint_8)(time_tmp>>0);

        dummy=TPM1SC;
        TPM1SC =0x4F;

}

相关帖子

沙发
gaoyang9992006| | 2015-4-23 12:11 | 只看该作者
呼吸灯要明白其中的原理,然后规划需要哪些外设来实现它。

使用特权

评论回复
板凳
kamen588| | 2015-4-23 13:41 | 只看该作者
请问你用的是什么编程器,哪里买的

使用特权

评论回复
地板
598330983| | 2015-4-23 14:09 | 只看该作者
飞思卡尔这么高级的东西,做呼吸灯,浪费了吧。

使用特权

评论回复
5
focus_447|  楼主 | 2015-4-23 14:13 | 只看该作者
gaoyang9992006 发表于 2015-4-23 12:11
呼吸灯要明白其中的原理,然后规划需要哪些外设来实现它。

呼吸灯的原理是明白,理论上直接运用PWM口输出占空比变化来实现LED等的亮度高低来实现是最为简易的,但是基于目前这块开发板的设计,只能变通的使用计数器进行GPIO口的赋值输出来实现,但是现在的疑惑出现在:
1)使用计数器中断过程中,对TPM1MODH:TPM1MODL重新赋值,却没办法实现定时长度的变化。

使用特权

评论回复
6
focus_447|  楼主 | 2015-4-23 14:15 | 只看该作者
kamen588 发表于 2015-4-23 13:41
请问你用的是什么编程器,哪里买的

使用的是USBDM编程器进行实时下载,直接网络上淘的

使用特权

评论回复
7
focus_447|  楼主 | 2015-4-23 14:17 | 只看该作者
598330983 发表于 2015-4-23 14:09
飞思卡尔这么高级的东西,做呼吸灯,浪费了吧。

说的好,呼吸灯是我功能里面的一部分,全局使用,不只是这么一块功能而已

使用特权

评论回复
8
le062| | 2015-4-23 23:03 | 只看该作者
我之前做过3*33矩阵,32级亮度,100hz刷新速度

使用特权

评论回复
9
le062| | 2015-4-23 23:05 | 只看该作者
我有个帖子就是讲这个算法,需要做到 O(1)

使用特权

评论回复
10
734774645| | 2015-4-23 23:07 | 只看该作者
楼主先做个动态调整PWM的试试

使用特权

评论回复
11
focus_447|  楼主 | 2015-4-23 23:54 | 只看该作者
le062 发表于 2015-4-23 23:03
我之前做过3*33矩阵,32级亮度,100hz刷新速度

不敢做到那么大  但是就是连亮度调整 现在都是出于迷糊状态

使用特权

评论回复
12
focus_447|  楼主 | 2015-4-23 23:55 | 只看该作者
le062 发表于 2015-4-23 23:05
我有个帖子就是讲这个算法,需要做到 O(1)

求链接

使用特权

评论回复
13
focus_447|  楼主 | 2015-4-23 23:56 | 只看该作者
734774645 发表于 2015-4-23 23:07
楼主先做个动态调整PWM的试试

我也打算尝试做动态的PWM控制 ,可是现在就是定时中断中更改TPM1MOD赋值后,出来的定时时间还是原来的,貌似没有更改

使用特权

评论回复
14
focus_447|  楼主 | 2015-4-24 00:02 | 只看该作者
734774645 发表于 2015-4-23 23:07
楼主先做个动态调整PWM的试试

你的意思是通过改变PWM占空比值进行亮度调整是吗,但是我又担心我现在不是用PWM口进行LED驱动,所以调整了也达不到作用,我是希望通过调整定时时间来进行GPIO口的高低赋值输出

使用特权

评论回复
15
jrcsh| | 2015-4-24 01:12 | 只看该作者
  我用 SPWM 玩的    变占空比,  


[开源硬件] 开源~~软件实现~SPWM

https://bbs.21ic.com/icview-887210-1-1.html




使用特权

评论回复
16
wanggang4383| | 2015-4-24 08:58 | 只看该作者
赋值前是不是要将定时器停止啊,你那个TPM1SC &= 0x0F 改成TPM1SC &= 0x00 试试?

使用特权

评论回复
17
liuxing4585| | 2015-4-24 10:36 | 只看该作者
MC9S08系列 进行呼吸灯设计

使用特权

评论回复
18
focus_447|  楼主 | 2015-4-24 13:45 | 只看该作者
jrcsh 发表于 2015-4-24 01:12
我用 SPWM 玩的    变占空比,  

谢谢连接啊 ,可以借鉴下

使用特权

评论回复
19
focus_447|  楼主 | 2015-4-24 13:49 | 只看该作者
wanggang4383 发表于 2015-4-24 08:58
赋值前是不是要将定时器停止啊,你那个TPM1SC &= 0x0F 改成TPM1SC &= 0x00 试试?

可以了。之前的问题是我的赋值偏差比较小,而且我放到中断里面处理,处理结束后我外面的循环函数又把PTCD_PTCD4端口复位,所以看到没有什么变化,现在测试证实TPM1MOD赋值变化可以改变中断计时时间。
后续的呼吸灯逻辑再慢慢调整下就是了 ,谢谢大家!!!!!!!!!!!!!!!!

使用特权

评论回复
20
598330983| | 2015-4-25 21:40 | 只看该作者
le062 发表于 2015-4-23 23:05
我有个帖子就是讲这个算法,需要做到 O(1)

需要做到 O(1),,,????是什么啊

使用特权

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

本版积分规则

2

主题

12

帖子

0

粉丝