Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глюк PIC или другая причина?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
flax
Мужики помогите, такая проблема возникла с PIC 16f84.
вот код написаный на MicroC , по логике программы светодиод должен загореться и погаснуть на всегда до сброса питания, но каким то образом он начинает зажигаться и гаснуть. Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время!


void main()
{
POTRB=0x0;
TRISB=0x0;

PORTB.F1=1;
DELAY_MS(500);

WHILE(1)
{
PORTB.F1=0;
}
}



в чем может быть проблема?
Сергей Борщ
Цитата(flax @ Jul 18 2007, 13:31) *
Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время! в чем может быть проблема?
Наиболее вероятно, что вы случайно при программировании fuses разрешили watchdog. Он и сбрасывает. Или нога Reset висит в воздухе и от помех сбрасывает контроллер.
flax
Нога Reset соединина через резистор с питанием, а что такое fuses и watchdog могли бы в двух словах рассказать?
miga
flax,
Fuses - биты конфигурации
Watchdog - сторожевой таймер. Если разрешен то периодически ресетит систему. Период от 18мс до 2.3с (настраивается), тактируется от своего RC генератора. Разрешается или запрещается соответствующим битом конфигурации. По умолчанию судя по всему включен (по крайней мере в MPLAB-е это так).
muravey
WDT нужен для того, чтобы в слуае зависания контроллера произвести сброс. Если он включен, то надо его постоянно сбрасывать в цикле
WHILE(1)
{
PORTB.F1=0;
}
flax
Что то нечего не получаеться, в microC при создании проекта отключаю и при программировании тоже отключаю бит WDT и все равно все без изминений!
miga
Как вариант, дезассемблить нагенеренный код и посмотреть что там делается на самом деле.
Allregia
Компиляторы иногда преподносят совершенно неожиданные сюрпризы.
Пару месяцев назад, столкнулся с таким, что вообще на голову не наденешь.
Проц 867А, компилирую ХайТечем 9.50 (без апдейта).
Плата - макетка, на ней 7805, проц, ЖКИ, кнопки и прочее, питаю от лабораторного БП.
Все работает гуд, с отключенной оптимизацией.
Включаю полную оптимизацию, и начинаются кренделя:
- при включении питания БП - все глючит неимоверно!
- если при включенном БП просто втыкаю плюсовой штекер от платы в него - все работает зашибись!
- оключаю оптимизацию - все ОК.

Откатываюсь на предыдущую версию копилятра, 8.02PL3 - все ОК, и с оптимизацией тоже.

Говорят в апдейтах к 9.50 много глюков устранили, но у меня легальная только 8-ка, а 9ка - кракнутая, без апдейтов.

P.S. Скопом +5в и MCLR смотрел, никаких "кренделей" не заметил.
С ПИКами работаю почти полтора десятка лет, но ТАКОГО - не видел. Как может включение оптимизации, и вообще сфт так влиять на старт процессора - уму не постижимо. Что-то они там в стартапе лихо написали...
Да, когда вместо проца втыкаю в панельку головку эмулятора (Айс-2000) - никаких глюков нет, т.е. проявляется это только в реальном проце.
Jns
flax
Единственное, что приходит в голову: WDT

Попробуйте считать конфигурацию запрограммированного контроллера и проверьте бит WDTE
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.