找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

89C52单片机PWM误差有多大

查看数: 3884 | 评论数: 13 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-30 01:17

正文摘要:

看一下,52单片机的多慢吧。。。 PWM误差有多大吧。 33M  12分频 如果PWM频率166.66 KHz 时哪么一个 一个PWM周期 约6uS. 把高低电平都设置成 3uS.

回复

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

哥们还不明白呀,一共才7个时钟的高电平,用C的话基本上就是什么事都做不了了,就是用汇编也是一样的呀,你要这么高的频率有什么意义呢?
ID:357633 发表于 2019-5-2 17:27
ZMRGHY 发表于 2019-4-30 20:28
33M 12T
机器周期是  0.36363636636363636363 微秒。。。。。

0.36363636363636363636363636363636 * 8 = 2.9090909090909090909090909090909
这个是定时器累加的时间
但是进出中断,用户中断处理语句这些时间呢?
ID:417092 发表于 2019-4-30 20:32
1xiaosun 发表于 2019-4-30 09:20
定时器中断可以用自动重装,很准的

自动重装,
如何改变频率,
如何改变点空比呀。
ID:417092 发表于 2019-4-30 20:28
cy002 发表于 2019-4-30 09:25
程序中断一次1us 100次是1ms

33M 12T
机器周期是  0.36363636636363636363 微秒。。。。。
ID:417092 发表于 2019-4-30 20:24
Y_G_G 发表于 2019-4-30 08:40
你基础不好
1:把仿真的东西当实际来说事
2:89C52不是12T,是6T

汇编不会呀。。。。
ID:123289 发表于 2019-4-30 16:11
地板说的对!
你把PWM的频率做成166.66 KHz,用它做什么呢?
如果必须使用超过此频率的PWM,也有解决方案,但不一定与你的方案一样!
你用一个不确当的方案,去假设一个不确当的事件了,而后又想求解……
ID:158375 发表于 2019-4-30 10:07
现在ARM流行,怎么嫌弃起来89C52了?
没有PWM的时代,自己想办法来实现PWM功能,89C52可是一个宝贝。。。。。。
ID:357633 发表于 2019-4-30 09:25
程序中断一次1us 100次是1ms
ID:275671 发表于 2019-4-30 09:20
定时器中断可以用自动重装,很准的
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 单片机教程网

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