Полная версия этой страницы:
Глюк PIC или другая причина?
Мужики помогите, такая проблема возникла с PIC 16f84.
вот код написаный на MicroC , по логике программы светодиод должен загореться и погаснуть на всегда до сброса питания, но каким то образом он начинает зажигаться и гаснуть. Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время!
void main()
{
POTRB=0x0;
TRISB=0x0;
PORTB.F1=1;
DELAY_MS(500);
WHILE(1)
{
PORTB.F1=0;
}
}
в чем может быть проблема?
Сергей Борщ
Jul 18 2007, 11:28
Цитата(flax @ Jul 18 2007, 13:31)

Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время! в чем может быть проблема?
Наиболее вероятно, что вы случайно при программировании fuses разрешили watchdog. Он и сбрасывает. Или нога Reset висит в воздухе и от помех сбрасывает контроллер.
Нога Reset соединина через резистор с питанием, а что такое fuses и watchdog могли бы в двух словах рассказать?
flax,
Fuses - биты конфигурации
Watchdog - сторожевой таймер. Если разрешен то периодически ресетит систему. Период от 18мс до 2.3с (настраивается), тактируется от своего RC генератора. Разрешается или запрещается соответствующим битом конфигурации. По умолчанию судя по всему включен (по крайней мере в MPLAB-е это так).
muravey
Jul 19 2007, 02:42
WDT нужен для того, чтобы в слуае зависания контроллера произвести сброс. Если он включен, то надо его постоянно сбрасывать в цикле
WHILE(1)
{
PORTB.F1=0;
}
Что то нечего не получаеться, в microC при создании проекта отключаю и при программировании тоже отключаю бит WDT и все равно все без изминений!
Как вариант, дезассемблить нагенеренный код и посмотреть что там делается на самом деле.
Allregia
Jul 29 2007, 14:20
Компиляторы иногда преподносят совершенно неожиданные сюрпризы.
Пару месяцев назад, столкнулся с таким, что вообще на голову не наденешь.
Проц 867А, компилирую ХайТечем 9.50 (без апдейта).
Плата - макетка, на ней 7805, проц, ЖКИ, кнопки и прочее, питаю от лабораторного БП.
Все работает гуд, с отключенной оптимизацией.
Включаю полную оптимизацию, и начинаются кренделя:
- при включении питания БП - все глючит неимоверно!
- если при включенном БП просто втыкаю плюсовой штекер от платы в него - все работает зашибись!
- оключаю оптимизацию - все ОК.
Откатываюсь на предыдущую версию копилятра, 8.02PL3 - все ОК, и с оптимизацией тоже.
Говорят в апдейтах к 9.50 много глюков устранили, но у меня легальная только 8-ка, а 9ка - кракнутая, без апдейтов.
P.S. Скопом +5в и MCLR смотрел, никаких "кренделей" не заметил.
С ПИКами работаю почти полтора десятка лет, но ТАКОГО - не видел. Как может включение оптимизации, и вообще сфт так влиять на старт процессора - уму не постижимо. Что-то они там в стартапе лихо написали...
Да, когда вместо проца втыкаю в панельку головку эмулятора (Айс-2000) - никаких глюков нет, т.е. проявляется это только в реальном проце.
flax
Единственное, что приходит в голову: WDT
Попробуйте считать конфигурацию запрограммированного контроллера и проверьте бит WDTE
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.