智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2970|回复: 10
打印 上一主题 下一主题

[信息] DG128 PWM的应用举例

[复制链接]

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
跳转到指定楼层
1#
发表于 2013-1-16 16:19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM的使用方法比较简单,只要在系统初始化时设置好寄存器,使PWM正常工作,则不需要额外的设置,它也会一直输出波形。
本例使用PWM5通道控制LED灯的亮度,这通过调节PWM波占空比实现。
#include <hidef.h>
#include<mc9s12dg128.h>
#include"crg.h"
#pragram LINK_INFO DERIVATIVE "mc9s12dg128b"

void PWM Init (void)
{
    PWME=0x00;  //设置PWM允许寄存器,全部禁止
    PWMPOL=0x20;  //设置极性寄存器,把5通道设置成首先输出高电平,占空比计数器计数完毕后变为低电平
    PWMCLK=0x20;  //设置PWM时钟选择寄存器,5通道以Clock SA作为时钟源
    PWMPRCLK=0x04;  //设置预分频时钟选择寄存器,时钟A的时钟周期为总线周期的8分频。
    PWMCAE=0x00;  //设置居中对齐允许寄存器,设置5通道为左对齐方式
    PWMCTL=0x00;  //PWM控制寄存器,设置为非级联方式,也就是5通道单独使用
    PWMSCLA=0x05;  //设置PWM比例因子寄存器A,
    PWMPER5=0x64;  //设置PWM通道周期寄存器
}

void main (void)
{
    unsigned char i;
    unsigned long j=10000;
    SET_PLL ();         //设置锁相环 ,此处作用还有待学习
    EnableInterrupts;    //使能所有的中断
    PWMInit ();            //PWM的初始化
    for ( i=0;i<0x64;i++)
    {
         while( j - -);
         j=10000;
                 while( j - -);
                 j=10000;
         PWMDTY5=i;     //设定占空比
         PWME=0x20;    //初始化的时候禁止所有的通道,在主函数中等所有有关PWM的设置都结束之后再打开         
    }
}

真的很想说,由孙同景主编的由机械工业出版社出版的《Freescale 9S12 十六位单片机原理及嵌入式技术》这本书错误真的不少。不过,单从内容上来看此书对学习飞思卡尔还是很不错的。

13

主题

721

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1909

优秀会员奖章活跃会员奖章

威望
1115
贡献
330
兑换币
3
注册时间
2012-12-31
在线时间
232 小时
2#
发表于 2013-1-16 21:23:02 | 只看该作者
回复 支持 反对

使用道具 举报

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
3#
 楼主| 发表于 2013-1-16 21:29:21 | 只看该作者
Peaker 发表于 2013-1-16 21:23

??????
回复 支持 反对

使用道具 举报

13

主题

721

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1909

优秀会员奖章活跃会员奖章

威望
1115
贡献
330
兑换币
3
注册时间
2012-12-31
在线时间
232 小时
4#
发表于 2013-1-17 07:52:33 | 只看该作者
蛋求无悔 发表于 2013-1-16 21:29
??????

有点基本了点
回复 支持 反对

使用道具 举报

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
5#
 楼主| 发表于 2013-1-17 09:51:15 | 只看该作者
Peaker 发表于 2013-1-17 07:52
有点基本了点

见笑了,刚开始进行,多多指教
回复 支持 反对

使用道具 举报

8

主题

206

帖子

0

精华

高级会员

Rank: 4

积分
808

活跃会员奖章优秀会员奖章

QQ
威望
418
贡献
300
兑换币
174
注册时间
2011-12-23
在线时间
45 小时
6#
发表于 2013-1-17 15:03:19 | 只看该作者
小儿科了!
回复 支持 反对

使用道具 举报

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
7#
 楼主| 发表于 2013-1-17 15:20:08 | 只看该作者
王谦623 发表于 2013-1-17 15:03
小儿科了!

多多指教
回复 支持 反对

使用道具 举报

1

主题

46

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1253
威望
611
贡献
322
兑换币
395
注册时间
2013-2-12
在线时间
160 小时
8#
发表于 2013-2-15 14:43:58 | 只看该作者
PWMSCLA=0x05;  //设置PWM比例因子寄存器A  这样设置后PWMSCLA的只是说多少
回复 支持 反对

使用道具 举报

1

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
775
威望
401
贡献
238
兑换币
192
注册时间
2012-11-1
在线时间
68 小时
9#
发表于 2013-3-24 20:29:00 | 只看该作者
while(j--);
  j=1000;  有这样的吗 请问?
回复 支持 反对

使用道具 举报

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
10#
 楼主| 发表于 2013-3-25 14:10:20 | 只看该作者
897087122 发表于 2013-3-24 20:29
while(j--);
  j=1000;  有这样的吗 请问?

请仔细看程序,不要自己没看明白就来一句“请问” 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 15:09 , Processed in 0.070779 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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