Например TDA7294

Форум РадиоКот • Просмотр темы - Декодер данных с индикатора 7 сегментного,есть ли библиотека
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 19:18:14

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Декодер данных с индикатора 7 сегментного,есть ли библиотека
СообщениеДобавлено: Чт фев 04, 2021 08:21:07 
Опытный кот

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Пн дек 29, 2014 11:48:22
Сообщений: 793
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Всем привет! :wink:

Есть устройство на МК (не суть важно каком), которое через выводы МК управляет индикатором на 3 или 4 разряда , типа KEM-3361. Нужно, подключившись к этим же выводам индикатора, снять данные. Может кто-то уже подобное написал? Сложность, как я думаю, в определении начала опроса сегментов, ведь сигнал "стробирования" находится внутри МК, и на индикатор не выведен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 08:42:58 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
AonMaster писал(а):
в определении начала опроса сегментов
AonMaster писал(а):
сигнал "стробирования" находится внутри МК, и на индикатор не выведен
Ещё бы знать, что сие означает, дабы определить сложность.
Не расшифруете Ваши мысли ? :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 08:55:45 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 3
Вряд ли есть что-то универсальное готовое.
Но вообще такое за вечерок пишется под свой индикатор. Никаких сложностей. Сигналы разрядов заводим на внешние прерывания, сигналы сегментов на какой-нибудь порт один желательно (проще читать). По прерыванию разряда знаем какой разряд у нас выводится в данный момент - считываем порт сегментов в буфер, декодируем (как формирование вывода на 7-сег, только наоборот) и т.д. пока все разряды не считаем.

Добавлено after 1 minute 1 second:
Re: Декодер данных с индикатора 7 сегментного,есть ли библиотека
Но да, "сигнал "стробирования"" смущает. Почему стробирование, когда обычной у каждого разряда свой общий вывод, которые просто переключается?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:03:12 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7955
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
между 1 и последним разрядом часто есть пустоий ингтервал гашения его можно взят за отсчет

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:18:05 
Опытный кот

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Пн дек 29, 2014 11:48:22
Сообщений: 793
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Но да, "сигнал "стробирования"" смущает. Почему стробирование, когда обычной у каждого разряда свой общий вывод, которые просто переключается?

Я имел в виду условное начало перебирания разрядов в МК под этим словом.

Для вашей идеи нужно брать Atmega с тремя прерываниями минимум, а на моей 328P их только два :)
Вот и думал через регистр опрашивать, там два сигнала управления и один выход, который на вход Atmega328P можно подать.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:26:27 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
бери тини2313 там внешних прерываний много... (INT0, INT1, PCINT0-PCINT7, ICP) итого 11 штук...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:39:31 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
AonMaster, на вашей 328P полно PCINT - это тоже внешние прерывания.

Добавлено after 4 minutes 4 seconds:
Re: Декодер данных с индикатора 7 сегментного,есть ли библиотека
Ivanoff-iv, да и в 328P на каждом GPIO пине есть PCINT в общем-то, их там аж до 24-1 штук в зависимости от корпуса.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:42:29 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
а на моей 328P их только два

В смысле два? Там почти на каждой ноге прерывание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 09:59:56 
Опытный кот

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Пн дек 29, 2014 11:48:22
Сообщений: 793
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Так это не настоящие аппаратные прерывания, т.е. по ним нельзя сразу переходить на подпрограмму выполнения прерывания (в моём случае анализа входов). Вы, наверное, предлагаете просто ходить по кругу и при обнаружении изменения уровня на ноге запускать измерение. Так тоже можно, но если до этого места программа дойдёт в конце импульса зажигания сегментов, то пока будет анализировать 7 входов - с них уже могут уйти уровни, которые были весь импульс зажигания сегментов. Поэтому и думаю привязаться к аппаратному прерыванию, которых всего 2.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:17:22 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Так это не настоящие аппаратные прерывания, т.е. по ним нельзя сразу переходить на подпрограмму выполнения прерывания
Сх@яли? :shock: какраз так оно и работает, просто подпрограмма обработчик одна на всех, но кто тебе мешает в этом обработчике перед чтением сегментов определить разряд?

Добавлено after 5 minutes 1 second:
Re: Декодер данных с индикатора 7 сегментного,есть ли библиотека
Блин... теряюсь в догадках, как и для чего нужны "ненастоящие прерывания" если они существуют...? :dont_know: :))) :))) :)))

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Последний раз редактировалось Ivanoff-iv Чт фев 04, 2021 10:17:55, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:17:52 
Опытный кот

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Пн дек 29, 2014 11:48:22
Сообщений: 793
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В каких-нибудь мегах есть 4 внешних прерывания INT0 - INT4? желательно в 44-ногом корпусе максимум. Для понимания мне так проще, т.к. одно прерывание для всего порта означает, что любое изменение любой ножки этого порта вызовет его. А другие ножки того же порта у меня могут использоваться на вывод, и это, наверное, будет конфликт и мне сложно для понимания(

Сводной таблицы по AVR именно по INT - не нашёл.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:21:06 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
цепляй на PCINT провода от разрядов, как только разряд сменится - вызовется прерывание, а в прерывании первым делом опросишь эти-же самые лапки (благо функции порта у них никто при этом не отнимает) и определишь какой из разрядов горит в данный момент.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:21:45 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14055
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
При условии, что динамическая индикация поразрядная, а не посегментная, используем сигнал с анодных ключей как строб записи текущей комбинации сегментов в позиции и приращения счетчика буфера данных.
Затем дешифровка сегментного кода в тетраду двоично-десятичного и свертка результата в бинарник.
:roll:
Любая из позиций знакомест вызывает прерывание с записью в буфер текущего значения всех позиционных ключей - это будет код позиции сегментного кода данных.
Итогом - по прерыванию от позиционных ключей (по ИЛИ) защелкиваем тетраду текущего значения позиционных ключей и байт сегментного кода - таких операций 4 (или 3 - сколько разрядов), а далее обработка N байт данных.
8)


Последний раз редактировалось BOB51 Чт фев 04, 2021 10:27:19, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:25:48 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
"дешифровка сегментного кода в тетраду двоично-десятичного", "свертка в бинарник"
BOB51, сейчас AonMaster, твой пост прочитает и свалит на кортексы.... :))) :))) :))) :)))

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:28:20 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14055
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Там ничего сложного - обычные табличные преобразования...
:dont_know:
РУТИНА...
:sleep:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 10:37:46 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Цитата:
Так это не настоящие аппаратные прерывания

Впонорошку? Как в детском садике?
Есть регистр флагов. По нему определяется сработавшая нога на раз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 11:15:43 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
В каких-нибудь мегах есть 4 внешних прерывания INT0 - INT4? желательно в 44-ногом корпусе максимум. Для понимания мне так проще, т.к. одно прерывание для всего порта означает, что любое изменение любой ножки этого порта вызовет его. А другие ножки того же порта у меня могут использоваться на вывод, и это, наверное, будет конфликт и мне сложно для понимания(

Сводной таблицы по AVR именно по INT - не нашёл.

Прочитайте про прерывания PCINT. Вы полностью их неправильно понимаете. Они полностью "настоящие" и по ним происходит переход в обработчик прерываний. Более того, в atmega328p таких обработчиков 3, по группам PCINT. С 0 по 7 обрабываются в PCINT0, с 8 по 14 (15го нет) в PCINT1, с 16 по 24 в PCINT2. Более того, есть регистры PCMSK0..2, которые задают какие из ног PCINTx вызывают прерывание. Т.е. вовсе необязательно весь порт будет вызывать прерывание. Вы можете даже разнести сегменты по разным группам PCINTx, включить только по одной ноге в PCMSKx и получить в общем-то тот же эффект, что и INTx дает - одна нога, одно прерывание. Хотя это и вовсем необязательно. Можно и в одной группе PCINTx повесить 3 ноги битами из PCMSKx и просто в обработчике прерывания сразу же проверять PINxy на премет того, какая из ног изменилась. Это же элементарно.

Добавлено after 1 minute 51 second:
Re: Декодер данных с индикатора 7 сегментного,есть ли библиотека
parovoZZ, регистр флагов на прерывания, на ноги его нет в AVRках. Надо проверять сам порт.

Добавлено after 9 minutes 7 seconds:
Re: Декодер данных с индикатора 7 сегментного,есть ли библиотека
AonMaster, вот прочитайте тут, например: https://tsibrov.blogspot.com/2019/06/ar ... Interrupts
Там хоть и применительно к ардуино, всё-равно обычные вставки обработчиков прерываний используются.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 12:05:11 
Опытный кот

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Пн дек 29, 2014 11:48:22
Сообщений: 793
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
NStorm, Спасибо за ссылку, почитаю. Надо брать ардуину и пробовать :)
Только ведь прерывание будет вызываться всякий раз - и при переходе в 0, и в 1. То есть первым делом нужно будет завершать прерывание, если сработало при 0, и считывать ноги, если сработало при 1. Я так понял.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 12:27:30 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14055
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Если в подопытном изделии таки динамика на 3-4 позиции то там и одного прерывания хватит.
Правда придется внешнюю обвязку дополнительно сделать - зависит от конкретной схемы управляющих каскадов индикатора.
8)
Адуринки - Нанки должно хватить - там 4 позиционки, 8 сегментных и одно прерывание (INT0 или INT1)...
А возврат значений в терминалку ПК посылаем...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Декодер данных с индикатора 7 сегментного,есть ли библио
СообщениеДобавлено: Чт фев 04, 2021 12:38:40 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
AonMaster, просто всегда считываете нужные вам ноги и там где 1 - тот разряд и читаем. Берем скажем 328р в корпусе PDIP: https://camo.githubusercontent.com/c55b ... 542e6a7067

Скажем на порт D повесим сегменты. На PC0..3 - разряды, что соотв. PCINT8..11. Это у нас в "группе" прерываний 1, т.е. PCINT1. Врубаем прерывания:
Код:
PCICR = 1 << PCIE1;
PCMSK1 = (1 << PCINT11) | (1 << PCINT10) | (1 << PCINT9) | (1 << PCINT8);
sei();


Ну и соб-но в самом прерывании:
Код:
uint8_t portbuf, dig, flag, fullflag;
uint16_t result;

ISR (PCINT1_vect) {
  if (!flag) {
    dig = PINC & ((1 << PC3) | (1 << PC2) | (1 << PC1) | (1 << PC0)); // Читаем в буфер порт C и только с маской нужных нам ног. Т.е. это будет текущий разряд
    if(dig && !(dig & (dig-1))) { // чуть хитрости - это провирят что в dig установлен только один бит, т.е. у нас активен только 1 разряд
       portbuf = PIND; // читаем сегменты
       flag = 1; // поднимает флаг, что очередной разряд считан
    }
  }
}


void main() {
...
  if (flag && !fullflag) {
    switch (dig) {
      case 1 << PC0:
        result = 7seg_to_int(portbuf); // считали младшую цифру
        flag = 0; // очищаем флаг цифры
        break;
    }
      case 1 << PC1:
        result += 7seg_to_int(portbuf)*10; // считали 2ую цифру (десятки)
        flag = 0; // очищаем флаг цифры
        break;
    }
      case 1 << PC2:
        result += 7seg_to_int(portbuf)*100; // считали 3ую цифру
        flag = 0; // очищаем флаг цифры
        break;
    }
      case 1 << PC3:
        result += 7seg_to_int(portbuf)*1000; // считали 4ую цифру
        flag = 0; // очищаем флаг цифры
        fullflag = 1; // возвозим флаг что последняя цифра считана
        break;
    }
  }

  if (fullflag) {
    // у нас тут значит целиком число считано, можно его куда-нибудь передавать или что-то делать на его основе, потом fullflag сбрасываем после обработки, чтобы продолжить читать следующее значение
  }
}


Как-то так. Алгоритм я почти полностью вам набросал прям тут уже )
Это не готовый код, писал прям тут без проверки на валидность. Функцию перевода из значений порта 7сегментника в число 7seg_to_int оставляю за вами, как писал выше это обратная отображению из числа функция просто.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y