共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |