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

求助大神!!51单片机定时器1和定时器0冲突

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
做的PWM直流电机调速,我用定时器0定时产生PWM脉冲,定时器1计时50msTMOD = 0x11;
3 {7 v; r; t; _0 E5 |2 }    TH0 = 0x0FF;6 m* _+ |& p' y. l3 I9 t5 G
    TL0 = 0x9C;//100us
1 j, Q1 ^* K( I- E: D) W6 wTH1=0x3C;/ l% G9 w" h5 E7 v4 B  y# t
        TL1=0x0B0;//50ms
% \5 _% P, D$ e$ ~6 M8 C: R- s    EA = 1;7 l7 x2 h( B2 i
    ET0 = 1;' v8 V) S& z/ i; @$ R. F. B
    TR0 = 1;
) ^4 d, K5 u/ p9 ]) G( K6 `ET1 = 1;2 i7 o  j4 w/ N& Q
    TR1 = 1;
1 @! ~* ~# B0 m& }& z0 J" B' o8 C  j$ j( Q5 T
关了T1PWM波形正常,但是只要开了T1波形就不对了,像图中那样,中间会有一端高电平。外部中断1检测速度脉冲,这个没啥影响。求各位大佬这个怎么解决啊( d! B& Y( \3 X& s- I4 r" Q

1 w5 W' V. S) G$ H- g4 o  u        void time_0()interrupt 1
4 h0 {  h7 r+ a+ k+ h" ~5 V{
% ~( i: p; k! V" M        TR0=0;
( @8 |) J6 ?" z% }7 i   num++;% _; M& S- J' ~$ n
       IF(num<PWM)
1 g/ U. T: g' Y5 O3 S8 Q1 d% u                         ENA=1; //L298N使能端
, B) L# a, c2 p    else . B" z4 |1 O( o& m" B* q# O5 z) }
              ENA=0;8 a# F( F) t" e8 G8 ?8 J
        if(num>100) num=1;
4 ]: O; s+ b5 O1 ]+ y    TMOD = 0x01;! Z6 T' {. @3 E) P+ P+ g5 E
    TH0 = 0x0FF;//100us
5 A+ P& [, r6 o) G7 Y0 I& H; X3 I. c        TR0=1;9 q% P8 _' N. Z
}7 t9 h  }+ q7 W/ ?7 X

) N( @# E8 R) R5 f0 cvoid INT0_INTERRUPT()interrupt 0: O$ M) l& W" K3 E% C0 F" A
{3 y: w) D; a: m
        EX0=0;1 V9 |7 R6 B; j/ n1 @' O
velocity++;8 m$ j8 G& T# M* _
        EX0=1;
# B( Y. ~( y5 T; N* R}0 t& T* a; m% x1 e' y5 u& P

3 x% A+ f- D$ i% Z# y9 J6 Wvoid time_1()interrupt 3/ ~6 o" d, o( L! f! ~3 j
{    ) |2 |" e$ o8 X* K1 Z/ B/ l
     TR1=0;
9 X' Q& n  @, ]$ T% o/ y0 W) X     count++;5 M' l( r" ?5 U3 L0 ~2 j
         if(count==51)# \% \  r0 V( N7 z8 \/ w
         {  
" M9 {6 S9 t9 l            sprintf(DSP,"%3d", velocity);! \: k1 x! l4 r6 d" t1 z" J
                  display_string(7,4,dsp);. T$ p  ^, @' i1 \$ F& ?  l- S
                 ldelay(100);         , e: h* C  l* \2 x4 M) |, V3 n
                  count=1;
' Y0 f9 B% i1 _% M) ?      velocity=0;
  {. ^+ @7 k4 ~2 E# I      }' g4 `* v! l, Y, B  Y
          TH1=0x3c;
4 J& {, ?) r6 S: d' \9 z          TL1=0x0b0;* g. J  f9 v. f# Y5 L( _
          TR1=1;- Y6 i  L6 U" R- G4 V
               
/ l' D% a. F0 F9 T2 g
, Z* Z# O# N8 I6 q( S1 ~8 t8 z' Q3 O}- l) g( [2 }- A0 E6 p

/ r+ v/ ]7 C* ?& \, a% n
3 g" N5 j6 f, C6 C: m1 I; u

该用户从未签到

2#
发表于 2019-7-5 11:32 | 只看该作者
试试设置定时器0的中断优先级高于定时器1

点评

定时器0的优先级不是本来就比定时器1优先级高吗  详情 回复 发表于 2019-7-5 13:04

该用户从未签到

3#
 楼主| 发表于 2019-7-5 13:04 | 只看该作者
helendcany 发表于 2019-7-5 11:32
: n6 {! d9 k3 k) q; u: R试试设置定时器0的中断优先级高于定时器1

8 {/ Q; u1 Q; U  i0 |1 w; n定时器0的优先级不是本来就比定时器1优先级高吗# K! h* B) f) e

点评

没太看出来什么问题,需要确定几个问题,pwm持续高电平时,单片机有没有其他动作出现,比如显示什么的,另外在定时器0里更改了tmod的值,并只更新了th0的值。再试试设置中断优先级,虽然有缺省值,但现在在解决问题  详情 回复 发表于 2019-7-5 13:23

该用户从未签到

4#
发表于 2019-7-5 13:23 | 只看该作者
小黄豆 发表于 2019-7-5 13:04; c+ e$ v% n* C) y) Y5 W! z0 T
定时器0的优先级不是本来就比定时器1优先级高吗

6 t; K2 O' @( B没太看出来什么问题,需要确定几个问题,pwm持续高电平时,单片机有没有其他动作出现,比如显示什么的,另外在定时器0里更改了tmod的值,并只更新了th0的值。再试试设置中断优先级,虽然有缺省值,但现在在解决问题,就把需要明确的值都明确了
3 p8 e& H! w% P" ?

点评

定时器0里更改了tmod的值,并只更新了th0的值,属于手误,应该th0th1都更新,谢谢提醒;然后我似乎找到了持续高电平的原因,T1中断函数里有个延时函数看到了吧,我把它去掉就正常了,反正目前看是挺正常。我一会儿在  详情 回复 发表于 2019-7-5 13:32

该用户从未签到

5#
 楼主| 发表于 2019-7-5 13:32 | 只看该作者
helendcany 发表于 2019-7-5 13:23% P# I% X) h. [
没太看出来什么问题,需要确定几个问题,pwm持续高电平时,单片机有没有其他动作出现,比如显示什么的, ...
! C1 l7 q- B: b) h/ u  `
定时器0里更改了tmod的值,并只更新了th0的值,属于手误,应该th0th1都更新,谢谢提醒;然后我似乎找到了持续高电平的原因,T1中断函数里有个延时函数看到了吧,我把它去掉就正常了,反正目前看是挺正常。我一会儿在设置下优先级试试,只求更稳定。我再鼓捣一会儿,看看会还有什么问题。另外谢谢大佬的关注!
" p2 z6 }, y/ A' |6 a

该用户从未签到

6#
 楼主| 发表于 2019-7-5 14:32 | 只看该作者
后来又出现了冲突问题,貌似是和外部中断0的,我把T0优先级设置最高,问题果然解决了,谢谢

该用户从未签到

7#
发表于 2019-7-5 14:51 | 只看该作者
设置优先级排序并不代表中断冲突不存在,只是区分轻重缓急,能用一个中断处理的任务就不要开两个中断。你的两个定时中断的时间有倍数关系,只要添加一个计数变量就可以合用一个定时中断。中断里通常只产生标识,不处理任务,更不能有长延时,叫做打一枪就跑,任务放在主循环里处理。

该用户从未签到

8#
发表于 2019-7-12 16:10 | 只看该作者
中断里面一般只进行标志位的处理,涉及到任务操作性的一般放到主函数里面去,养好习惯吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-18 06:37 , Processed in 0.156250 second(s), 29 queries , Gzip On.

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

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

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