有人在avr studio的simulator上遇到watchdog不能正常工作的问题吗?
用avr studio里的simulator模拟m128,如果全速运行, watchdog总是reset程序, 好像wdr指令不起作用.
如果单步执行(包括autosetp), watchdog总是不能reset程序, 既便没有wdr指令.
是不是avr studio的simulator有问题呀? 谢谢!
.NOLIST
.include "m128def.inc"
.LIST
.EQU LED0=0x01
.EQU LED1=0x02
.EQU STACKTOP=$45f
.DEF temp = r16
.ESEG ;eeprom segment
dat_store0: .DB 0 ;ÔÚeepromÀïÔ¤ÁôÁË1¸ö×ֽڵĿռä
dat_store1: .BYTE 2 ;ÔÚeepromÀïÔ¤ÁôÁË2¸ö×ֽڵĿռä
dat_store2: .BYTE 0 ;Õâ¸öÓï¾ä²»»áÓÐÈκÎ×÷ÓÃ
.DSEG ;data segment
dat: .BYTE 1 ;±£ÁôÁË1¸ö×ֽڵĿռä
dat_buf: .BYTE 16 ;±£ÁôÁË16¸ö×ֽڵĿռä
dat_buf1: .BYTE 32 ;±£ÁôÁË32¸ö×ֽڵĿռä
.CSEG ;code segment
.ORG 0
jmp start
.ORG 0x200
start:
in r16, mcucsr
andi r16, 1<<wdrf
breq a_1
;sbic r16, wdrf
nop
ldi r16, 0
out mcucsr, r16
a_1:
ldi r16, low(RAMEND)
out spl, r16
ldi r16, high(RAMEND)
out sph, r16
;watch dog
wdr
ldi r16, $1a ;64k·ÖƵϵÊý£¬´ó¸Å65ms
out wdtcr, r16 ;watch dog ¿ª¹ØʹÄÜ
ldi r16, $0a
out wdtcr, r16
loop:
; wdr
nop
nop
nop
nop
rjmp loop 我用AVRSTUDIO调试程序,发现它对看门狗的模拟与实际情况不一样:
1,对有些芯片不模拟,例如ATTINY2313
2.不管你设定多长的延时,也不管你喂没喂狗,在16ms时程序复位,除非你不用看门狗
这是我用m88时发现的 hzn1948,谢谢你的答复,好像是和你说的情况一样,在模拟器里,只要使能了看门狗, 程序就总是被看门狗复位, wdr总是不起作用. AVR studio4的帮助文件已说明,对看门狗不能进行仿真,但为何喂狗指令不起作用,令人不解?我用AVR studio4.19仿真时,也发现这个问题,哪怕是刚喂完狗,一到280ms左右,程序就复位。 学习中,谢谢提醒 你们都很早啊,我也发现了,我用的也是4.19
页:
[1]