Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 21 окт 2018, 17:31

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Mod#121 импульс на выходе
СообщениеДобавлено: 23 авг 2017, 13:51 
Не в сети

Зарегистрирован: 23 мар 2015, 22:31
Сообщения: 14
Подскажите, пожалуйста, как можно подправить исходник (Альтернативное обучение удержанием кнопки), чтобы на выходе PD4 получать импульс 100мс при нажатии на кнопки, которые управляют этим выходом.
Мое решение в приложении не рабочее. В макете при нажатии на любую кнопку - всегда импульс на выходе PD4.


Вложения:
45.png
45.png [ 7.26 КБ | Просмотров: 813 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 23 авг 2017, 14:55 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3687
Откуда: Россия
Во-первых, на скрине нет управление портом PD4, а есть PВ4. Во-вторых, в прерываниях не делают временных задержек. ;)

Чтобы сделать задержку, тебе необходимо создать дополнительную переменную для счётчика импульсов и дополнительный флаг в регистре флагов (r22 – регистр флагов). При установке лог 1 на необходимом порте одновременно «поднимаешь» флаг данного выхода. При поднятом флаге должен начать работать счётчик импульсов. В данной программе это удобнее реализовать в прерывании сторожевого таймера. Его период составляет 16 мс, что означает при шести импульсах счётчика задержка около 96 мс (16 * 6 = 96), а при семи импульсах счётчика задержка будет уже около 112 мс. В основном цикле ты проверяешь флаг порта или управляющий бит регистра порта, и если он поднят то проверяешь счётчик импульсов, как только счётчик станет больше или равно семи, то «отключаешь» порт, сбрасываешь флаг порта и обнуляешь переменную счётчика. Таким образом получаешь требуемый импульс задержки на требуемом выходе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 24 авг 2017, 17:02 
Не в сети

Зарегистрирован: 23 мар 2015, 22:31
Сообщения: 14
SVN писал(а):
Во-первых, на скрине нет управление портом PD4, а есть PВ4. Во-вторых, в прерываниях не делают временных задержек. ;)

В моей просьбе ошибка. Конечно порт B!
Модуль _DoABC заканчивается ret и вызывается из тела _DoAct, которое заканчивается ret и вызывается из тела _Test_Hash, которое заканчивается ret и вызывается из тела _Over_16mS, которое заканчивается ret и вызывается из прерывания _Watchdog_Time_Out, которое заканчивается reti.

SVN писал(а):
Чтобы сделать задержку, тебе необходимо ....

За помощь советом - огромное спасибо!!!!!! Буду учиться :idea:

Проверить на плате смогу только после выходных. Гляньте, пожалуйста, так будет работать?


Вложения:
ss.png
ss.png [ 8.35 КБ | Просмотров: 787 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 24 авг 2017, 20:09 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3687
Откуда: Россия
siema писал(а):
Модуль _DoABC заканчивается ret и вызывается из тела _DoAct, которое заканчивается ret и вызывается из тела _Test_Hash, которое заканчивается ret и вызывается из тела _Over_16mS, которое заканчивается ret и вызывается из прерывания _Watchdog_Time_Out, которое заканчивается reti.

Вот о чём я и пишу… что твоя задержка в виде паузы (которая была закомментирована), организована в прерывании сторожевого таймера (Watchdog_Time_Out), что не есть хорошо… так как при такой паузе (_Pausе = 150 мс) пропускается как минимум 7 прерываний сторожевого таймера…

Цитата:
Гляньте, пожалуйста, так будет работать?

Не так как тебе нужно… :-)

Теперь по скрину… конечно можно следить за битом регистра пин, но я бы отслеживал бит регистра Порт.
Теперь:
а) Что такое WDR?
б) Данная переменная (WDT_Count) не для этого.
в) ...?


Вот такой вариант имеет возможность на жизнь…
Вложение:
1.png
1.png [ 21.88 КБ | Просмотров: 782 ]


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 25 авг 2017, 12:36 
Не в сети

Зарегистрирован: 23 мар 2015, 22:31
Сообщения: 14
Получается, что я совершено не так понял...
Спасибо огромное!!!!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 25 авг 2017, 14:52 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3687
Откуда: Россия
В принципе за выходом можно и не наблюдать, а только лишь отслеживать переменную…
Вложение:
1a.png
1a.png [ 5.17 КБ | Просмотров: 764 ]


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 29 авг 2017, 12:53 
Не в сети

Зарегистрирован: 23 мар 2015, 22:31
Сообщения: 14
Оба варианта работают аналогично.
Сейчас так (по номеру кнопок):
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).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 29 авг 2017, 13:20 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3687
Откуда: Россия
Свою папку с исходником в студию… бум смотреть.
Цитата:
но очень смущают паразитные импульсы на нагрузке А при нажатии кнопок 4 и 5 (включение/выключение нагрузок B и C).

Попробуй сделать так, должно помочь:
Вложение:
1b.png
1b.png [ 14.87 КБ | Просмотров: 685 ]


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 30 авг 2017, 11:14 
Не в сети

Зарегистрирован: 23 мар 2015, 22:31
Сообщения: 14
Изменил, но поведение такое же, как описано выше.


Вложения:
ir_control_source_alt_learn_Impulse.rar [47.03 КБ]
Скачиваний: 16
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Mod#121 импульс на выходе
СообщениеДобавлено: 30 авг 2017, 12:20 
Не в сети
Аватара пользователя

Зарегистрирован: 29 май 2011, 17:59
Сообщения: 3687
Откуда: Россия
Причина понятна, а значит решаема… но имеется несколько вопросов:
а) Есть ли необходимость в сохранении состояние нагрузок в EEPROM? Необходимо знать, что при каждом управлении нагрузками (кроме вскл./выкл. всё) производится запись в EEPROM. Но данная память имеет своё ограниченное количество записей/перезаписей (1 000 000).
б) При подаче команды «выключить всё», нужен ли сигнал на порт РВ4?
в) При переборе нагрузок как должно вести себя импульсный выход (РВ4)?

Вообще для понимания… чем управляет порт РВ4?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB