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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

" z8 i; t0 g9 t: L8 T5 O! _& Q
0 `  o. ]' x5 ?- N0 \8 z) n : f/ `& c! i4 |$ F0 |

  H0 C$ j: ~8 \/ `1 n& L8 u
$ K: d  M, Z+ x9 `+ h  [- R- p1 _
( k2 E5 \5 v1 V3 S- M- w1 G+ T这个程序里value是代表一个周期里的高电平,那count的作用是什么呢?为什么要判断count大于100?count每次加1的时间应该是1us吧,count加到100再清零是只为了产生100us的间隔吗?
9 Z3 _+ }% O6 t# r/ k! p! _timer1代表一个周期1ms,它肯定大于等于value吧,为什么要判断它小于value呢?9 M7 s1 o' p8 I) D
还有这个程序,value==1000则DIR=0,value==0则DIR=1,那value处于1000和0之间怎么办?
1 v) ~- R9 O5 G. @" W, D% o3 w以及,这个PWM的周期timer1为什么是1000us,这个周期是自己设定的吗?
/ {& z( }0 h" \. J0 _
  • 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:186 G/ ?" J" {* E
    把DA的最大值,最小值范围和PWM需要一个对应关系
    ) M7 q# f4 I8 `& i/ q. v
    能不能具体一点
    & g. O5 h5 r) ?) b2 j2 s  L; ]

    点评

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

    该用户从未签到

    5#
    发表于 2020-7-29 18:45 | 只看该作者
    Storm_change 发表于 2020-7-29 18:007 ^, _- ?2 p6 B$ u
    能不能具体一点

    * A# d, a7 O$ w, V+ i* A主要是把D值和PWM占空比有个关系6 o* a: o8 D% @6 d& v$ |* |
    DA最大值对应PWM占空比最高
    1 s8 Q" Q; Z$ r# SDA最小值对应PWM占空比最小
    8 x: [! N! [3 ]  p& L  i4 B* \

    该用户从未签到

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

    该用户从未签到

    7#
    发表于 2020-7-30 16:59 | 只看该作者
    TAB:                        ;高电平数据3 j$ N' G: C3 a
    DW      63070,60570,58070,55570,53070,50570,48070,00,00
    ! k) {8 q! |5 m& E- r" `TAB1:                       ;低电平数据( V( g% l/ B  x, |
    DW      48070,50570,53070,55570,58070,60570,63070,00,00' K" Y/ I: `- L' G; k+ g
    ;******************************************************** 以前用过汇编通过查表来做固定几档的PWM
    : i; g6 i# [1 o5 g* J4 x

    该用户从未签到

    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是和占空比先相关的参数
    - `. W* N  z9 u& [) M9 l2.count不光用来产生一个100us间隔,你可以看到在这个间隔里会根据DIR的值更新value的值,结合下面的对DIR的赋值可以知道,当value的值小于1000时候,没100us,value的值增加1,当value的值等于1000时候,每100us,value的值就减一;也就是value的范围从0~1000递增递减这样循环,时间间隔是100us.9 A5 w& W' }, Z0 g4 d  K- g
    3.timer1实际上是计时,和count一样一个us增加1,只不过你每1ms把他清零了,他的值是会小于的value的,这个就是PWM占空比,当value约接近1000时候,timer1在1ms内小于value的时间就越长,也就是高电平时间越长,占空比越大1 H  m! s( }3 z
    4.那value处于1000和0就不对DIR进行处理,DIR保持之前的值即可,DIR其实是方向的意思,主要用来控制当value处于1000时开始递减,处于0时开始递增2 ^4 ~! ?2 l  i# J9 h
    5.timer1的时间是你自己定的,可以通过在寄存器里写值,去控制定时器的周期  ?% d7 [4 b! W: u: n/ K

    & A9 `0 T+ k* X8 _7 a; I做一下总结,PWM是输出信号,pwm周期是你理解的1ms,count和value的作用是在PWM整个周期内划分出高电平的时间,也就是定下占空比,这个程序实现的是: 每1ms更新一次占空比,占空比从0开始以每次增加1%的比例逐渐增加至100%再递减这样循环
    ) L1 ?$ i- A: s: L# b
    * i4 m* I+ C6 Z! {如果有说错的可以指正,我也不太熟
    ; F* f- `; O) y+ K5 h: Y建议:多看寄存器
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-19 19:20 , Processed in 0.140625 second(s), 31 queries , Gzip On.

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

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

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