Easyelectronics.ru

Электроника для всех
Текущее время: 18 авг 2017, 02:27

Часовой пояс: UTC + 5 часов



    • JLCPCB for PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
 Заголовок сообщения: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 18:44 
Свой человек

Зарегистрирован: 15 авг 2016, 08:50
Сообщения: 95
Помогите найти либу или статью по методу написания кода для обработки такой ситуации. Вот у меня к примеру пик 1509, на нем я поставил 12 кнопок (не важно каким методом) и хочу вводить данные как на телефонах кнопочных старых вводили смски, то есть у нас всего 12 клавишь и на каждой клавише по три четыре буквы, то есть метод ввода как на старых телефонах. язык для ввода английский. подскажите либо готовую либу либо метод опроса или еще что. Мне главное суть понять, чтоб быстро начать код писать.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 18:45 
Свой человек

Зарегистрирован: 15 авг 2016, 08:50
Сообщения: 95
Выводить собираюсь в ЛСД


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 18:52 
Свой человек

Зарегистрирован: 10 май 2011, 12:39
Сообщения: 54
Откуда: Тольятти
roman89 писал(а):
не важно каким методом

Важно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 18:55 
Свой человек

Зарегистрирован: 15 авг 2016, 08:50
Сообщения: 95
хорошо. я пошел методом деревенским. просто поставил на каждую ногу пика по кнопке с внутренней подтяжкой к плюсу. вот так вот. у меня у пика много свободных ног и задача это позволяет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 18:59 
Свой человек

Зарегистрирован: 10 май 2011, 12:39
Сообщения: 54
Откуда: Тольятти
У матричной клавиатуры 4+3 выводов. Что вы там подтягиваете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 19:03 
Свой человек

Зарегистрирован: 10 май 2011, 12:39
Сообщения: 54
Откуда: Тольятти
http://easyelectronics.ru/matrichnaya-klaviatura.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 14 мар 2017, 21:11 
Свой человек
Аватара пользователя

Зарегистрирован: 11 апр 2014, 13:25
Сообщения: 190
Откуда: Украина, Винница или Днепропетровск с переменным успехом
В большинстве 16 Пиков есть прерывание по изменению состояния 4 старших разрядов порта В. Оно просто создано для матричной клавиатуры (позволяет избавится от циклического опроса выводов по таймеру и экономит кучу процессорного времени). Конкретно в Вашем пике я такого прерывания не увидел, но есть IOCIE: Interrupt-on-Change Enable bit
1 = Enables the interrupt-on-change
0 = Disables the interrupt-on-change
Посмотрите, может на базе этого прерывания получится сделать что-то подобное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 15 мар 2017, 07:04 
Только пришел

Зарегистрирован: 23 фев 2017, 09:07
Сообщения: 12
Прерывания по изменению состояния пинов созданы не для клавиатуры, а для ВЫХОДА ИЗ СЛИПА по подобным событиям. Что касается экономии времени по сравнению с опросом, то сие глупость невероятная. Ибо опрос клавиатуры должен выполняться с периодом не менее, чем время дребезга клавиатуры, то есть примерно раз в 20...30 мс. Обработчик опроса занимает не более пары...тройки десятков машинных циклов, что дает при машинном цикле в 1 мкс (как пример при осцилляторе ПИКа 4 МГц) скважность процесса обработки примерно 1000. То есть он занимает 0,1% машинного времени.
Применение внешних прерываний для обработки кнопок приводит к громоздкому и запутанному алгоритму защиты от дребезга и никакой экономии не дает вообще. Если говорить о теории данного процесса, то кнопки не относятся к периферийному оборудованию реального времени, что делает использование прерываний бессмысленным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 15 мар 2017, 08:19 
Старожил
Аватара пользователя

Зарегистрирован: 04 сен 2010, 23:09
Сообщения: 3025
Откуда: Армения
В компилляторах mikroelektronika есть библиотека для работы с клавиатурой, на сайте и в описании выложены примеры, но вот реализована-ли привязка нескольких символов к одной кнопке или нет, не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 15 мар 2017, 09:26 
Свой человек

Зарегистрирован: 11 мар 2016, 13:13
Сообщения: 64
Откуда: Украина
Доброго времени суток.
my504 писал(а):
Прерывания по изменению состояния пинов созданы не для клавиатуры, а для ВЫХОДА ИЗ СЛИПА по подобным событиям...

Зачем так КАТЕГОРИЧНО.
Думаю, что прерывание на RB4-RB7 у пиков нужно для отслеживания изменения состояния на этих входах. А то для чего разработчик задействует их - дело личное. Один применяет для матричной клавиатуры 4х4, другой для выхода из слипа, а третий например для опроса квадратурного энкодера (если INT0 и INT1 заняты). Ну и так далее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 15 мар 2017, 10:10 
Свой человек

Зарегистрирован: 15 авг 2016, 08:50
Сообщения: 95
проехали матричную - набросайте фрагмент кода для кнопки на которой привязаны 3 символа, просто пример для одной кнопке на отдельной ноге пика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 15 мар 2017, 20:41 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4031
nva1773 писал(а):
Зачем так КАТЕГОРИЧНО.
Думаю, что прерывание на RB4-RB7 у пиков нужно для отслеживания изменения состояния на этих входах. А то для чего разработчик задействует их - дело личное. Один применяет для матричной клавиатуры 4х4, другой для выхода из слипа, а третий например для опроса квадратурного энкодера (если INT0 и INT1 заняты). Ну и так далее.

Что бы подобные вам думать начали.
Сие прерывание не предназначено для обработки дребезга...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 07:11 
Только пришел

Зарегистрирован: 23 фев 2017, 09:07
Сообщения: 12
nva1773 писал(а):
дело личное. Один применяет..., другой..., а третий например...

Глупости всегда очень личное дело.
И каждый волен их совершать.
Поэтому можно кнопки обрабатывать, даже анализируя датчик температуры на кристалле, а сам корпус МК сделать кнопкой. Но такое решение, несмотря на его реализуемость, чрезвычайно неудобно.
А есть совершенно логичное и стройное решение, когда сам опрос автоматически убирает дребезг, а при необходимости экономить питание, все используемые для опроса входы вызывают таки прерывания по изменению состояния, но с ЕДИНСТВЕННОЙ ЦЕЛЬЮ - выйти из слипа и продолжить ОПРОС.
Квадратурный энкодер у какого нибудь двигателя - это устройство реального времени и опросом его делать некуртуазно - порой вообще требуется аппаратное решение (есть МК со специальным модулем). А вот механический энкодер совершенно отлично обрабатывается как кнопки, но у него дребезг поменьше, однако при медленном вращении пропусков не будет совсем даже при опросе в 20 мс, а при быстром пропуски совершенно незаметны, поскольку человек, вращая энкодер, ориентируется не на угол его поворота, а на показания изменяемой величины.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 08:29 
Старожил
Аватара пользователя

Зарегистрирован: 04 сен 2010, 23:09
Сообщения: 3025
Откуда: Армения
my504 писал(а):
при быстром пропуски совершенно незаметны, поскольку человек, вращая энкодер, ориентируется не на угол его поворота, а на показания изменяемой величины.

Не скажите. А если энкодер используется именно для измерения угла поворота а не для, например, регулировки громкости? А мы не замечаем пропуски... )))
Как раз подобный проект предстоит реализовывать в ближайшее время, выписал энкодеры, жду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 12:11 
Свой человек

Зарегистрирован: 11 мар 2016, 13:13
Сообщения: 64
Откуда: Украина
dosikus_2 писал(а):
Что бы подобные вам думать начали.
Сие прерывание не предназначено для обработки дребезга...

my504 писал(а):
Глупости всегда очень личное дело.
И каждый волен их совершать.

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

Author: Mark Palmer
Microchip Technology Inc.
AN566.pdf
http://ww1.microchip.com/downloads/en/A ... 00566b.pdf

Author: Stan D’Souza
Microchip Technology Inc
AN552.pdf
http://ww1.microchip.com/downloads/cn/A ... 00552e.pdf

После прочтения рекомендую Вам написать те же высказывания по поводу использования прерываний на RB4-RB7 в службу техподдержки Microchip. Может откроются глаза у буржуйских инженеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 12:41 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 1719
Откуда: КЧР, поселок Нижний Архыз
Можно и из буханки троллейбус сделать, но ведь речь не о том. Вам же говорят: проще без прерываний, с прерываниями алгоритм сложней и кучу глобальных флагов придется ставить.
А вообще, у некоторых МК есть аппаратный интерфейс для таких штук. С настраиваемыми таймаутами.

_________________
Поттеринг, умри!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 13:16 
Свой человек

Зарегистрирован: 11 мар 2016, 13:13
Сообщения: 64
Откуда: Украина
Eddy_Em писал(а):
Вам же говорят: проще без прерываний, с прерываниями алгоритм сложней и кучу глобальных флагов придется ставить.

Так я и не спорю с данным утверждением. Просто прерывание по изменению удобно использовать и для матричной клавиатуры. Заснул, проснулся по прерыванию, задержка в 16мс для борьбы с дребезгом, обработка нажатой кнопки и опять спать.
Да и на счет енкодера, встречал схему с оптическим енкодером в качестве счетчика витков и отслеживанием направления вращения, подключенных к RB4-RB5 (канал А-В). Частота следования импульсов до 10кГц. Все прекрасно работало, никаких сбоев и пропусков импульсов. Контроллер PIC16f873, т.е. явно использовалось данное прерывание, т.к. аппаратной обработки енкодера у него нет. Кто-то скажет глупость ,абсурд и не рационально, а я говорю, что надо уважать чужое мнение и решения, тем более если они абсолютно рабочие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 16 мар 2017, 23:28 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4031
С хрена ли я должен уважать бред упоротого пЫкомана, если лично для меня это давно пройденный этап?
Сказано же - для обработки дребезга прерывания на порту не годны, выход из слипа и отработка внешнего сигнала без дребезга и не более.
Кстати читай внимательно те же доки что выложил..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 17 мар 2017, 00:03 
Только пришел

Зарегистрирован: 23 фев 2017, 09:07
Сообщения: 12
nva1773 писал(а):
Так я и не спорю с данным утверждением. Просто прерывание по изменению удобно использовать и для матричной клавиатуры. Заснул, проснулся по прерыванию, задержка в 16мс для борьбы с дребезгом, обработка нажатой кнопки и опять спать.

Так это и есть ОПРОС, милчеловек...
Прерывания не определяют кнопку. Прерывания лишь БУДЯТ контроллер. И все. А если учесть, что реальные задачи требуют не только детектирования нажатий, но и более сложные комбинации с удержанием, двойным нажатием и пр., то универсальный подход с опросом и формированием флагов и машины состояний клавиатуры будет гораздо выгодней для любого проекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите найти либу для матричной клавиатуры
СообщениеДобавлено: 17 мар 2017, 00:08 
Только пришел

Зарегистрирован: 23 фев 2017, 09:07
Сообщения: 12
SSh писал(а):
А если энкодер используется именно для измерения угла поворота а не для, например, регулировки громкости?

Вы читаете выборочно или как?
Я же написал, что все зависит от задачи. И энкодер, который дребезжит дольше, чем длительность импульсов на его выходах, для выбранного применения НЕ ПРИГОДЕН. В принципе. А если применять прерывания, то может так статься, что ничем другим МК уже заниматься не будет. Ибо дребезг сожрет все время на бесконечные входы в обработчик...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 5 часов


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB