Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 08.06.2011, 16:15  
poltergeist
Частый гость
 
Аватар для poltergeist
 
Регистрация: 24.03.2009
Сообщений: 45
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poltergeist на пути к лучшему
По умолчанию Эффективная индикация амплитуды сигнала на 7-сегментниках

Привет всем.
Микроконтроллер в ходе работы измеряет некий сигнал, амплитуду которого нужно показать в процентах (максимум известен) на трех семисегментных индикаторах, подключенных через сдвиговые регистры. Кроме этоко МК делает еще много работы, а сигнял постоянно меняется и нао довольно часто обновлять показания на индикаторах. Вопрос - как наиболее эффективно заставить МК вычислять сколько процентов в данный момент сигнал составляет от известного максимума и отсылать все это на сдвиговые регистры?
Самое банальное решение это делить на 100 - если получится 1, то показать единицу в левом индикаторе; делить на 10 - получившийся резалт показывать в среднем индикаторе; брать остаток деления на 10 и показывать его в правом индикаторе. Реализуется одним if, делением на 10, switch, затем остаток от деления на 10 и еще раз switch.
Может можно попроще?
Спасибо.
Реклама:
__________________
Мой сайт - www.techno-mind.ru - самоделки, технологии, тюнинг и др.
poltergeist вне форума  
Непрочитано 08.06.2011, 16:47  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Сообщение от poltergeist Посмотреть сообщение
Может можно попроще?
Можно проще и быстрее. Надо создать в памяти таблицу из 100 двухбайтовых элементов, в которую записать все возможные показания индикатора от 0 до 100. Первый байт - сегменты первого индикатора, второй байт - второй индикатор + 1бит для зажигания "1" в третьем. Потом просто прыгать на нужный элемент таблицы и сразу сдвигать полученную пару байтов в регистры индикатора.
Этот способ хорош ещё тем, что при некотором расширении таблицы можно выводить не только цифры, но и текстовые символы, типа "Err", "---" и т.д.

Последний раз редактировалось Yurkin2007; 08.06.2011 в 16:50.
Yurkin2007 вне форума  
Непрочитано 08.06.2011, 16:52  
mobil2005
Прописка
 
Аватар для mobil2005
 
Регистрация: 19.07.2006
Адрес: Russia,Yekaterinburg
Сообщений: 184
Сказал спасибо: 12
Сказали Спасибо 75 раз(а) в 43 сообщении(ях)
mobil2005 на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Сообщение от poltergeist Посмотреть сообщение
довольно часто обновлять
Нет такого временного промежутка как довольно часто.
Чисто физиологически для большинства людей будет жутко дискомфортно смотреть на мельтешащие цифры. А при длительности индикации менее 100 мс, еще и редкий человек сможет прочитать хотя бы 4-5 значений подряд. А если там будет "довольно часто" скакать 1-2-3-2-1-0 то просто неприятно будет.
Поэтому для индикации подобных процессов рациональнее использовать не 7сегментный цифровой индикатор, а светодиодные линейки...
__________________
Разработка электроники на заказ, написание ПО для ПК и МК.Обращайтесь в личку.
mobil2005 вне форума  
Непрочитано 08.06.2011, 17:01  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Деление на 10/100 - весьма "тяжелая" операция. Тут вопрос в диапазоне входных данных. Вполне можно обойтись обычным вычитанием. На форуме уже была подобная тема.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 08.06.2011, 17:20  
poltergeist
Частый гость
 
Аватар для poltergeist
 
Регистрация: 24.03.2009
Сообщений: 45
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poltergeist на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

mobil2005, вы правы. Индикация будет происходить около 5 раз в секунду.

MisterDi, диапазон все время меняется. Система самообучается, т.е. каждый раз обнаружив амплитуду, которая больше, чем система когда-либо видела ранее, то она переобучается, и ведет отсчет исходя из нового максимума.
На форуме искал, но не нашел к сожалению. Возможно тема называется не совсем понятно. Не припомните как называется?
Что именно имеется ввиду под вычитанием? Можно немного поподробнее?

Yurkin2007, т.е. просто массив данных. Да это идея. Надеюсь все это влезет во флеш память. Спасибо за идею.
__________________
Мой сайт - www.techno-mind.ru - самоделки, технологии, тюнинг и др.
poltergeist вне форума  
Непрочитано 08.06.2011, 17:47  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Входные данные это всегда какой-то диапазон. Если это АЦП то 8-10-.....-ХХХ бит, соответственно зависимости от размера входных данных по-разному нужно будет обрабатывать входной поток. Если диапазон широкий, то без деления не обойтись К сожалению вспомнить точное название старой темы не могу.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 08.06.2011, 18:41  
poltergeist
Частый гость
 
Аватар для poltergeist
 
Регистрация: 24.03.2009
Сообщений: 45
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poltergeist на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

MisterDi, не, не АЦП. Все сложнее. На вход МК приходит цифровой сигнал с постоянно меняющейся частотой и скважностью. МК должен мерить сколько времени за 200мс сигнал является логич. единицей. Соответственно таймер, и прерывания по нараст. и спад. фронтам. И потом по показаниям каунтера надо отображать. Каунтер считает с частотой 125000Гц.
В первом посте назвал все это амплитудой, потому как не хотел все усложнять - вопрос то мой был не по приципу измерения чего либо, а по принципу отображения.
__________________
Мой сайт - www.techno-mind.ru - самоделки, технологии, тюнинг и др.
poltergeist вне форума  
Непрочитано 08.06.2011, 19:06  
mobil2005
Прописка
 
Аватар для mobil2005
 
Регистрация: 19.07.2006
Адрес: Russia,Yekaterinburg
Сообщений: 184
Сказал спасибо: 12
Сказали Спасибо 75 раз(а) в 43 сообщении(ях)
mobil2005 на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Сообщение от poltergeist Посмотреть сообщение
В первом посте назвал все это амплитудой, потому как не хотел все усложнять - вопрос то мой был не по приципу измерения чего либо, а по принципу отображения.
В чем беда то? Не понимаю.
Если у вас проблемы с тем что во время вывода счетчик перестает считать значит организовали что-то не так.
Индикация у вас статическая. А значит проблем в принципе быть не должно.
Где-то по прерыванию ваш счетчик монотонно считает импульсы, по таймеру раз в 200 мс устанавливается флаг обновления индикатора, и в темповую переменную сохраняете значение счетчика.
В майне в цикле постоянно анализируется флаг отрисовки и как только он установится начинается процесс обновления. Во время обновления счетчик как считал так и считает.
Т.е. прерывания не запрещаете. Ибо даже если в момент записи в регистр произойдет прерывание то ничего не случится кроме задержки на долю мс. которая видимым образом будет незаметна.
Вот если индикация динамическая, тут неможко посложнее. Но у вас вроде не этот случай.
__________________
Разработка электроники на заказ, написание ПО для ПК и МК.Обращайтесь в личку.
mobil2005 вне форума  
Непрочитано 08.06.2011, 19:14  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

Сообщение от mobil2005 Посмотреть сообщение
В чем беда то? Не понимаю.
Как я понял, вопрос г-на Полтергейста был: как проще отобразить десятичное число от 0 до 100 на трёхразрядном семисегментом индикаторе ...
Yurkin2007 вне форума  
Непрочитано 08.06.2011, 19:51  
poltergeist
Частый гость
 
Аватар для poltergeist
 
Регистрация: 24.03.2009
Сообщений: 45
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poltergeist на пути к лучшему
По умолчанию Re: Эффективная индикация амплитуды сигнала на 7-сегментниках

mobil2005, беды нет никакой. Просто, как сказал Yurkin2007, я просто хочу организовать весь процесс как можно проще, чтобы все функции, которые выполняет МК (а их еще немало - обработка кнопок, котоые жмет юзер, индикация на шкалу от 0 до 10 светодиодов, запись и чтение из ЕПРОМ иногда и т.п.) успевали отрабатываться. Вот и попросил совета, как сократить до минимума нагрузку на МК при расчетах числа, которое надо отобразить на индикаторе, и как проще произвести само отображение.
Кстати, насчет расчетов. Можно ли их тоже как то упростить? Т.е. если например МК помнит, что максимум за 200мс может быть, скажем 123442 тиков таймера, а за последние 200мс насчиталось 23542, то... Даже если заранее, при инициализации МК, заполнить таблицу, что от 0 до 1234 клоков, это 1%, от 1234 до 2468 это 2% и т.д. все равно будет сложно... Хм, туплю...
__________________
Мой сайт - www.techno-mind.ru - самоделки, технологии, тюнинг и др.

Последний раз редактировалось poltergeist; 08.06.2011 в 19:55.
poltergeist вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как измерить изменение амплитуды aniza Электроника - это просто 36 04.03.2010 23:48


Часовой пояс GMT +4, время: 22:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot