打印
[AVR单片机]

求助---低温+14度室温,Tiny2313看门狗不断复位,怎么解

[复制链接]
2501|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dltl|  楼主 | 2007-4-14 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;试验环境:ATTiny2313,晶振8MHz,5V供电,PD5/PD6/PD1各接一个发光二极管限流电阻。PD低电平时灯亮
;正常工作过程是初始化--设置WDT--PD5/PD6灯交替闪--PD1灯长亮。
;把看门狗设置8S,并在写入熔丝图时DF,D9,FF 。
;程序初始化后增加延时程序,用DF DB(与时间有关) FF 不能解决问题。
;天冷时出现双闪+14度左右,用电吹风吹热芯片后,在开启电源工作正常。
;与看门狗开启有关,天冷时,只要开启看门狗,就双闪不断,应该是连续的看门狗复位引起的
;硬件开启看门狗编程WDTON=0,用 DF CB FF 双闪问题依旧出现

.include "tn2313def.inc";
.org     $0000          ;
    rjmp START    ;
.def    TEMP    =r16    ;
.def    TEMP1    =r17    ;工况判断
.def    temp2    =r18
.def    temp3    =r19
.def    temp6    =r20
.def    JS1    =r22    ;1秒钟计算
.def    JS2    =r23    ;1秒累计
.def    JS3    =r24    ;排污1秒累计
.def    BZ1    =r25    ;状态**
.def    BZ2    =r21    ;输出保护
;.............................................
.org     $0006        ;2313的T0中断地址是$0006而8515的是$0007  
    rjmp T0INT
.org     $0030
;--------------------------------------------------------------------
START:    ;初始化程序 
    ldi     TEMP,low(ramend);
    out     spl,temp;
    ldi     TEMP,$02;
    out     TIMSK,TEMP;    开T0中断
    ldi     TEMP,$00;------------初始化看门狗并关闭2007.3.22
    out    MCUSR,TEMP;     
    ldi     TEMP,$1F;    使WDCE、WDE同时为一
    out    WDTCR,TEMP;
    ldi     TEMP,$21;    写分频数同时关闭看门狗  8s
    out    WDTCR,TEMP;----------------------------------
    SEI
;    RCALL    wait_2;程序初始化后增加延时程序,用DF DB(与时间有关) FF 。不解决问题。
;.......    开T0定时器
    ldi     TEMP,$05;
    out    TCCR0,TEMP;    $05    101: CK/1024 8000000/1024=7812.5 T=0.128ms
    ldi     TEMP,$04;
    out    TCNT0,TEMP;    T0=252*0.128=32.256ms       * 31=999.936ms
    LDI     TEMP,$00    ;PORTB设定为输入
    OUT     DDRb,TEMP
    LDI     TEMP,$FF    ;
    OUT     DDRd,TEMP    ;PORTD设定为输出
    OUT     PORTD,TEMP    ;输出高电平
    clr    JS1        ;
    clr    JS2;
;    LDI     BZ1,$04    ;初始化;2003,5,25改为2塔先工作;BZ1《---04
    LDI    BZ2,255;
;--------自检程序
zjzj:    RCALL    ZJCX;    开机自检
;------------------------------------------------------------------
    CLI
    WDR;        先喂狗一次
    in    TEMP,MCUSR;    启动看门狗2007.3.22
    andi TEMP,$F7;  WDRF=0
    out    MCUSR,TEMP;     
    in    TEMP,WDTCR;    
    ori    TEMP,$18;    使WDCE、WDE同时为一
    out    WDTCR,TEMP;
    ori    TEMP,$08;    启动看门狗。 此处用andi    TEMP,$f7;关闭看门狗,双闪现象不出现。
    out    WDTCR,TEMP;
;    WDR;        启动就喂狗
   SEI
;     in    TEMP,MCUSR;    
;    andi TEMP,$F7;  WDRF=0
;    out    MCUSR,TEMP;     
;     WDR;        启动就喂狗
;---------------------------------------------------------------------
MN00:    cpi    JS1,$1F        ;0.128ms*252=32.256ms    31(1F)*32.256=999.936ms
    BRLO    MN00;        小于1秒转移
    ;        大于等于1秒
    clr    JS1;    -------- 一秒到---------------------------
    WDR;        一秒钟喂狗一次
    ANDI    BZ2,$0FD;    输出A工作  PD1灯亮
    OUT    PORTD,BZ2;
    rjmp    MN00;
;********************************************************
; T0中断服务子程序
T0INT:    ldi     TEMP6,$04;
    out    TCNT0,TEMP6;
    inc    JS1;        0.128ms*252=32.26ms
    RETI    
;*****************开机自检**************************************
ZJCX:    ANDI    BZ2,$9F;     PD6,PD5灯亮
        OUT    PORTD,BZ2;
    cpi    JS1,$A        ;
    BRLO    ZJCX;        
    clr    JS1;
ZJ1:    ORI    BZ2,$60;;     PD6,PD5灯灭
    OUT    PORTD,BZ2;
    cpi    JS1,$8        ;
    BRLO    ZJ1;        
    clr    JS1;
ZJ2:    ANDI    BZ2,$bF;    PD6灯亮
    OUT    PORTD,BZ2;
    cpi    JS1,$A        ;
    BRLO    ZJ2;        
    clr    JS1;
ZJ3:    ORI    BZ2,$60;     PD6灯灭
    OUT    PORTD,BZ2;    
    cpi    JS1,$8        ;
    BRLO    ZJ3;        
    clr    JS1;
ZJ00:    ANDI    BZ2,$dF;    PD5灯亮
        OUT    PORTD,BZ2;
    cpi    JS1,$A        ;
    BRLO    ZJ00;        
    clr    JS1;
ZJ11:    ORI    BZ2,$60;;    PD5灭
    OUT    PORTD,BZ2;
    cpi    JS1,$8        ;
    BRLO    ZJ11;        
    clr    JS1;
ZJ21:    ANDI    BZ2,$9F;    PD6,PD5灯亮
    OUT    PORTD,BZ2;
    cpi    JS1,$A        ;
    BRLO    ZJ21;        
    clr    JS1;
ZJ31:   ORI    BZ2,$60;    PD6,PD5灯灭
    OUT    PORTD,BZ2;    
    clr    JS1;
    RET

相关帖子

沙发
dltl|  楼主 | 2007-4-14 09:26 | 只看该作者

当硬件WDTON=0位编程时,效果一样,问题一直出现

使用特权

评论回复
板凳
dltl|  楼主 | 2007-4-14 09:29 | 只看该作者

感觉是只要一起动WDT马上就复位,是不是看门狗

128kHz的RC振荡器由于温度低,没有启动啊

使用特权

评论回复
地板
dltl|  楼主 | 2007-4-16 17:28 | 只看该作者

没有人遇到过类似情况?

没有人遇到过类似情况?

使用特权

评论回复
5
DEF| | 2007-4-16 17:50 | 只看该作者

在低温情况下晶震很难正常工作

低温情况下晶震很难正常工作
建议你改为RC振荡

使用特权

评论回复
6
zhiwei| | 2007-4-16 18:44 | 只看该作者

不知道你说的低温有多低啊

我用过Mega8和Tiny26做低温实验是,零下40摄氏度都能启动,Mega8用晶振,tiny26用内部RC

使用特权

评论回复
7
dltl|  楼主 | 2007-4-17 17:46 | 只看该作者

谢谢5/6楼的朋友

温度不是很低,低于零上14度,看门狗出现问题。不是系统晶振不起振,我试过系统晶振在-25度时工作正常,再低到多少还能正常工作没试过。

现在还是百思不得其解,有条件的朋友能不能帮忙试试,硬件线路很简单。

使用特权

评论回复
8
zhiwei| | 2007-4-18 08:44 | 只看该作者

检查一下熔丝设置

BOD设置等。

使用特权

评论回复
9
jasonell| | 2007-4-18 08:57 | 只看该作者

低温最容易出问题的是电容, mlcc 电容

把思路放开些,检查一下电容, 如mlcc 电容, 铝电解等。

使用特权

评论回复
10
dltl|  楼主 | 2007-4-19 07:36 | 只看该作者

mlcc 电容?是什么电容?

BOD肯定没问题,熔丝配置位我试过各种不同的配置,结论是和这些都没有关系。只是低温时不能开启看门狗,无论是软件开启(WDTON=1时),还是硬件开启(WDTON=0时),都会出现看门狗复位系统的问题。

有条件的朋友帮忙试一下,想个办法解决一下,急死我拉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝