Apтём (29.05.2012 18:37, просмотров: 178) ответил MegaJohn на вообще, от должно быть аля Intrinsics от IAR: типо __watchdog_disable() и т.п. Но увы нет такого
Я так сделал: написал в асм-файле функцию которая ставит в wdt период 0,5 секунды WDT_Prescaler_Change:
; Turn off global interrupt
push r16
push r17
cli
; Reset Watchdog Timer
wdr
; Start timed sequence
ldi r17, 0x0D
lds r16, 0x60
ori r16, 0x18
sts 0x60, r16
; -- Got four cycles to set the new values from here -
; Set new prescaler(time-out) value = 64K cycles (~0.5 s)
sts 0x60, r17
; -- Finished setting new values, used 2 cycles -
; Turn on global interrupt
pop r17
pop r16
ret
Непонятно другое: почему такая трабла вообше вылезла и почему код из даташита тоже не годится (Мега48)? Ошибка в даташите?
>>__watchdog_disable()
Да не хватает такой функции и ещё бы такую
__watchdog_set_period(unsigned char period)