Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос про динамическую индикацию!
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн ноя 17, 2025 07:51:33

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


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



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 08:21:12 
Родился

Зарегистрирован: Ср окт 15, 2025 21:42:15
Сообщений: 2
Рейтинг сообщения: 0
Здравствуйте! Я начинающий. Прошу помощи старших коллег по следующему вопросу: Пишу код под атмега8 для вывода на 4х разрядном семисегментнике числа 9578, проблема вот в чем,
при попытке вывести 9578 по отдельности на 4х одноразрядных семисигментниках все получается как надо, но при попытке отобразить его на 4х или 6и разрядном семисегментнике вылезает какая то билеберда!
Может это протеус глючит? Или я...Сталкивались ли с такой проблемой? У меня ничего не выходит.


Вложения:
Proteus+AVR.zip [37.02 KiB]
Скачиваний: 35
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 11:12:30 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
да нормально показывает))

Изображение

:tea:
лучше сразу выкладывать исходник... отдельно.))
Вложение:
main.c [2.93 KiB]
Скачиваний: 30

:roll:

Добавлено after 36 minutes 45 seconds:
с динамической индикацией не сталкивался...
от динамической индикации в глазах рябит))
:shock:
мне нравится статическая))
8)

зато я сталкивался с синхронизацией...

в исходнике прерывание таймера не синхронизировано с другой программой...
это не правильно.
:tea:


Вложения:
Screenshot_1.jpg [146.75 KiB]
Скачиваний: 424
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 11:28:32 
Родился

Зарегистрирован: Ср окт 15, 2025 21:42:15
Сообщений: 2
Рейтинг сообщения: 0
Ничего не понял) "в исходнике прерывание таймера не синхронизировано с другой программой...
это не правильно" с какой другой программой?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 12:04:28 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
-в программе есть главная функция int main(void).
-в программе есть функция перевода числа в разряды void chislo(unsigned int result).
-в программе есть функция прерывания таймера ISR(TIMER0_OVF_vect).
и всё это не синхронизировано.
:tea:
см. Семафор (англ. semaphore) в программировании.
:)

подробнее...
:roll:

1 -в главной функции int main(void) мы вызываем функцию void chislo(unsigned int result) и передаём число 9578.
Код:
   while (1)
    {
      chislo(9578);
    }


2 -в функции void chislo(unsigned int result) мы переводим число в разряды.
Код:
void chislo(unsigned int result)
{
   res_1000 = result / 1000;
   res_100 = result % 1000 / 100;
   res_10  = result % 100/10;
   res_1   = result % 10;
}



3 - в прерывании таймера мы выводим разряды на индикатор.
Код:
ISR(TIMER0_OVF_vect)
{
   if (++z > 4) {z = 1;}
      
   if (z==1)
   {
      PORTB &= ~(1<<2);
      PORTB |= (1<<5) | (1<<4) | (1<<3);
      obrabotka(res_1000);
   }
   if (z==2)
   {
      PORTB &= ~(1<<3);
      PORTB |= (1<<5) | (1<<4) | (1<<2);
      obrabotka(res_100);
   }
   if (z==3)
   {
      PORTB &= ~(1<<4);
      PORTB |= (1<<5) | (1<<3) | (1<<2);
      obrabotka(res_10);
   }
   if (z==4)
   {
      PORTB &= ~(1<<5);
      PORTB |= (1<<4) | (1<<3) | (1<<2);
      obrabotka(res_1);
   }
}

и всё бы ничего... вот только есть обна проблемка)) нет синхронизации с таймером.
:shock:

может случиться так что прерывание таймера сработает до того как мы переведём число в разряды.
смотрим что получится...

вызываем в функцию void chislo(unsigned int result)...

Код:
void chislo(unsigned int result)
{
   res_1000 = result / 1000;
   res_100 = result % 1000 / 100;
       
        // в этом месте сработало прерывание таймера.
        // уходим в прерывание таймера.

     ISR(TIMER0_OVF_vect)
    {
   if (++z > 4) {z = 1;}
      
   if (z==1)
   {
      PORTB &= ~(1<<2);
      PORTB |= (1<<5) | (1<<4) | (1<<3);
      obrabotka(res_1000);
   }
   if (z==2)
   {
      PORTB &= ~(1<<3);
      PORTB |= (1<<5) | (1<<4) | (1<<2);
      obrabotka(res_100);
   }
   if (z==3)
   {
      PORTB &= ~(1<<4);
      PORTB |= (1<<5) | (1<<3) | (1<<2);
      obrabotka(res_10);
   }
   if (z==4)
   {
      PORTB &= ~(1<<5);
      PORTB |= (1<<4) | (1<<3) | (1<<2);
      obrabotka(res_1);
   }
    }

        // выходим из прерывания таймера.
        // продолжаем переводить число в разряды.
       
        res_10  = result % 100/10;
   res_1   = result % 10;
}


в итоге на индикаторе мы увидим неправильное число))
это не правильно.
:tea:


Последний раз редактировалось roman.com Чт окт 16, 2025 12:10:56, всего редактировалось 3 раз(а).

Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 12:10:44 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Пн сен 15, 2025 08:43:23
Сообщений: 253
Рейтинг сообщения: 0
Внешне код рабочий, хоть и страшный
Вложение:
1.png [40.65 KiB]
Скачиваний: 24

Ладно, опустим комментарии на русском (хоть это странно), но названия функций…
Ну и главный вопрос: зачем в суперлупе постоянно молотить преобразование одного и того же числа? Можно же было просто вот так сделать:
Код:
chizlo(9578);
while(1){}


Добавлено after 2 minutes 31 second:
roman.com, ну, в данном случае у него проблем не будет, т.к. он постоянно молотит одно и то же.
Да и вообще, это не страшно для динамической индикации: момент смены числа будет достаточно быстрым, глаз просто не заметит "засады".

_________________
Windows must die! And the users of this crap should either become smarter or become janitors.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 12:19:32 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
Ладно, опустим комментарии на русском (хоть это странно), но названия функций…

пофигу)) кому как удобней.
главное что всем понятно.
:tea:
linux_rulezz писал(а):
это не страшно для динамической индикации: момент смены числа будет достаточно быстрым, глаз просто не заметит "засады".

страшно... не страшно... это вопрос десятый.))
главное что это не правильно.
:tea:

программа может например остановиться в любом месте...
или МК может уйти в сон в любом месте программы... "sleep"...
или МК может просто тупо зависнуть в любом месте программы... while(1){};
или... ещё может быть миллион вариантов))

главное что в любом случаев (из миллиона вариантов) на индикаторе мы увидим последнее обработанное число...
и с высокой вероятностью это число будет не 9578.
это не правильно.
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 12:23:19 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Пн сен 15, 2025 08:43:23
Сообщений: 253
Рейтинг сообщения: 2
Цитата:
кому как удобней

Ну вот когда я вижу китайский код с иероглифами в комментариях, возникает желание кому-нибудь двинуть… Ну неужели на международном языке нельзя писать? Сразу к культуре надо приучаться. И функции называть не "zafiga4it_otpravku", а, скажем, "send_data".

_________________
Windows must die! And the users of this crap should either become smarter or become janitors.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 13:24:21 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
"zafiga4it_otpravku"...
да можно и так.))
:tea:
при попытке отобразить его на 4х или 6и разрядном семисегментнике вылезает какая то билеберда!

а где 6-ти разрядный семисегментник ?
:roll:

Добавлено after 16 minutes 41 second:
а ещё можно сделать так...

Изображение

или так...

Изображение

но это всё динамическая индикация...
я бы так делать не стал))
:tea:


Вложения:
Screenshot_2.jpg [76.79 KiB]
Скачиваний: 313
Screenshot_1.jpg [93.83 KiB]
Скачиваний: 312
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 13:39:30 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Пн сен 15, 2025 08:43:23
Сообщений: 253
Рейтинг сообщения: 0
roman.com, статическая индикация последнее время "не в моде". Взять те же светодиодные панели: там мало того, что для изменения яркости отдельного светодиода нужно долбить индикатор с частотой 16-24Гц, так еще и индикатор фактически поделен на 4 квадранта! И каждый обслуживается поочередно. И ничего, вполне себе работает. Я шутки ради делал "игровую приставку" (арканоид, тетрис и змейка) на STM32F103. Видео.

_________________
Windows must die! And the users of this crap should either become smarter or become janitors.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 13:46:05 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
повторяю...
roman.com писал(а):
от динамической индикации в глазах рябит))

мне нравится статическая))

поэтому далем так...

сдвиговый регистр + регистр буфера + блок синхронизации (на схеме не показан).

Изображение

-индикация статическая. в глазах не рябит))
8)
-для индикатора используется всего один вывод МК. экономия выводом МК))
:)
класс ! ))
:tea:


Вложения:
Screenshot_1.jpg [62.23 KiB]
Скачиваний: 304
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 14:11:08 
Мудрый кот

Карма: 25
Рейтинг сообщений: 470
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1739
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Оффтоп: roman.com, всегда можно сделать лучше :П. Например так:

Изображение

СпойлерНо станет похоже на анекдот: "Хорошие часы! (А батарейки: в чемоданах)".
Изображение


Последний раз редактировалось veso74 Чт окт 16, 2025 14:14:27, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 14:12:16 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1484
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15260
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
https://img.radiokot.ru/files/20529/1st7ni12lm.jpg
https://img.radiokot.ru/files/20529/1st7nh5zvs.jpg
Та же динамическая индикация...
От такого индикатора "в глазах рябит"?
:wink:
При правильно организованной работе "побочных эфектов" у динамики не будет.
Вот только сделать это без ущерба основной программе не всегда удачно получается.
Желательно иметь свободный таймер и блок обслуживания развертки отображения по прерыванию плюс пару буферных массивов размером по количеству знакомест дисплея.
На сегодня при наличии большого количества готовых модулей индикаторов "с мозгами" как бы данный вопрос уже давно подзабыт...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 14:18:18 
Мудрый кот

Карма: 25
Рейтинг сообщений: 470
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1739
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Да, MAX7219 работает с высокой частотой обновления LED, мерцания не видно, легко управляется, три провода.
В кодировйки даже ATtiny13 легко справляется.

Изображение

Динамическое управление LED по RF очень мешает, но это понятно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 14:30:15 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1484
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15260
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для снятия "мерцания" достаточно и 62 Герца выставить...
Там просто рутинные операции не забыть выполнять. Плюс стабильность развертки, не зависящая от выполнения основной программы.
"Трещит" конечно весьма (для радиочастот при мощной нагрузке) - но до 8 индикаторов вполне свободно можно соорудить. Большее количество уже может и проиграть статике. Но только не в вопросах энергопрожорливости - там статика в явном проигрыше.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 14:45:46 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
veso74 писал(а):
всегда можно сделать лучше :П. Например так:

там нет элемента XOR.
а это главный элемент. без него ничего работать не будет.
:tea:
BOB51 писал(а):
От такого индикатора "в глазах рябит"?

о любого...

-у меня на столе LED часы мерцают...
-гуляя по ночному городу "в глазах рябит"...

Изображение

-особенно бесит "бегущая строка"...

Изображение

:facepalm:
BOB51 писал(а):
в вопросах энергопрожорливости - там статика в явном проигрыше.

вопрос спорный...
:roll:
хотя... когда вопрос касается комфорта... и здоровья... остальное уже не важно))
:tea:


Вложения:
Screenshot_2.jpg [44.64 KiB]
Скачиваний: 238
Screenshot_1.jpg [106.06 KiB]
Скачиваний: 238
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 15:20:21 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1484
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15260
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Динамическую индикацию надо уметь готовить .
Особо в случае рекламных щитов...
:))
Да и на сегодня огромное количество "шустроумных" светиков в тех экранах применяется - а то уже не динамика в чистом виде, а построчно/покадровый вывод (аналогия телевизионной картинки).
Там другие "особенности" основанные на специфике восприятия глазом "мультипликации" у усредненного человечика.
Кстати... вариант "заморозки" изображения при резком повороте головы обычное явление.
Но то совсем не "мерцание" (несколько иной механизм восприятия).
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 15:38:21 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Пн сен 15, 2025 08:43:23
Сообщений: 253
Рейтинг сообщения: 0
Вот насчет светодиодных панелей, специально предназначенных для "бегущей строки", все время недоумевал: почему до сих пор нет для них стандартных параллельных буферов? Скажем, на 32 пикселя по вертикали. Соединяешь на плате 128 таких буферов - вуаля, у тебя "бегущая строка" в 128 пикселей шириной и 32 высотой. Подключаешь через параллельный интерфейс следующий - и побежала строчка дальше.
МК мог бы этой фигней (правда, без изменения яркости светодиодов) по трем проводам управлять: такт для сдвигового регистра (заполняющего столбцы), данные для него и такт для сдвига столбцов. И, как тут некоторые любят, была бы "чисто статическая" индикация (покуда не сдвинешь дальше).

_________________
Windows must die! And the users of this crap should either become smarter or become janitors.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 15:43:59 
Друг Кота
Аватар пользователя

Карма: 31
Рейтинг сообщений: 857
Зарегистрирован: Пт сен 10, 2021 15:19:36
Сообщений: 5991
Откуда: Протвино
Рейтинг сообщения: 0
h
При правильно организованной работе "побочных эфектов" у динамики не будет.
Вот только сделать это без ущерба основной программе не всегда удачно получается.
Желательно иметь свободный таймер и блок обслуживания развертки отображения по прерыванию плюс пару буферных массивов размером по количеству знакомест дисплея.


для светодиодов допустим оочень широкий диапазон частот разверток
~ 50Hz...500kHz частоты полных циклов. :)
так что отдельный таймер обычно не нужен, достаточно общего таймера системных процессов
обычно ж и другие алгоритмы требуют выравниваний своих задач по таймерам.

чтоб не было интерференционных мельканий при низких частотах разверток - надо синхронизировать с 50Hz. (ну или 60Hz, если вы иноземный кот :) )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 16:07:16 
Друг Кота

Карма: -1
Рейтинг сообщений: 69
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8811
Откуда: .ru
Рейтинг сообщения: 0
BOB51 писал(а):
Динамическую индикацию надо уметь готовить .

не знаю как её готовить... она всё равно будет мерцать...

сделал себе дома гирлянду... а она мерцает... через всякие тринисторы...

Изображение

:facepalm:

в итоге.. всё повыкидывал и подключил напрямую от стабилизированного источника питания постоянного тока.
теперь просто светит... вместо освещения))
больше ничего не мерцает и не раздражает))
8)

Добавлено after 5 minutes 51 second:
а вообще... если сравнивать разные лампы... то приятней всего лампа накаливания...

Изображение

поэтому в доме лучше всего использовать именно лампа накаливания... причём много... для лучшего распределения света... без теней... и лучше на постоянном токе... чтоб не мерцали...

Изображение

:tea:


Вложения:
Screenshot_3.jpg [74.86 KiB]
Скачиваний: 196
Screenshot_4.jpg [24.55 KiB]
Скачиваний: 198
Screenshot_2.jpg [47.05 KiB]
Скачиваний: 207
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос про динамическую индикацию!
СообщениеДобавлено: Чт окт 16, 2025 16:12:59 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1484
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15260
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
AlexS4 писал(а):
...

для светодиодов допустим оочень широкий диапазон частот разверток
~ 50Hz...500kHz частоты полных циклов. :)... )

Частотный диапазон светика не одно и то же, что и допустимый интервал свечения позиции в строке развертки.
Значительное уменьшение времени индикации требует увеличения яркости светика.
Нужен компромисс как по параметрам самого светика так и по времени индикации позиции в блоке развертки.
Второй параметр - время на смену данных в позиции (скорость загрузки регистров).
Собственно время индикации позиции не может быть меньше времени на ее загрузку.
Хорошо, ежли позиций до 8 и параллельная загрузка в два регистра.
А если допустим 8 строк по 64 точки? (или более длинная строка)
:wink:


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

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


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

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


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

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


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