Перейти к содержанию

Управление Семисегментным Индикаторм С Помощью Мк


Рекомендуемые сообщения

Не пойму, в чем проблема использовать защиту от дребезка в коде микроконтроллера, пишется, вроде еще Alexeyslav говорил, параллельно с динамической индикацией, и работает отлично. Сам именно так делал пару недель назад - результат вполне рабочий - никаких лишних проскакиваний не замечал, самому можно регулировать как часто будет срабатывать кнопка, что очень удобно, к примеру, когда удерживаешь ее.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 92
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

конденсатор совершенно не мешает реализовывать автоповтор программно.

длительность процесса смыкания контактов кнопки, и связанного с этим дребезга, не превышает десятков миллисекунд, поэтому емкость можно ставить совершенно символическую, меньше 0.1 мкф, и ни один оператор-человек не столкнется с тем, что емкость мешает ему быстро нажимать/отпускать кнопку подряд.

с мультиплексированием да, конденсаторы плохо сочетаются.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Так смотри, конденсатор должен обеспечивать время заряда именно в области гистерезиса, а при нажатии кнопки он должен зарядится от 0 до порога срабатывания, а это обычно раз в 10 больше.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

почему зарядиться-то при нажатии? делается по-нормальному так: кнопка с нормально-разомкнутыми контактами, один на земле, второй соединен с подтягивающм резистором к питанию, и кондером на землю.

до нажатия на входе высокий уровень.

при первом же нажатии (касании) конденсатор моментально разряжается до нуля (ниже порога ТШ, ниже лог. "0") и пока контакты дребезжат, т.е. размыкаются и замыкаются обратно несколько раз, конденсатор не успевает зарядиться хоть сколь-нибудь заметно.

то есть, время заряда превышает время разряда во столько же раз, как соотношение подтягивающего резистора и замкнутых контактов кнопки.

все время с момента касания на входе уровень ниже порога переключения из 1 в 0.

при отпускании кнопки конденсатор заряжается - достаточно быстро, чтобы не мешать повторным нажатиям.

сопутствующие варианты _http://www.electromir.net/Shems/7/Shema_74.htm

Ссылка на комментарий
Поделиться на другие сайты

Конденсатор имеет активное сопротивление, и если оно сопоставимо с сопротивлением провода и контакта кнопки, то емкость конденсатора не спасет от дребезга! Не говоря о том что конденсатор в момент нажатия разряжается через контакты кнопки со временем подпаливая контакт и ухудшая его. Хотя конечно есть варианты, но они требуют дополнительных элементов. Но конденсатор можно применять в случаях когда кнопка вынесена от схемы на длинных проводах - это уменьшит э/м помехи наводимые в проводе из-за дребезга.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

А как в клавиатуре это рашается? Там же резиновые контакты, они тоже дребезжат? И там еще процессор стоит. Но стандартная клавиатура 101-клавиша для x86 никогда в жизни не дребезжит.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Там еще хуже, мало того что дребезг в момент контакта, так еще и сопротивление контакта зависит от силы нажатия. Но ничего, обычные синхронные регистры и триггер шмидта на входе решает проблему кардинально.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Каким образом? Мне бы не помешало знать алгоритм реализации кнопок для будущих проектов.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Сначала создайте простейший проект с одной кнопкой и светодиодом. Раз нажали - включился, другой раз - выключился....

Тогда и разговор об этом будет предметным.

Кстати дребезг не симулируется. Поэтому только железо вживую...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Я уже писал и не однократно ... просто выставляем сигнал на строку и считываем столбцы в синхронный регистр. Есть хоть один активный уровень, значит кнопка нажата - выполняем нужные действия. Но в клавиатурах, может применятся еще другой алгоритм - например, действие выполняется только в случае если кнопка нажата 10 последовательных опросов.

Дребезг можно симулировать, если создать файл отсчетов и в нем описать такой процесс как хаотичные фронт и спад несколько раз пересекающие порог срабатывания импульса шириной в 1 секунду. и повторить его каждые 10 сек, файл в протеусе в текстовом виде... поэтому проблем быть не должно.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Если автор в состоянии написать стимул дребезга, то он ему и не нужен. Саи напишет антидребезг.

Объяснять 433-ему подробности алгоритма - пустая затея. Он ничего не делает сам. Только вопросы задает. Причем кругами.

Сначала пусть напишет хоть что то...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Поэтому только железо вживую...

Как-то боязно железо вживую. Но, похоже, это неизбежно.

С чего надо начать? С записи в регистр входного порта битов конфигурации?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Начинать нужно с установки МПЛАБа последних версий (8.60 или 8.63) и корректного создания проекта.

После этого берется за основу шаблонный файл из папки МПЛАБа: MPASM Suite/Template/Code/<имя контроллера>temp.asm , он копипастится в собственный асм-файл проекта и далее уже пишется исправляется где надо собственный код. Конфиг - это одна из строк заголовка асм-файла. При создании проекта (Визардом) необходимо включить в проект хедер-файл из папки МПЛАБа: MPASM Suite/<имя контроллера>.inc

В хедере включены все объявления спецрегистров контроллера и все описания конфигурационных бит. Если возникают сомнения по синтаксису этих имен, нужно смотреть этот хедер (он текстовый).

В результате создания проекта в окне проекта на рабочем столе МПЛАБа должны обязательно присутствовать два файла:

в ветке Header - inc-файл, в ветке Source - собственный asm-файл.

Далее можно произвести начальную компиляцию только скопированного из шаблонов текста, чтобы убедиться, что все ОК.

Первой программой желательно просто подергать какой нибудь ногой контроллера. Т.е. выводить в отдельный бит порта попеременно 1 и 0.

Для предварительной отладки вполне пойдет собственный симулятор МПЛАБа: MPLAB SIM. Он запускается через панель инструментов Debugger-Select Tool-MPLAB SIM. В симуляторе можно включить логический анализатор View-Simulator Logic Analyser и увидеть осциллограмму пинов при симуляции исполнения кода ВО ВРЕМЯ ОСТАНОВА. При этом желательно поставить в коде точку останова так, чтобы исполненный с начала участок программы не превышал полумиллиона машциклов, иначе все будет долго (из-за ведущихся при этом полных логов и трассировки). Перед пуском симулятора нужно установить его настройки в Debugger-Settings, особенно длину буфера (максимальную - нажать на метку M lines - Apply), иначе он будет странно работать...

После предварительной отладки кода на симуляторе, симулятор нужно выключить (там же где включали) и включить программатор (или железный дебаггер, если он поддерживается типом контроллера). Ну или программировать через оболочку программатора, используя там хекс файл из папки проекта. Хекс файл в папке проекта появится при компиляции, естественно...

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

А по-проще нельзя? Вы слышали про языки высокого уровня? Что думаете по этому поводу? "C" и "PicBasic" может будут доступнее в понимании для начинающего?

Я с асм никак не могу разобраться. Почему там надо ставить в ячейку b8 или c3 - не понимаю. Регистр, допустим, можно запрограммировать согласно докуметации на МК, конфигурировать его на ввод или вывод. Ну там "0010" в "0х3F2" ставим и у нас получается таймер с делителем 256. Это еще понятно. А насчет остального я запутался.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

А причем тут Си, если требуется конфигурировать контроллер и делать простейшие аппаратные операции с кнопкой?

На Си или на АСМе - совершенно без разницы. только синтаксис будет отличаться.

Функций типа get_button в Си нет, разве только как сервис какой нибудь ОСРВ... Но Вам до ОСРВ как до Луны пешком...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

"C" и "PicBasic" может будут доступнее в понимании для начинающего?

Ниразу. Ни на одном из языков не избавишься от необходимости разбираться с железом.

Чтобы написать программу на любом языке под контроллер, обязательно надо разбираться с железом... а в этом может помочь только даташит на контроллер, начиная со структурных схем, и заканчивая для чего они нужны и как работать с отдельными модулями контроллера. Минимальные примеры все в даташите, а дальше только логика должна работать. В общем случае, у каждого модуля есть вход, выход и регистры настроек которые определяют как модуль будет работать. Путем манипуляций с регистрами программист должен заставить работать контроллер так как нужнно.

Почему там надо ставить в ячейку b8 или c3 - не понимаю.

И не надо понимать... память абсолютно прозрачна, единственное условие - одновременно нельзя использовать одну и ту же ячейку в двух местах, иначе пропадает возможность контроля - другая часть алгоритма может испортить значение ячейки, которое используется для других целей и тем самым нарушить работу программы. Особенно это касается прерываний, которые могут возникать абсолютно в любом месте программы. Конкретно адреса ячеек можно использовать абсолютно произвольно, но не забывая что в ОЗУ находится еще и стек который отсчитывается от старших адресов, поэтому самым идеальным было бы распределять ячейки под переменные с нижних областей памяти. Впрочем, если происходит порча какой-то ячейки, прежде всего надо убедистя что стек не увеличился до такой величины что налез на область отведенную под переменные.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Я придумал, как можно хакнуть МК. Вот пример программы:

a = 10

do while a < 0

a = a - 1

b = 10 / a

sleep 1

loop

На десятой секунде контроллер поймает глюк, потому что на ноль делить нельзя!

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

Ссылка на комментарий
Поделиться на другие сайты

Причем тут "хакнуть"? Хакнуть МК - это суметь считать защищенный флеш. Деление на ноль к этому не приводит.

В зависимости от семейства (архитектуры), так или иначе, деление на ноль приводит к выполнению исключения (программного прерывания) по определенному вектору.

Если там компилятор или пользователь вставит ресет, то просто произойдет перезапуск кода, а если правильно обработает эту ситуацию, то ход программы не пострадает (например принудительно сделает результат деления равным максимуму для разрядности результата)....

Ничего особенного.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...