Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроллер почему то останваливает работу.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Marser
Здравствуйте!
Программирую pic18f4520. Написал программу бесконечного мигания светодиода:
while(1)
{
for(k=1;k<10000;k++){} ///задержка

if(LED==0){LED_1=1} else {LED=0;} // мигание светодиода
}

На практике светодиод мигает 14 раз, и перестаёт мигать, хотя задан бесконечный цикл.
Подскажите пожалуйста, почему контроллер может останавливаться? ввода в спящий режим в программе нет.

Спасибо.
ut1wpr
Цитата(Marser @ Dec 3 2010, 15:44) *
if(LED==0){LED_1=1} else {LED=0;} // мигание светодиода

Что такое LED_1? Их здесь не стояло... smile.gif
Marser
Цитата(ut1wpr @ Dec 3 2010, 17:33) *
Что такое LED_1? Их здесь не стояло... smile.gif

Прошу прощения, это LED.
Проблема уже решена: В начале программы была настройка конфигурационного регистра. Эту настройку убрал и запретил работу сторожевого таймера, всё заработало. Зачем вообще нужен сторожевой таймер, проблемы создаёт!
Kompot
Цитата(Marser @ Dec 3 2010, 18:52) *
Зачем вообще нужен сторожевой таймер, проблемы создаёт!


10 баллов! В цитатник юного эмбеддера!

Сторожевой таймер нужно периодически сбрасывать специальной командой.
С периодом, меньшим, чем время вачдога.
Тогда, если программа зависнет и престанет его сбрасывать, через время, равное периоду вачдога,
он сам сформирует сигал Reset для контроллера. Что, возможно, приведет к восстановлению работоспособности всего устройства. Во всяком случае, из "зависона" он выйдет.
demiurg_spb
Цитата(Kompot @ Dec 3 2010, 18:07) *
10 баллов! В цитатник юного эмбеддера!
Тоже очень понравилось! beer.gif
ut1wpr
Цитата(Marser @ Dec 3 2010, 18:52) *
В начале программы была настройка конфигурационного регистра. Эту настройку убрал
Я бы так лихо не поступал. Надо было разобраться, что там понастроено? Может чего и нужного ? smile.gif
Marser
Цитата(ut1wpr @ Dec 4 2010, 10:27) *
Я бы так лихо не поступал. Надо было разобраться, что там понастроено? Может чего и нужного ? smile.gif

Работа с конфигурационными регистрами у меня почему то вызывает проблемы.
Например в конфигурационный регистр 1h по умолчанию загружено число 0b00000111, но когда я строкой __CONFIG(1h,7) записываю в данный регистр данное число, контроллер после подачи питания вообще не запускается. При этом запись в конфигурационный регистр 2h работает адекватно.
wwweider
у меня контроллер останавливался, когда было разрешенно прерывание какоето а обработки для него не было.

похоже вы не запрети ватч дог а разрешили!))
поэтому программа заработала но не совсем правильно она у вас наверное как и прежде виснет но ватч дог перегружает контроллер
нечитатель
Не проще ли и быстрее перебрать все возможные значения для, это, как его... а, да, конфигурационного регистра, чем лезть в интернет, искать раздел, печатать название..?
Всего же 256 вариантов их.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.