找回密码
 注册
关于网站域名变更的通知
查看: 708|回复: 8
打印 上一主题 下一主题

求教DA转换(PWM)的问题,请指点

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-29 11:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
7 _# c/ {! C; ?  O/ N
' E( W3 L! v) Z

* `4 k7 J3 t$ P1 g
1 o0 I, p) g3 N8 H# ?+ e # J2 v( F; _* m  ]5 @; C

, I- c8 [. e( M7 L8 a这个程序里value是代表一个周期里的高电平,那count的作用是什么呢?为什么要判断count大于100?count每次加1的时间应该是1us吧,count加到100再清零是只为了产生100us的间隔吗?- F( m8 t4 e$ h' K8 f
timer1代表一个周期1ms,它肯定大于等于value吧,为什么要判断它小于value呢?
7 E3 \+ H$ i# f& V# M6 N4 a还有这个程序,value==1000则DIR=0,value==0则DIR=1,那value处于1000和0之间怎么办?. ]6 [% j' p& ^* W) R1 K
以及,这个PWM的周期timer1为什么是1000us,这个周期是自己设定的吗?
. o0 s- G% r+ _* I9 g
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-7-29 13:13 | 只看该作者
    value表示高电平的时间,count的作用就是100us使其变化一次,判断value和timer的大小关系,只能为了决定PWM端口的电平,,可以改周期

    该用户从未签到

    3#
    发表于 2020-7-29 13:18 | 只看该作者
    把DA的最大值,最小值范围和PWM需要一个对应关系

    点评

    能不能具体一点  详情 回复 发表于 2020-7-29 18:00

    该用户从未签到

    4#
     楼主| 发表于 2020-7-29 18:00 | 只看该作者
    行者~ABC 发表于 2020-7-29 13:188 o! t9 N4 |/ H8 n& d5 j/ y# q# [9 i
    把DA的最大值,最小值范围和PWM需要一个对应关系
    $ h/ G7 L; D' Z1 g( @$ f* Y% f
    能不能具体一点* }7 {7 Y' i* j7 d2 y

    点评

    主要是把D值和PWM占空比有个关系 DA最大值对应PWM占空比最高 DA最小值对应PWM占空比最小  详情 回复 发表于 2020-7-29 18:45

    该用户从未签到

    5#
    发表于 2020-7-29 18:45 | 只看该作者
    Storm_change 发表于 2020-7-29 18:00- j7 @  c$ W8 {
    能不能具体一点

    * J' U9 b; k+ w( X' l5 Q主要是把D值和PWM占空比有个关系6 x0 K3 `& d& ^5 g, ~9 u( M# x
    DA最大值对应PWM占空比最高2 `) J2 d. u% F1 ^7 G! n* I
    DA最小值对应PWM占空比最小+ K* A+ G, \/ S, w$ E

    该用户从未签到

    6#
    发表于 2020-7-30 16:55 | 只看该作者
    没必要用这么小的定时中断,可直接改TH1\TL1值来做PWM

    该用户从未签到

    7#
    发表于 2020-7-30 16:59 | 只看该作者
    TAB:                        ;高电平数据- G2 H3 u* r0 `$ w
    DW      63070,60570,58070,55570,53070,50570,48070,00,00$ Z; j2 e* L8 H5 o" a+ c0 p+ B- v
    TAB1:                       ;低电平数据
    $ B  b5 H+ z9 @' O' H. M1 o) xDW      48070,50570,53070,55570,58070,60570,63070,00,00
    8 z* B" H- t" L; s;******************************************************** 以前用过汇编通过查表来做固定几档的PWM3 M- a: A7 M" E. s$ G) ], t

    该用户从未签到

    8#
    发表于 2020-7-30 17:29 | 只看该作者
    看看多了解一点
  • TA的每日心情
    开心
    2020-8-6 15:38
  • 签到天数: 2 天

    [LV.1]初来乍到

    9#
    发表于 2020-8-6 09:49 | 只看该作者
    1.value不是用来表示高低电平,PWM才是; PWM有两个参数,一个是周期,也就是,一个是PWM占空比,count是和占空比先相关的参数
    1 [- I5 k6 {7 }+ D2.count不光用来产生一个100us间隔,你可以看到在这个间隔里会根据DIR的值更新value的值,结合下面的对DIR的赋值可以知道,当value的值小于1000时候,没100us,value的值增加1,当value的值等于1000时候,每100us,value的值就减一;也就是value的范围从0~1000递增递减这样循环,时间间隔是100us.
    $ i6 y8 F$ d$ ]% N3.timer1实际上是计时,和count一样一个us增加1,只不过你每1ms把他清零了,他的值是会小于的value的,这个就是PWM占空比,当value约接近1000时候,timer1在1ms内小于value的时间就越长,也就是高电平时间越长,占空比越大
    : R, y, U- G1 O% u* v( g1 O6 P4.那value处于1000和0就不对DIR进行处理,DIR保持之前的值即可,DIR其实是方向的意思,主要用来控制当value处于1000时开始递减,处于0时开始递增" F, R5 k* @! I/ ?7 m9 T! f' N8 b
    5.timer1的时间是你自己定的,可以通过在寄存器里写值,去控制定时器的周期, L  T+ w8 r9 y/ T' ^& ]5 u/ P

    ) O8 J; J& O4 ~做一下总结,PWM是输出信号,pwm周期是你理解的1ms,count和value的作用是在PWM整个周期内划分出高电平的时间,也就是定下占空比,这个程序实现的是: 每1ms更新一次占空比,占空比从0开始以每次增加1%的比例逐渐增加至100%再递减这样循环
    . Z2 w" v; U! N. [4 j4 F  Q; x$ z# [
    4 x2 h+ T& b% `7 D4 E% I如果有说错的可以指正,我也不太熟
      o/ u0 C; `) R1 d建议:多看寄存器
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-22 03:13 , Processed in 0.140625 second(s), 31 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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