АвторСообщение



Пост N: 1
Зарегистрирован: 15.03.12
Рейтинг: 0
ссылка на сообщение  Отправлено: 15.03.12 20:17. Заголовок: sleep+10F200=проблема


Доброго времени суток!
Всю жизнь работал исключительно с AVR, но тут возникла необходимость использовать в девайсе супермаленький и низкопотребляющий PIC10F200, и тут возникли некоторые сложности, которые не могу решить без Вашей помощи...
Сначала, при входе в sleep режим, мне никак не удавалось вывести его из него... Потом на одном из форумов я прочитал что этот контроллер при выходе из sleep переходит к выполнению команды по нулевому адресу, вместо того чтобы выполнять команду, следующую на командой sleep. Учитывая что команда sleep была одной из первых в моем коде, то не удивительно что устройство не работало (фактически программа инициализировала порты, уходила в sleep режим и так по замкнутому кругу).
Переписал программу таким образом, чтобы уход в sleep был после выполнения нужных мне действий...но тут другой баг вылез...
Пишу я на Си в HI-TECH PICC
Программный код:


 цитата:
#include <htc.h>

unsigned char imp_count=0;

void delay(unsigned int value)
{
while(value-- > 0)
{
}
}

void main(void)
{

TRIS = 0b00001000; // настраиваем линию GP3 на вход, GP0, GP1, GP2 на выход
OPTION=0b01000000;

while(1)
{
if(GP3==1)
{
if(imp_count==0||imp_count==1)
{
GP1=1;
delay(5000);
GP1=0;
imp_count++;
}

if(imp_count==2||imp_count==3)
{
imp_count++;
}
}
if(imp_count>3) {imp_count==0;}
asm ("sleep");
}
}



На вход GP3 микроконтроллера постоянно поступают импульсы. В ответ на первые два из них он должен мигнуть светодиодом подвешенным на ногу GP1, а на следующие два импульса - ничего не делать. И так по замкнутому кругу...
Но, вместо этого он мигает диодом на каждый приходящий импульс без пропуска!
Возникает впечатление, что при сбросе счетчика команд после выхода из sleep, значение переменной imp_count также сбрасывается в ноль. Может ли такое быть? или проблема в чем то другом?
В общем если кто то знает в чем проблема, прошу поделиться...

Биты конфигурации выставляю так:
MCLR отключен (GP3 работает как вход)
WDT отключен
Работа от внутреннего генератора (4Мгц)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]


moderator




Пост N: 493
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 15.03.12 21:55. Заголовок: Думаю, что Вам лучше..


Думаю, что Вам лучше обратиться на microchip.su, там много специалистов. Не сильно правда воспитанных, потопчут, может и помогут. Здесь начинающие в основном. А тут такой редкий пик.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 15.03.12
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.03.12 14:59. Заголовок: наверное так и сдела..


наверное так и сделаю, спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 59
Зарегистрирован: 23.01.11
Откуда: Россия, Респ. Саха Якутия г.Мирный
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.03.12 17:51. Заголовок: MAZ пишет : А тут т..


MAZ пишет :
 цитата:
А тут такой редкий пик.


так чисто для интереса, а что по такому простому функционалу в пиках есть разница, редкий не редкий?
A-l-e-x-u-s я еще никогда не работал со слип режимом, но в обычном режиме постоянного опроса, и не на хайтек си могу чего набросать...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 323
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.03.12 18:01. Заголовок: A-l-e-x-u-s пишет: ..


A-l-e-x-u-s пишет:

 цитата:
проблема в чем то другом?


Я из тех, кого MAZ называет начинающими. Сразу скажу, что работал с МК из этой серии с 12F629.
Могу попробовать пропустить твою задачу через симуляторы - так работаю. Там такой компонент 10F200 есть только в перечне. Полноценно пробовать могу только с 12 f629, они похожи, сравни внутренности. Совет из своего малого опыта работы с 12F серией на Си: используй короткие форматы переменных (лучше BYTE); если можешь, избавься от delay функции ( чем её заменить, подумай - я просто счетчиками обошелся) - жрет память и ведет себя странно с этой серией. Кстати, после компиляции - нет ли переполнения памяти?
Если примешь мою помощь (только р12), то придется для меня уточнить задачу - трудно "въезжаю"в чужое.
Какая частота импульсов? Это устройство - фотобарьер подсчета клиентов? Когда должен "проснуться" МК? По WD, по сбросу или прерыванию?
По логике поставленной задачи - частота входных импульсов не высокая, если можно увидеть вспышку светодиода после четвертого импульса. И будить, наверное нужно входными импульсами же? Или я неправ?
С уважением.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 325
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг: 1
ссылка на сообщение  Отправлено: 18.03.12 08:57. Заголовок: Для p12f629 могу поя..


Для p12f629 могу пояснить: порядок пробуждения зависит от состояния бита GIF.
Если он сброшен (в нуле), то после пробуждения выполняется команда, следующая за записью Sleep и далее по программе.
Если указанный бит установлен в единицу, то выполняется команда из буфера, затем переходим к вектору 04h и вполняем, что там есть. Написал программку для него по твоему алгоритму (как его понял),на Си - но без Делей. Правда Sleep не ставил, у тебя - другое. Этот ПИК позволяет, твой не знаю.
У p10f200 вектора прерывания нет, не должно быть и таких вопросов. Там есть только вектор сброса (Reset Vector). И только два рг. пользовательских - не разгонишься . После пробуждения попадаем туда - на этот вектор. Посмотри по ДАТЕ, состояние регистров по сбросу. От этого и танцуй, мне кажется. В этом мой ответ начинающего. В никуда, думается.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 21.02.12
Откуда: Украина, Луганская обл.
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.03.12 19:45. Заголовок: A-l-e-x-u-s пишет: ..


A-l-e-x-u-s пишет:

 цитата:
if(GP3==1)
{......}


Все зависит от импульса. У Вас действия начинаются с нарастающим фронтом импульса и весь цикл while(1) может проскочить несколько раз ,если импульс будет длинным.
Я бы сделал так :

 цитата:

while (GP3) {flag = 1;}
if(!GP3 && flag)
{flag = 0;
...........
}
asm ("sleep");



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия