智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

自学总结lesson2.PWM的操作

  [复制链接]

8

主题

156

帖子

0

精华

高级会员

Rank: 4

积分
654
威望
409
贡献
191
兑换币
113
注册时间
2012-7-18
在线时间
27 小时
跳转到指定楼层
1#
发表于 2012-10-31 18:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
lesson2.PWM的操作程序设计收获
1,编程时注意细节,本次编写时在PWM寄存器初始化完成后使能错误,因而导致前期检测不出来PWM波。
2,在占空比为10时已经可以驱动数码管,辉度已经完全可以满足显示。
3,貌似真没有PWM6号通道的输出口。
寄存器介绍
1PWME使能寄存器使用方法是PWME_PWME[0~7]=1;对应相应的PWM打开,PWM对应单片机的1~4号引脚和78~80引脚。
2PWM极性寄存器PWMPOLPPOL[7:0]=1,PWM通道输出在开始的时候为高电平,为0说明开始时为低电平。
3PWM时钟选择寄存器PWMCLKS12PWM 共有四个时钟源,每一个 PWM输出通道都有两个时钟可供选择(ClockAClockSA Clock BClockSB))。其中0145 通道可选用ClockAClockSA2367 通道可选用ClockBClockSB 通道。该寄存器用来实现几个通道时钟源的选择。
用法    PCLK0 = 1 --- 通道0PTP0)的时钟源设为ClockSA
         PCLK2 = 0 --- 通道2PTP2)的时钟源设为ClockB
4PWM预分频寄存器PWMPRCLKPWMPRCLK 寄存器包括ClockA预分频和ClockB预分频的控制位。ClockAClockB的值为总线时钟的1/2n (0n7),具体设置参照图4和图5
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif
4 Clock A 预分频设置
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.gif
5 Clock B 预分频设置
PCKB0~PCKB2  是对ClockB进行预分频。
PCKA0~PCKA2  是对ClockA进行预分频。
5PWM分频寄存器PWMSCLAPWMSCLB
PWMSCLA 寄存器每一位如图 6 所示:
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.gif
6       PWMSCLA寄存器
Clock SA 是通过对PWMSCLA 寄存器的设置来对ClockA 进行分频而产生的。其计算公式为:
Clock SA=Clock A /(2*PWMSCLA)
PWMSCLB 寄存器与PWMSCLA 寄存器相似,Clock SB 就是通过对PWMSCLB 寄存器的设置来对 ClockB 进行分频而产生的。其计算公式为:
Clock SB=Clock B /(2*PWMSCLB)
6,PWM中间对齐使能寄存器PWMCAE:CAE[7:0]=1,采用中间对齐模式;CAE[7:0]=0,采用左对齐模式。
7PWM通道周期寄存器(PWMPERX
具体按如下公式计算,左对齐时:PWM周期=通道时钟周期*PWMPERX;
         中间对齐时:PWM周期=通道时钟周期*2*PWMPERX;
8,PWM占空比寄存器PWMDTYX:PWM占空比计算和极性寄存器PWMPOL有关,当PPOLx=0时,
占空比=(周期寄存器值减去占空比寄存器值)除以周期寄存器值;
当PPOLx=1时,
占空比=占空比寄存器值除以周期寄存器值。
初始化步骤
设置步骤:
禁止PWM
先选择相应的时钟源
设置对齐方式
设置周期和占空比
启动通道即使能PWM
例程设计
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include <MC9S12XS128.h>
void delay(unsigned int t)   //毫秒级延时
{  
   unsigned int j;
   unsigned char a,b;
   for(j=0;j<t;j++)
    {
     for(b=2;b>0;b--)
       for(a=124;a>0;a--)
       {
         asm NOP;
         asm NOP;
         asm NOP;
       }
    }
}
void jingzhen(unsigned int pinl)
{
CLKSEL=0X00;
PLLCTL=0XE1;
switch (pinl)
  {
   //case 11:SYNR=6911;REFDV=9999;break;
   case 24:SYNR=2;REFDV=1;break;
   case 48:SYNR=5;REFDV=1;break;
   case 96:SYNR=5;REFDV=0;break;
   default:break;
  
  }
PLLCTL=0X60;
  asmNOP;
  asmNOP;
  asmNOP;
  asmNOP;
  asmNOP;
  while(!(CRGFLG_LOCK==1));   
delay(500);
CLKSEL=0X80;  
}
void PWM()
{
PWME_PWME0=0;//0 channel choose jinzhi
PWMCAE_CAE0=1;//0 channel 中心对齐 shuchu,必须在pwm打开前进行设置
PWMCLK_PCLK0=0; //0 channel clock A choose
PWMPOL_PPOL0=1;//中心对齐方式
PWMPRCLK_PCKA2=1;
PWMPRCLK_PCKA1=1;
PWMPRCLK_PCKA0=1;  //clockA 128fenpinclockA=24/128=187500Hz,
PWMPER0=0x0a;   //  PWM 周期=通道时钟周期*2*PWMPER0=375k
//PWMDTY0=0X05;//占空比  占空比=占空比寄存器值除以周期寄存器值!10%
  PWME_PWME0=1;
//PWMDTY0=0X05;
  
}
void main(void) {
  /*put your own code here */
  
DDRP=0XFF;
       EnableInterrupts;
jingzhen(24);
delay(1000);
PWM();
delay(500);
  
for(;;)
  {
   _FEED_COP(); /* feeds the dog */
    PWMDTY0=0;//输出 3750k 0%占空比
    delay(3000);
    PWMDTY0=1;//输出 3750k 10%占空比
    delay(3000);
    PWMDTY0=0;//输出 3750k 0%占空比
    delay(3000);
    PWMDTY0=4;//输出 3750k 40%占空比
    delay(3000);
    PWMDTY0=0;//输出 3750k 0%占空比
    delay(3000);
    PWMDTY0=6;//输出 3750k 60%占空比
    delay(3000);
    PWMDTY0=0;//输出 3750k 0%占空比
    delay(3000);
    PWMDTY0=8;//输出 3750k 80%占空比
    delay(3000);
    PWMDTY0=0;//输出 3750k 0%占空比
    delay(3000);
    PWMDTY0=0x0a;//输出 3750k 100%占空比
    delay(3000);
    PWMDTY0=0;//输出 3750k 100%占空比
    delay(3000);
     
  }/* loop forever */
  /*please make sure that you never leave main */
}

0

主题

58

帖子

0

精华

高级会员

Rank: 4

积分
927
威望
493
贡献
286
兑换币
216
注册时间
2012-7-24
在线时间
74 小时
2#
发表于 2012-12-10 21:10:59 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
威望
192
贡献
51
兑换币
58
注册时间
2012-10-24
在线时间
38 小时
3#
发表于 2012-12-13 20:46:45 | 只看该作者
不错,谢谢。
回复 支持 反对

使用道具 举报

8

主题

156

帖子

0

精华

高级会员

Rank: 4

积分
654
威望
409
贡献
191
兑换币
113
注册时间
2012-7-18
在线时间
27 小时
4#
 楼主| 发表于 2012-12-16 10:41:31 | 只看该作者
瓜豪gh 发表于 2012-12-10 21:10
谢谢

同样谢谢支持
回复 支持 反对

使用道具 举报

4

主题

239

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1869

优秀会员奖章

威望
932
贡献
543
兑换币
340
注册时间
2012-11-25
在线时间
197 小时
5#
发表于 2012-12-17 13:26:54 | 只看该作者
长知识了
回复 支持 反对

使用道具 举报

0

主题

299

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1150
威望
707
贡献
269
兑换币
489
注册时间
2012-4-22
在线时间
87 小时
6#
发表于 2012-12-17 22:21:04 | 只看该作者
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
威望
249
贡献
82
兑换币
119
注册时间
2012-10-30
在线时间
46 小时
7#
发表于 2013-3-16 10:53:50 | 只看该作者
楼主,威武
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
威望
249
贡献
82
兑换币
119
注册时间
2012-10-30
在线时间
46 小时
8#
发表于 2013-3-16 15:07:10 | 只看该作者
感谢了,收益匪浅
回复 支持 反对

使用道具 举报

0

主题

1672

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13030
QQ
威望
7128
贡献
3436
兑换币
424
注册时间
2013-1-5
在线时间
1233 小时
9#
发表于 2013-3-16 18:28:06 | 只看该作者
学习了!!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
81
威望
38
贡献
17
兑换币
23
注册时间
2013-3-5
在线时间
13 小时
毕业学校
山东交通学院
10#
发表于 2013-3-18 21:45:49 | 只看该作者
谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 05:48 , Processed in 0.128740 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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