Проблемы с моделированием работы сторожевого таймера.

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Сообщение kolobokus »

В моем проекте не удается корректно применить сторожевой таймер в режиме сброса.

Устанавливаю его на период 1 сек. (визардом CVAVR), а он сбрасывает через 0,5мс. Устанавливаю его на 2 сек., сбрасывает через 1 мс.

Изображение

Контроль по симуляции в Proteus 7.7.2.9089. CVAVR: V2.05.0 Professional.
под WINDOWS 7. Работаю с ATmega328P. В Протеусе WDTON не установлен, частоты в проекте соответствуют заданным (16Мгц).
Для того, чтобы разобраться с ситуацией, подготовил проект проверки работы Watchdog Timer (в приложении в одной папке исходник и симуляция в Протеусе).
Исходник на CVAVR:
Спойлер/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : WDT
Version :
Date : 03.03.2018
Author :
Company :
Comments:


Chip type : ATmega328P
Program type : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/

#include <mega328p.h>
//#include <delay.h>
// Declare your global variables here

void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


PORTB=0x00; // PB0 уст. в 0
DDRB=0x01;

PORTC=0x40; // Подтяг. RESET к VCC
DDRC=0x00;


// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/128k
// Watchdog Timer interrupt: Off
#pragma optsize-
#asm("wdr")
WDTCSR=0x1E;
WDTCSR=0x0E; // 1s
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


PORTB^=(1<<0);
#asm("wdr")
while (1){}

}
Проект в cvavr и Proteus

Запускаю программу, и получаю постоянные сбросы, с периодом в 2000 раз меньше задаваемого (таких времен (<16mc) даже в даташите нет).
Подскажите, в чем засада? Почему моделируемый период срабатывания WDR не соответствует заданному в программе?
Вложения
2.rar
(45.43 КБ) 171 скачивание
log2.jpg
Лог симуляции в Протеусе
(231.84 КБ) 556 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Вам шашечки или ехать? То бишь победить симулятор или реальное устройство?
Docendo discimus
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

У меня в ATtiny2313 он в протеусе вообще не отрабатывал... А после, где-то прочел о том, что протеус "глючит" с собакой и режимом sleep.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Встал на лапы
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

Сообщение kolobokus »

Думаю, вопрос надо считать решенным: При прошивке в МК программа работает правильно. Значит глючит Протеус.
Всем кто наступит на те же грабли рекомендую отлаживать программу в Протеусе с закоментированными строчками инициализации сторожевого таймера в коде и с Unprogrammed WDTON в свойствах камушка в Протеусе.
А при заливке не забыть разкомментировать инициализацию WDT и перекомпилировать проект.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 9181
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

у меня Proteus 7 Professional. проблем со сторожевым таймером нетб всё показывает чётко)) зато но есть глюки с епром... как выяснилось в железе...
короче.. верить протеусам нельзя))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

в протеусе 7 у меня не вызывается прерывание по WDT (само событие переполнения фиксируется вовремя) с еепром проблем не возникало.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Ответить

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