共2条
1/1 1 跳转至页
PWM 请讨论一下PWM的事,请关注!
问
大家好!!这是我的电路图和程序:
我意图是让PWM2,PWM4,PWM6输出周期为1的方波,占空比50%.
但是结果是错误的,在开机一后,过了1S钟LED点亮,就不是熄灭了.
这是为什么呢??是我的程序有问题???请大家指点一下:
请大家讨论一下用PWM做控制的方法与经验.
#define PWM2 1<<7 //P0.7
#define PWM4 1<<8 //P0.8
#define PWM6 1<<9 //P0.9
/* PWM周期及占空比设置值 */
#define CYCLE 1
#define DUTY_DATA 0.5
int main (void)
{
uint8 i=1;
uint8 key_value;
key_value=255;
PINSEL0 = 0x000A8000; //GPIO,PWM2,PWM4,PWM6;
PINSEL1 = 0x00000000; //GPIO;
IO0DIR = 0xffffffff; //设置为输出;
IO1DIR = 0x010f0000; //设置P1.16~1.19为输出,P1.20~P1.23为输入;P1.24为输出
IO2DIR = LED8; //设置为输出;
//InitLCD(); //初始化液晶;
//init_draw_main_menu();
//IO1SET = LCD_K;
PWMPR = Fpclk; // 不分频,计数频率为Fpclk
PWMMCR = 0x02; // 设置PWMMR0匹配时复位PWMTC
PWMMR0 = CYCLE; // 设置PWM周期
PWMMR2 = DUTY_DATA; // 设置PWM2占空比%50
PWMMR4 = DUTY_DATA; // 设置PWM4占空比
PWMMR6 = DUTY_DATA; // 设置PWM6占空比
PWMLER = 0x55; //锁存使能寄存器PWMMR0,PWMMR2,PWMMR4,PWMMR6锁存
PWMPCR = 0x5400; //允许PWM2,PWM4,PWM6输出,单边PWM
PWMTCR = 0x09; //启动定里器,PWM使能
//Show3232(1,0,0,0);
//draw_box(10,10,28,28);
while(1)
{
IO2CLR = LED8;
DelayNs(1000);
IO2SET = LED8;
DelayNs(1000);
PWMMR2 = CYCLE*i; //改变周期
PWMMR4 = CYCLE*i;
PWMMR6 = CYCLE*i;
PWMLER = 1<<0 | 1<<2 | 1<<4 | 1<<6; //PWMMR2,PWMMR4,PWMMR6锁存
PWMTCR = 0x09; //启动定时器
key_value=get_key_code();
if(key_value!=255)
{
if(key_value==0)//按下零键切换主菜单显示;
{
i+=1;
}
}
}
return 0;
}
答 1: 怎么没有回答吗???自已顶。更改为:
PWMMPR = 0;//为不分频
为什么不能输出一连串的方波??? 答 2: #define DUTY_DATA 0.5恒为0能有输出才晕菜呢~~~ 答 3: 噢,不好意思!! 答 4: 请教那程序里定义周期,是怎么来换算它的值呢???
我用的主频是:44.2368M,pclk=11.0592M 答 5: 因为我手头上没有示波器所以,我想把周期改的大一点,频率小一点。能用发光二极管反映出来。
10HZ应该可以吧?但是我不知道周期是怎么换算的了。
请指点 答 6: 自已顶,为什么PWM来控制步进电机就不行吗?我现在想用PWM中断来控制和计数脉冲数,不知得行不???
100K是我最大的频率,这样应该说是可以的啊
为什么没有回答呢???
答 7: LPC213X四路单边PWM模块应用源码控制电机用DSP的较多~~~ 答 8: 哪里有啊???? 答 9: 请各位老师指点迷精! 答 10: PWM到底控制步进电机可不可行?PWM到底控制步进电机可不可行?如果步进电机使用单独的驱动,只要输入:CLK/DIR/FREE三路信号呢? 答 11: 我也不知道,但是可以肯定一点,PWM可以做步进电机控制为什么呢?
因为,PWM也是定时器,并且是定时器的扩展了。
请高手指点一二。
我意图是让PWM2,PWM4,PWM6输出周期为1的方波,占空比50%.
但是结果是错误的,在开机一后,过了1S钟LED点亮,就不是熄灭了.
这是为什么呢??是我的程序有问题???请大家指点一下:
请大家讨论一下用PWM做控制的方法与经验.
#define PWM2 1<<7 //P0.7
#define PWM4 1<<8 //P0.8
#define PWM6 1<<9 //P0.9
/* PWM周期及占空比设置值 */
#define CYCLE 1
#define DUTY_DATA 0.5
int main (void)
{
uint8 i=1;
uint8 key_value;
key_value=255;
PINSEL0 = 0x000A8000; //GPIO,PWM2,PWM4,PWM6;
PINSEL1 = 0x00000000; //GPIO;
IO0DIR = 0xffffffff; //设置为输出;
IO1DIR = 0x010f0000; //设置P1.16~1.19为输出,P1.20~P1.23为输入;P1.24为输出
IO2DIR = LED8; //设置为输出;
//InitLCD(); //初始化液晶;
//init_draw_main_menu();
//IO1SET = LCD_K;
PWMPR = Fpclk; // 不分频,计数频率为Fpclk
PWMMCR = 0x02; // 设置PWMMR0匹配时复位PWMTC
PWMMR0 = CYCLE; // 设置PWM周期
PWMMR2 = DUTY_DATA; // 设置PWM2占空比%50
PWMMR4 = DUTY_DATA; // 设置PWM4占空比
PWMMR6 = DUTY_DATA; // 设置PWM6占空比
PWMLER = 0x55; //锁存使能寄存器PWMMR0,PWMMR2,PWMMR4,PWMMR6锁存
PWMPCR = 0x5400; //允许PWM2,PWM4,PWM6输出,单边PWM
PWMTCR = 0x09; //启动定里器,PWM使能
//Show3232(1,0,0,0);
//draw_box(10,10,28,28);
while(1)
{
IO2CLR = LED8;
DelayNs(1000);
IO2SET = LED8;
DelayNs(1000);
PWMMR2 = CYCLE*i; //改变周期
PWMMR4 = CYCLE*i;
PWMMR6 = CYCLE*i;
PWMLER = 1<<0 | 1<<2 | 1<<4 | 1<<6; //PWMMR2,PWMMR4,PWMMR6锁存
PWMTCR = 0x09; //启动定时器
key_value=get_key_code();
if(key_value!=255)
{
if(key_value==0)//按下零键切换主菜单显示;
{
i+=1;
}
}
}
return 0;
}
答 1: 怎么没有回答吗???自已顶。更改为:
PWMMPR = 0;//为不分频
为什么不能输出一连串的方波??? 答 2: #define DUTY_DATA 0.5恒为0能有输出才晕菜呢~~~ 答 3: 噢,不好意思!! 答 4: 请教那程序里定义周期,是怎么来换算它的值呢???
我用的主频是:44.2368M,pclk=11.0592M 答 5: 因为我手头上没有示波器所以,我想把周期改的大一点,频率小一点。能用发光二极管反映出来。
10HZ应该可以吧?但是我不知道周期是怎么换算的了。
请指点 答 6: 自已顶,为什么PWM来控制步进电机就不行吗?我现在想用PWM中断来控制和计数脉冲数,不知得行不???
100K是我最大的频率,这样应该说是可以的啊
为什么没有回答呢???
答 7: LPC213X四路单边PWM模块应用源码控制电机用DSP的较多~~~ 答 8: 哪里有啊???? 答 9: 请各位老师指点迷精! 答 10: PWM到底控制步进电机可不可行?PWM到底控制步进电机可不可行?如果步进电机使用单独的驱动,只要输入:CLK/DIR/FREE三路信号呢? 答 11: 我也不知道,但是可以肯定一点,PWM可以做步进电机控制为什么呢?
因为,PWM也是定时器,并且是定时器的扩展了。
请高手指点一二。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |