http://www.forum.getchip.net/ |
|
Mod#121 импульс на выходе http://www.forum.getchip.net/viewtopic.php?f=24&t=808 |
Страница 1 из 2 |
Автор: | siema [ 23 авг 2017, 13:51 ] | ||
Заголовок сообщения: | Mod#121 импульс на выходе | ||
Подскажите, пожалуйста, как можно подправить исходник (Альтернативное обучение удержанием кнопки), чтобы на выходе PD4 получать импульс 100мс при нажатии на кнопки, которые управляют этим выходом. Мое решение в приложении не рабочее. В макете при нажатии на любую кнопку - всегда импульс на выходе PD4.
|
Автор: | SVN [ 23 авг 2017, 14:55 ] |
Заголовок сообщения: | Re: Mod#121 импульс на выходе |
Во-первых, на скрине нет управление портом PD4, а есть PВ4. Во-вторых, в прерываниях не делают временных задержек. ![]() Чтобы сделать задержку, тебе необходимо создать дополнительную переменную для счётчика импульсов и дополнительный флаг в регистре флагов (r22 – регистр флагов). При установке лог 1 на необходимом порте одновременно «поднимаешь» флаг данного выхода. При поднятом флаге должен начать работать счётчик импульсов. В данной программе это удобнее реализовать в прерывании сторожевого таймера. Его период составляет 16 мс, что означает при шести импульсах счётчика задержка около 96 мс (16 * 6 = 96), а при семи импульсах счётчика задержка будет уже около 112 мс. В основном цикле ты проверяешь флаг порта или управляющий бит регистра порта, и если он поднят то проверяешь счётчик импульсов, как только счётчик станет больше или равно семи, то «отключаешь» порт, сбрасываешь флаг порта и обнуляешь переменную счётчика. Таким образом получаешь требуемый импульс задержки на требуемом выходе. |
Автор: | siema [ 24 авг 2017, 17:02 ] | ||
Заголовок сообщения: | Re: Mod#121 импульс на выходе | ||
|
Автор: | SVN [ 24 авг 2017, 20:09 ] | ||
Заголовок сообщения: | Re: Mod#121 импульс на выходе | ||
|
Автор: | siema [ 25 авг 2017, 12:36 ] |
Заголовок сообщения: | Re: Mod#121 импульс на выходе |
Получается, что я совершено не так понял... Спасибо огромное!!!! |
Автор: | SVN [ 25 авг 2017, 14:52 ] |
Заголовок сообщения: | Re: Mod#121 импульс на выходе |
В принципе за выходом можно и не наблюдать, а только лишь отслеживать переменную… 1a.png [ 5.17 КБ | Просмотров: 17254 ] |
Автор: | siema [ 29 авг 2017, 12:53 ] |
Заголовок сообщения: | Re: Mod#121 импульс на выходе |
Оба варианта работают аналогично. Сейчас так (по номеру кнопок): 1. Восстановить: A - импульс, Выключить: A - нет. B и С - каждый раз изменение состояния (если ранее были сохранены в EEPROM). 2. Перебор: A - импульс каждый раз, B и С - каждый раз изменение состояния. 3. Нагрузка A: A - импульс через раз (на включение). 4. Нагрузка B: A - импульс каждый раз, B - каждый раз изменение состояния. 5. Нагрузка C: A - импульс каждый раз, C - каждый раз изменение состояния. Алгоритм можно подпилить в процедуре _Do_Act, но очень смущают паразитные импульсы на нагрузке А при нажатии кнопок 4 и 5 (включение/выключение нагрузок B и C). |
Автор: | SVN [ 29 авг 2017, 13:20 ] | ||
Заголовок сообщения: | Re: Mod#121 импульс на выходе | ||
|
Автор: | siema [ 30 авг 2017, 11:14 ] | ||
Заголовок сообщения: | Re: Mod#121 импульс на выходе | ||
Изменил, но поведение такое же, как описано выше.
|
Автор: | SVN [ 30 авг 2017, 12:20 ] |
Заголовок сообщения: | Re: Mod#121 импульс на выходе |
Причина понятна, а значит решаема… но имеется несколько вопросов: а) Есть ли необходимость в сохранении состояние нагрузок в EEPROM? Необходимо знать, что при каждом управлении нагрузками (кроме вскл./выкл. всё) производится запись в EEPROM. Но данная память имеет своё ограниченное количество записей/перезаписей (1 000 000). б) При подаче команды «выключить всё», нужен ли сигнал на порт РВ4? в) При переборе нагрузок как должно вести себя импульсный выход (РВ4)? Вообще для понимания… чем управляет порт РВ4? |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |