Страница 1 из 1

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

Добавлено: Сб мар 03, 2018 18:10:54
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 не соответствует заданному в программе?

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

Добавлено: Вс мар 04, 2018 06:23:24
pyzhman
Вам шашечки или ехать? То бишь победить симулятор или реальное устройство?

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

Добавлено: Вс мар 04, 2018 06:29:25
dr.doc
У меня в ATtiny2313 он в протеусе вообще не отрабатывал... А после, где-то прочел о том, что протеус "глючит" с собакой и режимом sleep.

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

Добавлено: Вс мар 04, 2018 15:56:03
kolobokus
Думаю, вопрос надо считать решенным: При прошивке в МК программа работает правильно. Значит глючит Протеус.
Всем кто наступит на те же грабли рекомендую отлаживать программу в Протеусе с закоментированными строчками инициализации сторожевого таймера в коде и с Unprogrammed WDTON в свойствах камушка в Протеусе.
А при заливке не забыть разкомментировать инициализацию WDT и перекомпилировать проект.

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

Добавлено: Вс мар 04, 2018 22:41:51
roman.com
у меня Proteus 7 Professional. проблем со сторожевым таймером нетб всё показывает чётко)) зато но есть глюки с епром... как выяснилось в железе...
короче.. верить протеусам нельзя))

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

Добавлено: Пн мар 05, 2018 03:43:52
Ivanoff-iv
в протеусе 7 у меня не вызывается прерывание по WDT (само событие переполнения фиксируется вовремя) с еепром проблем не возникало.