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

Pic16F676 - Почему происходит постоянно сброс

Добавлено: Вт авг 02, 2011 16:33:46
Radioalex
Предельно простая задача - зажечь светодиод при нажатие на кнопку. Обязательное условие:
- PIC16F676;
- работа от внутреннего тактового генератора;
- использование TM0.
Накидана прога в Протоне. Вот собственно она:
________________________
Device = 16F676 ' Использовать микроконтроллер 16F676
Config INTRC_OSC_NOCLKOUT , WDT_On , PWRTE_OFF , BODEN_OFF , CP_OFF , CPD_OFF , MCLRE_ON
Xtal = 4 ' Установить частоту генератора МК равной 4 МГц
TRISC = %00010000 ' Устанавливаем вывод C4 на вход
OPTION_REG = %10000111 'Коэффициент деления 1/256, отключение подтягивающих резисторов
INTCON = %00100000 'Отключение глобальных прерываний, прерывание по ТМ0.
On Interrupt GoTo Display 'В случае прерывания перейти на "Дисплей"

Main:
GoTo Main

Disable
Display:
PORTC.5= PORTC.4
Resume
Enable
_____________
Вопрос: почему все время происходит сброс сторожевого таймера и, как следствие, всего микроконтроллера???

Re: Pic16F676 - Почему происходит постоянно сброс

Добавлено: Вт авг 02, 2011 16:51:22
urry
WDT_On
в конфиге никакие ассоциации не вызывает ?

Re: Pic16F676 - Почему происходит постоянно сброс

Добавлено: Вт авг 02, 2011 17:32:19
Radioalex
в смысле никаких ассоциаций? WDT включен по умолчанию. его отключение приводит к некорректному поведению котроллера. я думаю модвох в другом. но в чем?

Re: Pic16F676 - Почему происходит постоянно сброс

Добавлено: Чт авг 04, 2011 01:41:37
pazak
Таймер WDT, или "сторожевой пёс" (у программистов) работает от собственного RC генератора и имеет время переполнения 18 миллисекунд без предделителя. После сброса по включению питания, а так же после сброса при переполнении WDT все биты регистра OPTION REG устанавливается в "1", бит №3-PSA отвечает за включение предделителя перед WDT (1) или перед TMR0 (0). Биты №2-№0 отвечают за коэффициент деления предделителя, получается что, после сбросов предделитель включен перед WDT с коэффициентом деления 1:128. Умножаем 18мс на 128 получаем период переполнения WDT 2,3c, через это время происходит сброс МК. Необходимо или выключить WDT в слове конфигурации "WDT_OFF", или обеспечить сброс WDT в программе ранее чем произойдёт его переполнение.

С уважением.

Re: Pic16F676 - Почему происходит постоянно сброс

Добавлено: Чт авг 04, 2011 08:21:22
Radioalex
Большое спасибо за исчерпывающую информацию. Очень помогла.