找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3061|回复: 13
打印 上一主题 下一主题
收起左侧

89C52单片机PWM误差有多大

[复制链接]
跳转到指定楼层
楼主
看一下,52单片机的多慢吧。。。
PWM误差有多大吧。
33M  12分频
如果PWM频率166.66 KHz 时哪么一个
一个PWM周期 约6uS.
把高低电平都设置成 3uS.

52单片机的误差太大了吧。

程序如下。
没有什么错呀。
误差120%。。。。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

14#
ID:401564 发表于 2019-5-3 13:46 | 只看该作者
ZMRGHY 发表于 2019-4-30 20:32
自动重装,
如何改变频率,
如何改变点空比呀。

哥们还不明白呀,一共才7个时钟的高电平,用C的话基本上就是什么事都做不了了,就是用汇编也是一样的呀,你要这么高的频率有什么意义呢?
回复

使用道具 举报

13#
ID:357633 发表于 2019-5-2 17:27 | 只看该作者
ZMRGHY 发表于 2019-4-30 20:28
33M 12T
机器周期是  0.36363636636363636363 微秒。。。。。

0.36363636363636363636363636363636 * 8 = 2.9090909090909090909090909090909
这个是定时器累加的时间
但是进出中断,用户中断处理语句这些时间呢?
回复

使用道具 举报

12#
ID:417092 发表于 2019-4-30 20:32 | 只看该作者
1xiaosun 发表于 2019-4-30 09:20
定时器中断可以用自动重装,很准的

自动重装,
如何改变频率,
如何改变点空比呀。
回复

使用道具 举报

11#
ID:417092 发表于 2019-4-30 20:28 | 只看该作者
cy002 发表于 2019-4-30 09:25
程序中断一次1us 100次是1ms

33M 12T
机器周期是  0.36363636636363636363 微秒。。。。。
回复

使用道具 举报

10#
ID:417092 发表于 2019-4-30 20:24 | 只看该作者
Y_G_G 发表于 2019-4-30 08:40
你基础不好
1:把仿真的东西当实际来说事
2:89C52不是12T,是6T

汇编不会呀。。。。
回复

使用道具 举报

9#
ID:123289 发表于 2019-4-30 16:11 | 只看该作者
地板说的对!
你把PWM的频率做成166.66 KHz,用它做什么呢?
如果必须使用超过此频率的PWM,也有解决方案,但不一定与你的方案一样!
你用一个不确当的方案,去假设一个不确当的事件了,而后又想求解……
回复

使用道具 举报

8#
ID:158375 发表于 2019-4-30 10:07 | 只看该作者
现在ARM流行,怎么嫌弃起来89C52了?
没有PWM的时代,自己想办法来实现PWM功能,89C52可是一个宝贝。。。。。。
回复

使用道具 举报

7#
ID:357633 发表于 2019-4-30 09:25 | 只看该作者
程序中断一次1us 100次是1ms
回复

使用道具 举报

6#
ID:275671 发表于 2019-4-30 09:20 | 只看该作者
定时器中断可以用自动重装,很准的
回复

使用道具 举报

5#
ID:407374 发表于 2019-4-30 08:47 | 只看该作者
确实是这样的  我搞了个定时器中断 也是不对的  程序中断一次1us 100次是1ms  出来的周期根本不是1ms  日了
回复

使用道具 举报

地板
ID:401564 发表于 2019-4-30 08:40 | 只看该作者
你基础不好
1:把仿真的东西当实际来说事
2:89C52不是12T,是6T
3:PWM频率太高,一个定时器的中断时间只有7个机器周期,两三条指令就超过7个指令了,用汇编都得小心,用C占用的时间就更多了
回复

使用道具 举报

板凳
ID:275671 发表于 2019-4-30 07:04 | 只看该作者
你的计算不对,又定时器中断产生PWM,要考虑中断响应时间
其实现在很多51带PWM了
回复

使用道具 举报

沙发
ID:213173 发表于 2019-4-30 06:43 | 只看该作者
51单片机在12M晶振条件下用普通方法极限输出脉冲宽度3us,周期6us。通常小于10us的控制不适合用定时器。因为执行每一条语句都需要时间,这会造成中断响应被迫延时。以下是12M晶振单片机输出167KHz方波的程序和仿真。
  1. #include <reg51.h>

  2. sbit OUT=P1^0;

  3. void main(void)
  4. {
  5.         while(1)
  6.         {
  7.                 OUT=~OUT;
  8.         }
  9. }
复制代码







回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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