|
|
![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() ![]() |
![]() ![]() |
Начинающий
Регистрация: 25.01.2012 Последняя активность: 05.01.2024 01:04
Сообщений: 30
Сказал(а) спасибо: 10
Поблагодарили: 4 раз(а) в 4 сообщениях
|
![]()
Подскажите по алгоритму считывания кода с тактовой кнопки. Можно заведомо рабочий кусок кода с комментариями за что отвечают флаги.
Я не совсем придумал, как кодировать произвольный сигнал. Пока использую "11" два бита подряд - длинный, один - короткий. Длину пауз не кодирую. Использую логическое или, запись веду с младшего бита. Помещается 3 длинных в один байт. Теперь излияние мыслей, можно дальше не читать до постскриптума))) Решил написать драйвер для фонаря. Мне нужно всего 2 режима. Максимум и "средний". Решил-написал. Может и криво. Алгоритм такой. По замыканию выхода на землю происходит прерывание. Запускаю вачдог на прерывание. Смотрю вход после сработки вачдога если кнопка отжата то средний режим, в случае, что все еще нажата - то запускаю вачдог еще раз, если отжата то максимум. Там фильтры и прочее, что не суть интересно. Все было отлично, пока я не вспомнил, что на рыбалке использовал минимальный режим, чтобы можно было поменять приманку, при этом фонарь не слепил и батарейки хватало на длительное время. Решил сделать включение минимума из включенного режима, путем введения кода. Не буду описывать свой алгоритм подробно, изначально возникла проблема что надо попадать в такт таймера. В принципе, эта небольшая проблема вылилась в то, что процедура опроса кнопки заняла 140% памяти Тини13 (амтелстудио Си). Сравнив то, что у меня получилось с тем набором функций, что умудряются вместить, почувствовал себя неполноценным. П.С. О моем уровне программирования. Я понимаю почему, делей нельзя использовать в прошивках контроллера ))) П.П.С. Я бужу контроллер сл. образом: по прерыванию на входе, запускаю вачдог на ресет. Правильно или это кривое решение? |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54
Сообщений: 7998
Сказал(а) спасибо: 934
Поблагодарили: 5203 раз(а) в 2785 сообщениях
|
![]()
Их много. На форуме много исходников для тактовой кнопки. Скачайте посмотрите как у других реализовано.
Как раз программные фильтры и прочее, это очень важно. Я вообще не понимаю в чем идея такого решения. |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Начинающий
Регистрация: 25.01.2012 Последняя активность: 05.01.2024 01:04
Сообщений: 30
Сказал(а) спасибо: 10
Поблагодарили: 4 раз(а) в 4 сообщениях
|
![]()
В том то и дело.
Пока проблем не возникало. Не хотел изначально просыпаться от 4 входа (3 нога). Сейчас попробовал - просыпается без вачдога. Спасибо. Вроде придумал алгоритм, но он к дребезгу чувствителен. Конденсатор ставить для фильтрации считается плохим тоном? |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54
Сообщений: 7998
Сказал(а) спасибо: 934
Поблагодарили: 5203 раз(а) в 2785 сообщениях
|
![]()
Если писать, то лучше с организацией защиты от дребезга.
Это если уже в готовое изделие, то деваться некуда. И лучше не просто кондер параллельно входу, а и резистор последовательно с кнопкой. Разряжая даже малоемкий кондер просто кнопкой, ее контактирующие поверхности будут потихоньку разрушаться. |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Начинающий
Регистрация: 25.01.2012 Последняя активность: 05.01.2024 01:04
Сообщений: 30
Сказал(а) спасибо: 10
Поблагодарили: 4 раз(а) в 4 сообщениях
|
![]()
Вот до такого алгоритма уменьшил. При возникновении помехи можем потерять нажатие или паузу, т.к. нет усреднения, иначе получается слишком много кода. Дребезг отбрасывается выдержкой времени после первого перехода.
Кстати, сколько по времени сделать короткое нажатие? 50 мС нормально? |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Начинающий
Регистрация: 25.01.2012 Последняя активность: 05.01.2024 01:04
Сообщений: 30
Сказал(а) спасибо: 10
Поблагодарили: 4 раз(а) в 4 сообщениях
|
![]()
А ларчик просто открывался. Те прошивки, функционал которых я хотел впихнуть в тини 13 писались под тини 85.
|
![]() |
![]() ![]() |