подскажите товарищи коты по WATCHDOG на аттини13

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Сообщение sergo80zxc »

Пытаюсь настроить прерывание по сторожевому таймеру, не получается , в симуляторе атмел студии 4 и в протеусе не работает, хотя при компилировании нет ошибок
Вложения
40.asm
(4.13 КБ) 373 скачивания
40.hex
(211 байт) 243 скачивания
глаза боятся, а руки что то не делают))
Реклама
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

WDT не поддерживается студией
https://radiokot.ru/forum/viewtopic.php ... 2#p3424092
По коду. Можно воспользоваться режимом переключения бита порта. Тогда и пуши-попы не нужны. :)
СпойлерИзображение
Типа такого

Код: Выделить всё

.org   $008
WATCHDOG:
	SBI	PINB,2
  reti                           ; возвращаемся из прерывания
Вложения
Toggle_pin.PNG
(15.22 КБ) 410 скачиваний
Последний раз редактировалось akl Пн июл 30, 2018 05:54:22, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

попробуй на железе, поштото симуляторы собаку не любят... похоже как и режимы энергосбережения...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Родился
Сообщения: 2
Зарегистрирован: Сб июл 28, 2018 18:32:14

Сообщение DbIHbIC »

Может быть фьюз WDTON попробовать.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Студии FUSE-bits "по пояс". :)
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Сообщение sergo80zxc »

Жена возмущается в железе пробовать)) приходится в симуляторе)

Добавлено after 5 minutes 8 seconds:
akl а чем плохи пуши попы? вроде все как надо в прерывании оформлено.... Товарищи полосатые, мне хотя бы скажите в теории хотя бы верно настроил собаку на прерывание?) нет пока возможности в железе потыкать, я б с удовольствием)

и маленький вопрос еще, забыл как вставку программы сюда вставлять, чтоб написано зелененьким было и сворачивалось
глаза боятся, а руки что то не делают))
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1314
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Они съедают процессорное время, флэшпамять и ОЗУ :twisted:
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="sergo80zxc",url="/forum/viewtopic.php?p=3429061#p3429061"]... а чем плохи пуши попы? вроде все как надо в прерывании оформлено.... Товарищи полосатые, мне хотя бы скажите в теории хотя бы верно настроил собаку на прерывание?) нет пока возможности в железе потыкать, я б с удовольствием)

и маленький вопрос еще, забыл как вставку программы сюда вставлять, чтоб написано зелененьким было и сворачивалось[/uquote] Студия показывает, что ручная установка WDTIF вызывает переход на прерывание WDT. Большего от студии ожидать не приходится.

Для примера. В студии переходите на русскую раскладку-> выделяете нужное -> заносите в буфер (Ctrl C) -> вставляете в поле сообщения (Ctrl V) -> опять выделяете, но уже в поле сообщения -> нажимаете на тег CODE -> опять выделяете вместе с тегом CODE -> нажимаете на тег spoiler.
Спойлер

Код: Выделить всё

;   НАСТРОЙКА СТОРОЖЕВОГО ТАЙМЕРА
;
;грубо говоря мы включаем сторожевой таймер с периодом 0,25 сек, и командой WDR периодически его обнуляем, и по теории он
;перезапустит МК если произойдет зависание программы и программа вовремя не сможет обнулить сторожевой таймер
;
;
.cseg
.include "tn13Adef.inc"

;***************************************************************************************
;***************************************************************************************

.org   $000   rjmp   RESET                 ; Reset Handler                  
;.org   $001   reti   EXT_INT0              ; IRQ0 Handler                   Внешнее прерывание 0
;.org   $002   reti   PCINT0                ; PCINT0 Handler                 Прерывание по изменению состояния выводов 
;.org   $003   reti   TIM0_OVF              ; Timer0 Overflow Handler        Переполнение таймера/счетчика ТО 
;.org   $004   reti   EE_RDY                ; EEPROM Ready Handler           EEPROM готово 
;.org   $005   reti   ANA_COMP              ; Analog Comparator Handler      Аналоговый компаратор 
;.org   $006   reti   TIM0_COMPA            ; Timer0 CompareA Handler        Совпадение А таймера/счетчика ТО 
;.org   $007   reti   TIM0_COMPB            ; Timer0 CompareB Handler        Совпадение В таймера/счетчика ТО 
.org   $008
WATCHDOG:
	SBI	PINB,2
  reti                           ; возвращаемся из прерывания
;*****************************************************************************************
RESET: 

  CLI                      ; запретить все прерывания

         
;     ldi r16, low(RAMEND)
;     out SPL,r16           ; инициализация стека в тиньке 13

     Ldi r16, 0b11111111
     out DDRB, r16         ;все  биты на выход

;***************************************************************************************
	WDR                      ;команда сброса сторожевого таймера 
 
     Ldi r16,  0b00011000         ;одной командой устанавливаем в 1 биты В3(WDE) и В4(WDCE)
     out WDTCR, r16               ;такой порядок записи для ватчага

     Ldi r16, 0b00000000          ;сбрасываем бит  В4(WDCE) и бит В3(WDE) , выставляем период тайм-аута ватчага
     out WDTCR, r16               ;бит В2(WDP2) сбрасываем в 0, биты В5(WDP3), В1(WDP1), В0(WDP0)  сбрасываем в 0 
                                  ;
                                  ;период тайм-аута выставлен в 16мс 

     Ldi r16, 0b01000000    ;
     out WDTCR, r16         ;бит В6(WDTIE) установим в 1 ( разрешим прерывание WATCHDOG

   SEI                    ; разрешить прерывания
;***************************************************************************************

 main:
 rjmp main     ; зацикливаем по кругалю МК
;*************************************************************************************
.EXIT
Ответить

Вернуться в «AVR»