PIC12F629: прерывание по фронту и спаду импульса

PIC версия программы(разные темы)

PIC12F629: прерывание по фронту и спаду импульса

Сообщение Petrov Alexandr (Александр) » 17 июл 2014, 15:53

В 12F629 при симуляции программы во Flowcode отрабатывается прерывание только по фронту входного импульса, а в железе- по фронту и спаду импульса?
У вас нет доступа для просмотра вложений в этом сообщении.
Flowcode 5.5, Proteus 8.4SP0
Аватар пользователя
Ник: Petrov Alexandr
Имя: Александр
(Kiev)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение mim (mim) » 17 июл 2014, 18:04

Все отрабатывается, нужно думать что делаешь...
zad15s_mim.fcf

ЗЫ Фронты бывают возрастающие (нарастающие) и ниспадающие (падающие) ну и т.д...
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Petrov Alexandr (Александр) » 18 июл 2014, 08:20

Да, всё работает, понял свою ошибку (не описал действия программы при размыкании кнопки). Спасибо, Mim.
Flowcode 5.5, Proteus 8.4SP0
Аватар пользователя
Ник: Petrov Alexandr
Имя: Александр
(Kiev)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение mim (mim) » 18 июл 2014, 14:00

Petrov Alexandr писал(а): понял свою ошибку (не описал действия программы при размыкании кнопки).

Нет... значит не понял, если такое написал... Нажал кнопку, вошел в прерывание по Нарастающему, ПАУЗА 15 с !!!! (дурной тон), отпустил кнопку, но за счет паузы ты еще висишь в прерывании (хотя флаг прерывания взведен), после окончания паузы произойдет прерывание по Ниспадающему, а ты его проморгал... Ты его ждал при отпускании, а оно сработает после паузы, но его не видно...Поэтому я тебе такой пример и сделал, что бы ты видел реакцию на кнопку сразу.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Petrov Alexandr (Александр) » 21 июл 2014, 10:53

Добавлю немного подробностей. Задача была добавить в готовую охранную систему задержку 15 сек на срабатывание датчика движения при входе в охраняемое помещение. Клавиатура для снятия системы с охраны висит в зоне видимости датчика движения и если за 15 сек ввести правильный код, то система снимается с охраны и тревога не включается.

Я решил задержать импульс от датчика движения на 15 сек и для этого по прерыванию от датчика движения через паузу в 15 сек (я знаю, что это дурной тон, но вроде бы контроллеру в это время особо делать нечего, поэтому сделал так) формируется выходной импульс 2 сек. При симуляции во Flowcode (читал на Форуме, что доверять этой симуляции нельзя) все работало, как и описано в программе. То есть при Восходящем импульсе через 15 сек выдается выходной импульс 2 сек, а при Нисходящем -на выходе ничего не было.
Я запрограммировал контроллер и проверил работу на макетной плате: выходной импульс 2 сек выдавался и после Восходящего импульса и после Ниспадающего, что и послужило причиной моего предыдущего вопроса на Форуме, так как судя по макросу прерывания этого не должно было быть.
Возможно причиной был дребезг контактов или моё недопонимание работы с прерываниями. Я довольно опытный электронщик, но в программировании-новичок. Контроллер был запаян в охранную систему и заказчик доволен, но я то знаю, что если бы не задержка на выход на 60 сек в охранной системе, то такой номер не прошел бы и хочу разобраться "что это было".

Я действительно недопонимаю один момент (а может и не один): 1) если Ниспадающий импульс возникнет во время действия Паузы 15 сек, то должно ли отрабатываться прерывание по Ниспадающему импульсу после окончания действия макроса прерывания Восходящего импульса, ведь флаг прерывния взводится и оно ставится в очередь, но на макете я этого не заметил?
Flowcode 5.5, Proteus 8.4SP0
Аватар пользователя
Ник: Petrov Alexandr
Имя: Александр
(Kiev)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение mim (mim) » 21 июл 2014, 16:38

Petrov Alexandr писал(а):1. Добавлю немного подробностей.
2. При симуляции во Flowcode (читал на Форуме, что доверять этой симуляции нельзя) все работало, как и описано в программе.
3. Возможно причиной был дребезг контактов
4. хочу разобраться "что это было".
5. должно ли отрабатываться прерывание по Ниспадающему импульсу после окончания действия макроса прерывания Восходящего импульса

1. Блин... с этого нужно было и начинать... А то я совсем другое подумал... Совсем не то ответил... Вот как написана обработка прерывания в ФК
2. Вот к этому я тебя и направил... Нафига у тебя в подписи написано "...., Proteus 7.6SP4"????
3. Я не знаю что и как конкретно было все реализовано, в данном случае дребезг не должен был влиять...
4. Тогда рисуй схему в Протеусе делай тестовый пример - будем разбираться.
5. В твоем примере - нет.

На форуме есть много примеров как правильно формировать задержки на внутренних таймерах МК (это для более сложных задач), есть примеры где в Протеусе есть модель кнопки с дребезгом.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Petrov Alexandr (Александр) » 24 июл 2014, 18:04

В Протеусе работает как положено: по Восходящему фронту через 15 сек на выходе формируется импульс длительностью 2 сек, а при Нисходящем фронте-нет. Попробую ещё раз на макете.
У вас нет доступа для просмотра вложений в этом сообщении.
Flowcode 5.5, Proteus 8.4SP0
Аватар пользователя
Ник: Petrov Alexandr
Имя: Александр
(Kiev)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Enigm (Enigm) » 27 июл 2014, 11:36

А почему бы не использовать прерывание по INT а не по PORT ?
Прерывание по инт как раз можно настроить по нужному фронту.
Единственный минус так это то что ИНТ привязан к определенной ноге.

Вот гляньте .
Правда протеус у меня 7.10 .

vrem.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Petrovv Alexandr (Petrovv Alexandr) » 30 июл 2014, 17:48

Спасибо, Enigm, проверил твой вариант в железе. Сначала срабатывало по обеим фронтам, а потом я заметил, что не заполнена проверка условия if raz=1. После перекомпиляции все работает как и задумано-импульс на выходе только по восходящему фронту.
maket.JPG


Сейчас изучаю ссылки уважаемого Mim. Вроде бы и предыдущий вариант должен работать.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Petrovv Alexandr
Имя: Petrovv Alexandr
Новичок
Новичок
Информация о пользователе
Вернуться наверх

Re: PIC12F629: прерывание по фронту и спаду импульса

Сообщение Enigm (Enigm) » 30 июл 2014, 20:30

Оно не могло работать по обеим фронтам ни как, особенность данного прерывания.
Вы видать первый раз не тот хекс влили.
И да raz=1 не обязательно , оно и так по умолчанию равно 1(можете это проверить пошагово в самом фловкоде), иначе у вас бы оно совсем не сработало бы .
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode PIC

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей