版主能详细说一下吗?我的程序如下,好像没用到中断啊?
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#include "PLL.h"
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void PWM_Init(void);
void main(void) {
unsigned int i;
unsigned long j=10000;
/* put your own code here */
DisableInterrupts;
PLL_Init();
Start_PLL();
PWM_Init();
//PWME=0xff; //运行PWM所有通道输出
PWMDTY5=50; //占空比为30%
PWME=0X0; //使能PWM
PWME=0X20;
for (i=0;i<10;i++)
{
PWME=0X20; //使能PWM //PWMCNT5
}
//for(i=0;i<0x64;i++)
//{
////while (j--);
////j=1000;
////while(j--);
////j=10000;
//PWMDTY5=i; //PWMDTYx:PWM占空比寄存器 设置占空比
//PWME=0X20; //使能PWM
//} /* wait forever */
/* please make sure that you never leave this function */
}
// 使用PWM5进行控制
void PWM_Init(void)
{
PWME=0x00; //Close PWM
PWMPOL =0X20; //PWMPOL;PWM极性寄存器 0X20 先输出高电平,占空比计数器计数完毕后变为低电平
PWMCLK =0X20; // PWMCLK:PWM时钟选择寄存器 0X20使用SA时钟
PWMPRCLK=0X07; //PWMPRCLK:PWM预分频时钟选择寄存器 时钟A为总线128分频
PWMCAE=0X00; //PWMCAE:PWM剧中对齐允许寄存器 左对齐输出模式
PWMCTL=0X00; //PWMCTL:PWM控制寄存器 非级联方式 单独使用通道5
PWMSCLA=0X05; //PWMSCLA:PWM比例因子寄存器A CLOCKSA=CLOCKA/(2*PWMSCLA)为3kHz
PWMPER5=0x64; // PWMPERx:PWM通道周期寄存器 设定周期
//PWMSCLA = 60;
//PWMPRCLK_PCKB=3; // Clock B= Bus Clock/8
//PWMCTL |=PWMCTL_CON23_MASK;
// PWMPER0 = 100; //0.5ms
// PWMPER1 = 100;
// PWMDTY0=25;
// PWMDTY1=30;
// PWMPER23=60000;
// PWMDTY23=4500;
}
问题解决了吗?我现在也遇到这样的问题了。希望能指点一下
能详细说说吗?还是不太明白
因为是控制步进电机的,所以要求能精确输出脉冲的个数。现在板子已经做好了,就是用PWM的管脚来控制步进电机的。
我现在用pwm的中断,不能进去啊。程序如下。帮忙看啊可能是哪里的问题呢
//PWM紧急关断
interrupt void interrupt_PWM(void)
{
PWME=0X0;
}
输出PWM的口与PT口连起来,计数脉冲个数 我是这样实现的
strongchen
我把文件发到你信箱了
输出PWM的口与PT口连起来,计数脉冲个数 我是这样实现的
多谢,那么用PWM的中断来判断行么?
我看有人这么推荐过,包括咱们版主好像都这么说过,但是我尝试用中断,总是不成功啊。
哪位能详细说说呢?谢谢了
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |