7441|13

2749

帖子

0

TA的资源

裸片初长成(初级)

楼主
 

【问TI】LM3S811的PWM输出问题 [复制链接]

用MDK写了一个LM3S811的PWM输出程序,有个疑问:

// Set PWM Pulse Wideth
PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0);   //设置PWM的脉冲宽度
PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 1);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, 12000);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, 23998);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_4, 23999);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_5, 24000);

 

PWM频率设置成了250Hz,对应于24000个时钟周期,当脉宽宽度设置成0、23999、24000,PWM出来都是高电平,如下图所示:

 

 

那PWMPulseWidthSet(unsigned long ulBase, unsigned long ulPWMOut,unsigned long ulWidth)的脉宽值设置成什么的时候,才会有全低的电平出来呢?

PWM ALL.rar (75.91 KB, 下载次数: 69)

查看本帖全部内容,请登录或者注册

最新回复

顶起来!!!!!!!!!  详情 回复 发表于 2012-3-4 16:51
 
点赞 关注

回复
举报

2749

帖子

0

TA的资源

裸片初长成(初级)

沙发
 

原帖由 David_Lee 于 2011-6-24 12:08 发表 用MDK写了一个LM3S811的PWM输出程序,有个疑问: // Set PWM Pulse WidethPWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0);   //设置PWM的脉冲宽度PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 1);PWMPulseWidthSet ...

 

继续弄了一下,发现可以通过PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, false)出来低电平,不知还有没有其它方法:

    // Enables the PWM generator block.
    PWMGenEnable(PWM_BASE, PWM_GEN_0);  //使能PWM发生器,开始产生PWM波
    PWMGenEnable(PWM_BASE, PWM_GEN_1);
    PWMGenEnable(PWM_BASE, PWM_GEN_2);

    SysCtlDelay(0xffff);

   
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_1_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_2_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_3_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_4_BIT, false);
    PWMOutputState(PWM_BASE, PWM_OUT_5_BIT, false);

    SysCtlDelay(0xffff);
   
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, true);  //使能PWM输出
    PWMOutputState(PWM_BASE, PWM_OUT_1_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_2_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_3_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_4_BIT, true);
    PWMOutputState(PWM_BASE, PWM_OUT_5_BIT, true);
 
    while(1)
    {
        ;   
    }

 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

板凳
 

回复 楼主 David_Lee 的帖子

这个我以前遇到过,我用的是占空比,0和 24000都输出高电平,你要设置的值要小点,我设置的占空比的0.1%和99.9%,我记得当我设置到99.99%就不行,我按键的时候就出现跳变,但为99.99%时有1变为0。
 
 
 

回复

1万

帖子

16

TA的资源

版主

4
 

在这个函数之前应有一个函数设周期的

好象木有限制的宽,楼主的设脉宽是在周期设定前提下来的,关于能否出来很少的脉宽,答案是一定地。
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

5
 

原帖由 ddllxxrr 于 2011-6-24 18:02 发表 好象木有限制的宽,楼主的设脉宽是在周期设定前提下来的,关于能否出来很少的脉宽,答案是一定地。

 

是滴,PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 1);是有输出1/24000占空比的PWM波。

只是我想当然的以为PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0);出来应该是0/24000占空比的PWM波,即脉宽为0,输出全低,但后来发现是错误的,它出来的是占空比为100%的PWM波,即全高的。

这么说来,PWMPulseWidthSet()这个函数是不能实现占空比为0%的,再怎么窄都是至少有1个计数值宽度的高电平,相当于有一个尖峰电压,因为PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 0)和PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 24000)出来的都是全高的,100%的占空比。

 
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

6
 

原帖由 fxw451 于 2011-6-24 14:00 发表 这个我以前遇到过,我用的是占空比,0和 24000都输出高电平,你要设置的值要小点,我设置的占空比的0.1%和99.9%,我记得当我设置到99.99%就不行,我按键的时候就出现跳变,但为99.99%时有1变为0。

 

呵呵,现在是0.xxxx%~100%。神奇啰。

 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

7
 

回复 6楼 David_Lee 的帖子

学习咯。。以前用PWM的时候还没有注意。现在正好补上。。。多谢LZ了。
 
个人签名只有想不到,没有做不到。
 
 

回复

45

帖子

1

TA的资源

一粒金砂(中级)

8
 
楼主,我是新手,想问下你用的逻辑分析仪是硬件还是软件仿真的?能不能推荐一款?
谢谢了
 
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

9
 

原帖由 xupz123 于 2011-6-29 21:59 发表 楼主,我是新手,想问下你用的逻辑分析仪是硬件还是软件仿真的?能不能推荐一款?谢谢了

 

图中的是MDK自带的Logic Analyzer,是软仿。

 
 
 

回复

45

帖子

1

TA的资源

一粒金砂(中级)

10
 

回复 9楼 David_Lee 的帖子

你好,如果我想仿真PWM波形,我选的变量应该是哪几个啊?是引脚吗?
谢谢
 
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

11
 

原帖由 xupz123 于 2011-7-3 10:25 发表 你好,如果我想仿真PWM波形,我选的变量应该是哪几个啊?是引脚吗?谢谢

 

我用的时候是portb.0这种形式来观察指定管脚

 
 
 

回复

109

帖子

0

TA的资源

纯净的硅(初级)

12
 

Answer

Hello:
    根据你的提示,我看了一下资料, 你的那种方式应该不是来改变电平互换.
    请看以下函数的解释,我想这个函数应该才是你想要的结果.你可以进行测试.

16.2.2.28 PWMOutputInvert
Selects the inversion mode for PWM outputs.
Prototype:
void
PWMOutputInvert(unsigned long ulBase,
unsigned long ulPWMOutBits,
tBoolean bInvert)
Parameters:
ulBase is the base address of the PWM module.
ulPWMOutBits are the PWM outputs to be modified. Must be the logical OR of
any of PWM_OUT_0_BIT, PWM_OUT_1_BIT, PWM_OUT_2_BIT, PWM_OUT_3_BIT,
PWM_OUT_4_BIT, PWM_OUT_5_BIT, PWM_OUT_6_BIT, or PWM_OUT_7_BIT.
bInvert determines if the signal is inverted or passed through.
Description:
This function is used to select the inversion mode for the selected PWM outputs. The outputs
are selected using the parameter ulPWMOutBits. The parameter bInvert determines the inversion
mode for the selected outputs. If bInvert is true, this function will cause the specified
PWM output signals to be inverted, or made active low. If bInvert is false, the specified output
will be passed through as is, or be made active high.
Returns:
None.

请讲你的测试结果告之,谢谢!
Fred
 
 
 

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

13
 
原帖由 wpj1018 于 2011-7-4 15:07 发表
Hello:
    根据你的提示,我看了一下资料, 你的那种方式应该不是来改变电平互换.
    请看以下函数的解释,我想这个函数应该才是你想要的结果.你可以进行测试.

16.2.2.28 PWMOutputInvert
Selects the inversio ...


电平反转之后,岂不是占空比是0%~99.9xx%?
 
 
 

回复

239

帖子

0

TA的资源

一粒金砂(中级)

14
 
顶起来!!!!!!!!!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 15

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表