реклама на сайте
подробности

 
 
> Глюк PIC или другая причина?
flax
сообщение Jul 18 2007, 10:31
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 18-07-07
Пользователь №: 29 205



Мужики помогите, такая проблема возникла с PIC 16f84.
вот код написаный на MicroC , по логике программы светодиод должен загореться и погаснуть на всегда до сброса питания, но каким то образом он начинает зажигаться и гаснуть. Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время!


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

PORTB.F1=1;
DELAY_MS(500);

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



в чем может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Сергей Борщ
сообщение Jul 18 2007, 11:28
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(flax @ Jul 18 2007, 13:31) *
Я так понимаю что он начинает обрабатывать программу с самого начала через определенное время! в чем может быть проблема?
Наиболее вероятно, что вы случайно при программировании fuses разрешили watchdog. Он и сбрасывает. Или нога Reset висит в воздухе и от помех сбрасывает контроллер.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
flax
сообщение Jul 18 2007, 15:33
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 18-07-07
Пользователь №: 29 205



Нога Reset соединина через резистор с питанием, а что такое fuses и watchdog могли бы в двух словах рассказать?
Go to the top of the page
 
+Quote Post
miga
сообщение Jul 18 2007, 23:01
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-04-05
Пользователь №: 3 928



flax,
Fuses - биты конфигурации
Watchdog - сторожевой таймер. Если разрешен то периодически ресетит систему. Период от 18мс до 2.3с (настраивается), тактируется от своего RC генератора. Разрешается или запрещается соответствующим битом конфигурации. По умолчанию судя по всему включен (по крайней мере в MPLAB-е это так).
Go to the top of the page
 
+Quote Post
muravey
сообщение Jul 19 2007, 02:42
Сообщение #5





Группа: Новичок
Сообщений: 13
Регистрация: 5-07-07
Пользователь №: 28 914



WDT нужен для того, чтобы в слуае зависания контроллера произвести сброс. Если он включен, то надо его постоянно сбрасывать в цикле
WHILE(1)
{
PORTB.F1=0;
}
Go to the top of the page
 
+Quote Post
flax
сообщение Jul 20 2007, 15:22
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 18-07-07
Пользователь №: 29 205



Что то нечего не получаеться, в microC при создании проекта отключаю и при программировании тоже отключаю бит WDT и все равно все без изминений!
Go to the top of the page
 
+Quote Post
miga
сообщение Jul 21 2007, 20:08
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-04-05
Пользователь №: 3 928



Как вариант, дезассемблить нагенеренный код и посмотреть что там делается на самом деле.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 29 2007, 14:20
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Компиляторы иногда преподносят совершенно неожиданные сюрпризы.
Пару месяцев назад, столкнулся с таким, что вообще на голову не наденешь.
Проц 867А, компилирую ХайТечем 9.50 (без апдейта).
Плата - макетка, на ней 7805, проц, ЖКИ, кнопки и прочее, питаю от лабораторного БП.
Все работает гуд, с отключенной оптимизацией.
Включаю полную оптимизацию, и начинаются кренделя:
- при включении питания БП - все глючит неимоверно!
- если при включенном БП просто втыкаю плюсовой штекер от платы в него - все работает зашибись!
- оключаю оптимизацию - все ОК.

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

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

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

Сообщение отредактировал Allregia - Jul 29 2007, 14:22
Go to the top of the page
 
+Quote Post
Jns
сообщение Jul 29 2007, 23:05
Сообщение #9





Группа: Новичок
Сообщений: 9
Регистрация: 19-07-07
Пользователь №: 29 252



flax
Единственное, что приходит в голову: WDT

Попробуйте считать конфигурацию запрограммированного контроллера и проверьте бит WDTE
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 02:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01474 секунд с 7
ELECTRONIX ©2004-2016