Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Два таймера и внешние прерывания
Два таймера и внешние прерывания
tesla88 Дата: Чт, 02.10.2014, 21:36  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 121
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Всем привет!!! Возникла необходимость собрать один аппарат, но возник ряд проблем очень нужна помощь знающих людей .
Суть такова - прибор должен управлять двумя электроклапанами , а запускаться они должны от внешнего прерывания. клапаны работают независимо друг от друга и время работы у каждого своё, то есть необходимо запускать два независимых таймера. Само железо уже собрано на pic16f876a, осталась только программная часть . Вот с программной частью как раз и возникла проблема - то есть прибор должен посчитать количество импульсов пришедших на порт прерывания - запустить первый таймер , потом через неопределённое время снова увидеть и посчитать импульсы по прерыванию и запустить второй таймер. Возможно ли это сделать на одном контроллере? ( все предыдущие проекты делал с двумя типами прерывания - внешнее и таймер, а тут целый симбиоз из прерываний нужно варганить) surprised
ЯНДЕКС Дата: 02.10.2014
dimitriy-bc Дата: Чт, 02.10.2014, 22:27  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 198
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

tesla88, уточните. Клапан должен срабатывать после нескольких прерываний по определенному входу, или как? Если счет должен происходить аппаратно, то в выбранном Вами пике такую функцию может выполнять только вход RA4 совместно с нулевым таймером.
Сообщение отредактировал dimitriy-bc - Чт, 02.10.2014, 22:36
ADMIN Дата: Пт, 03.10.2014, 05:25  |                                                                                                                Сообщение # 3
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Несколько вопросов:
- какова частота импульсов?
- какие ноги свободны?(схему можно глянуть?)
- какие таймеры уже используются?
- на какое, ориентировочно, время, нужно включать клапаны?
- насколько точно должно соблюдаться это время?
- как определяется, что импульсы именно для запуска второго клапана, а не первого? и наоборот?
tesla88 Дата: Пт, 03.10.2014, 09:22  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 121
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

В общем суть такова, собираются аппарат для управления душем и стиралкой, в меню ЖК дисплея выбирается тот или иной режим, закидываются деньги в купюроприемник , а он в свою очередь выдаёт определённое количество импульсов на порт B.0, после этого запускает первый клапан на время той суммы которую внесли- работает , пока клапан работает выбирается функция стиралки и закидываются деньги
, снова сочетаются импульсы и рассчитывается время второго таймера
ADMIN Дата: Пт, 03.10.2014, 10:44  |                                                                                                                Сообщение # 5
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну для количества импульсов достаточно входа INT, все правильно. В прерывании считается количество, включается режим и запускается таймер, допустим T0. Интервал срабатывания таймера, скажем, 100 мС. Каждые 100 мС в прерывании инкрементируем счетчик времени открытия клапана. После открытия клапана, ждем прихода импульсов на запуск стирки, после прихода - так же - считаем, запускаем таймер, хотя можно использовать тот же T0, но переменную для счета уже другую. И постоянно проверяем на окончание обе переменные. Все с помощью флагов. Что именно не получается?
tesla88 Дата: Пт, 03.10.2014, 16:26  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 121
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

именно так я и планировал делать этот проэкт, но меня смущает один нюанс , а именно - импулься приходят от манетоприёмника в разном колличестве и в разное время ( разный номинал денег закидывают в разное неопределённое время), не будут ли проподать входящие  импульсы при прерывании с учётом работы одного или двух таймеров ( и кстати самый главный вопрос - мугут ли работоть два таймера одновременно?)
- время работы клапанов от 20ти минут до часа.
- частота кварца 4 МГЦ
- программы пока нет ( для начала надо разобраться с возможными вариантами решения поставленной задачи)
- выбор клапанов будет осуществляться через меню на лсд
- принципиальной схемы нет ( точнее есть но в голове)))
- колличество импульсов от манетника разное но для максимального наминала это 100 импульсов за 0,5 секунды
Прикрепления: Astana.lay(148Kb)

Сообщение отредактировал tesla88 - Пт, 03.10.2014, 16:45
dimitriy-bc Дата: Сб, 04.10.2014, 09:41  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 198
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Цитата tesla88 ()
меня смущает один нюанс , а именно - импулься приходят от манетоприёмника в разном колличестве и в разное время ( разный номинал денег закидывают в разное неопределённое время), не будут ли проподать входящие  импульсы при прерывании с учётом работы одного или двух таймеров ( и кстати самый главный вопрос - мугут ли работоть два таймера одновременно?)

В прерываниях у Вас будут участвовать INT для подсчета заложенных денег, таймер0 (можно с предделителем) для допустим клапана душа и таймер1 (также можно с предделителем) для стирки. Все эти прерывания прекрасно работаю вместе и друг другу не мешают.
xvovanx Дата: Чт, 09.10.2014, 17:32  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 262
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Добрый день коллеги!
Тоже возник вопрос по прерываниям. Необходима одновременная работа двух прерываний - контроль внешних импульсов INT и счетчик по переполнению TMR1. Как сделать INT внешние прерывания приоритетными. Скажем, чтобы в момент пересчета времени (TMR1) не пропустить импульс с внешнего входа?
P.S. раньше обходился одним прерыванием, а тут боюсь, чтоб одно прерывание не тормознуло другой nocomp
ivan_fd Дата: Чт, 09.10.2014, 20:03  |                                                                                                                Сообщение # 9
Группа: Модераторы
Ранг:  Специалист
Сообщений: 899
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

18F Вам в помощь, там есть система приоритетных прерываний. А в 16F пока не обработается одно прерывание, другое будет ждать.

Меня все время преследуют умные мысли...но я быстрее!!!
ADMIN Дата: Пт, 10.10.2014, 04:19  |                                                                                                                Сообщение # 10
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Кстати, совсем забыл про статью - вот здесь, возможно, найдется пища для размышлений...
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Два таймера и внешние прерывания
Страница 1 из 11
Поиск: