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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
做的PWM直流电机调速,我用定时器0定时产生PWM脉冲,定时器1计时50msTMOD = 0x11;
$ M" G' w: v* {$ R4 x) X) x, |    TH0 = 0x0FF;+ `  f* t& I+ A5 T" A5 p. D: f* k
    TL0 = 0x9C;//100us
2 ]5 F, V! o) `1 a9 ^1 OTH1=0x3C;8 p1 z, d1 k0 r  E0 ^. i
        TL1=0x0B0;//50ms
" k# W, g1 s) y$ i# r1 }% W    EA = 1;4 H& W. v* }6 k4 {( s0 K
    ET0 = 1;7 Y0 W% l; W7 a
    TR0 = 1;5 g/ J# U8 p. ]+ o
ET1 = 1;
8 M+ F& D8 m5 P, \* Q    TR1 = 1;
; r* \5 U4 \$ g/ x3 Z
! G3 @9 r6 M7 B4 z8 e+ d, c关了T1PWM波形正常,但是只要开了T1波形就不对了,像图中那样,中间会有一端高电平。外部中断1检测速度脉冲,这个没啥影响。求各位大佬这个怎么解决啊
* j; A; T* i0 [1 I! }1 n
$ Y( T' ]0 w9 O        void time_0()interrupt 1
  K# O) c7 O4 Z+ i" M3 p. s* j{) C) E5 @; O5 l! ]* {8 b; o3 h# f
        TR0=0;3 p' {0 @! {2 C
   num++;: M5 c& z0 n- E4 c
       IF(num<PWM)5 ]$ {5 C7 x# v+ \- y) ~
                         ENA=1; //L298N使能端
* F! P. n9 Z: N( j* o6 A& ]. f    else 4 j7 l# V8 A" D% @
              ENA=0;
' g" s* h# Z8 J4 r! G! {& l4 O        if(num>100) num=1;2 Q% S9 J7 {; t$ {4 \
    TMOD = 0x01;6 N$ K5 K/ f4 B
    TH0 = 0x0FF;//100us) ]# G1 K7 H& c; {1 L
        TR0=1;
& N! J" G5 e" ~/ H; E}& a, {; R# q- x3 l# j2 d

/ a5 {% o3 m" J. j5 W' ?void INT0_INTERRUPT()interrupt 01 X! q5 J$ Q3 G" W  Z" \; t
{) x6 @0 u. A7 q8 M
        EX0=0;
5 g: {% {, F' b: R9 B3 Cvelocity++;; N/ D$ G( P, Q; S. Z" \
        EX0=1;
. @- ^: C$ k- B}' P) Z. u9 P2 A( O# x) `7 l1 u! W0 k
1 p% Q; Y" f5 P2 m
void time_1()interrupt 3
2 ~) \5 \4 r2 h: u) j8 l! R, c{   
; E6 f' q: ?4 J* M. \6 C     TR1=0;3 w4 |  d3 l* W( |
     count++;! S  m# n$ {: g; R9 M' g
         if(count==51)
$ V; X/ ~' D" v. E. W; ?: r         {  
# R! G9 r: i% p, T* S- j/ V            sprintf(DSP,"%3d", velocity);
5 J) m5 r4 x$ s, w                  display_string(7,4,dsp);$ d4 z% u! ]% U% U4 e
                 ldelay(100);         
9 P1 ]( U4 f: \% a; W" E                  count=1;( a8 Q) F% T* X1 N+ s
      velocity=0;
# x% D7 K$ {( i' _6 s2 |2 F+ T5 g      }
( `& C+ k  z; {/ w4 ?; [9 j          TH1=0x3c;
' D; P6 m5 [; N- ]8 ]: m* A2 c8 n          TL1=0x0b0;. s8 {4 R# ]) S" K
          TR1=1;( J% }. [% R; D- E+ G* {
               
( N" _5 Z2 j8 q3 U" j: O" y+ v/ [8 }( F$ J9 J5 _6 v+ i( q6 z
}
: d; i, N, r2 G- O0 @; B
% l  o$ r. t% R6 b( Y2 \+ w
% k/ [* T2 M( R+ `9 o% a% {

该用户从未签到

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
$ w+ U' K5 c5 S% h! F9 X8 x9 v4 w试试设置定时器0的中断优先级高于定时器1
2 z" {9 ?, Q+ z% |# O
定时器0的优先级不是本来就比定时器1优先级高吗
* k# r' M+ N2 x: E7 p! @2 [7 ^

点评

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

该用户从未签到

4#
发表于 2019-7-5 13:23 | 只看该作者
小黄豆 发表于 2019-7-5 13:04' }4 @5 |. F4 |
定时器0的优先级不是本来就比定时器1优先级高吗

2 l) u0 t5 ~" [+ i; g4 j6 ]没太看出来什么问题,需要确定几个问题,pwm持续高电平时,单片机有没有其他动作出现,比如显示什么的,另外在定时器0里更改了tmod的值,并只更新了th0的值。再试试设置中断优先级,虽然有缺省值,但现在在解决问题,就把需要明确的值都明确了' ~3 Y$ b  ?. D2 p# m" O

点评

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

该用户从未签到

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

该用户从未签到

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-7-25 08:24 , Processed in 0.140625 second(s), 29 queries , Gzip On.

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

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

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