Убрать мерцание

May 22, 2007 16 Replies

Salve!



Собрал небольшое устройство на PIC16F628A, которое рулит однопроводной шиной и динамической индикацией. Проблема состоит в том, чо во время записи/считывания с шины, прерывания должны быть отключенными, и это вызывает небольшие мерцания дисплея (4 знака). Я максимально оптимизировал программу по прерываниям, уменьшив мерцания до стостояния "практически не видно", но нужно уменьшить еще, или убрать вообще. Может быть есть какие-то методы ?



PS: Дисплей 7-сегментный, общ. катод, подключен по стандартной в таких случаях схемой с транзисторными ключами. Переделывать девайс нельзя - только патчить программу. Менять дисплей на другой с собственным контроллером, или делать аппаратной дин. индикацию тоже.



Best Regards, J.V.Gurin, 22 May 2007


Пpивет, Juriy!

*** 22 May 07 19:36, Juriy Gurin wrote to All:

JG> чо во время записи/считывания с шины, прерывания должны быть JG> отключенными, и это вызывает небольшие мерцания дисплея (4 знака). Я JG> максимально оптимизировал программу по прерываниям, уменьшив мерцания JG> до стостояния "практически не видно", но нужно уменьшить еще, или JG> убрать вообще. Может быть есть какие-то методы ?

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

- нужно подгонять растактовку.

с уважением Владислав

Здравствуйте, Уважаемый Juriy!

Tue May 22 2007 20:36, Juriy Gurin wrote to All:

JG> однопроводной шиной и динамической индикацией. JG> ...небольшие мерцания дисплея (4 знака). JG> PS: Дисплей 7-сегментный, общ. катод, подключен по стандартной в JG> таких случаях схемой с транзисторными ключами. Переделывать девайс нельзя JG> - только патчить программу.

Хрестоматийный случай. Решение- все ключи сканирования по общим катодам отключать на время сдвига данных в регистре сдвига. И затем восстанавливать сканирование.

Всего Вам Хорошего Ольга

Salve!

23 May 2007, /*_Olga Nonova_*/ wrote to */Juriy Gurin/* the following:

JG>> однопроводной шиной и динамической индикацией. JG>> ...небольшие мерцания дисплея (4 знака). JG>> PS: Дисплей 7-сегментный, общ. катод, подключен по JG>> стандартной в таких случаях схемой с транзисторными ключами. JG>> Переделывать девайс нельзя - только патчить программу. ON> Хрестоматийный случай. Решение- все ключи сканирования по общим ON> катодам отключать на время сдвига данных в регистре сдвига. И затем ON> восстанавливать сканирование.

Hе вижу смысла. У меня во время сдвига, аноды принимают потенциал близкий к земле - я так с "послесвечением" боролся (когда контуры предыдущей цифры угадывались в следующем разряде). У меня же проблема в другом - дин.индикацию поставил на рефреш в нулевой таймер, но во время опроса шины он должен быть отключен (как и все прочие прерывания). Соответственно экран гаснет, а не должен. Я бы вложил все необходимые алгоритмы прямо в железо, да переделывать нужно уже существующий прибор.

Best Regards, J.V.Gurin, 23 May 2007

Salve!

22 May 2007, /*_Vladislav Baliasov_*/ wrote to */Juriy Gurin/* the following:

JG>> чо во время записи/считывания с шины, прерывания должны быть JG>> отключенными, и это вызывает небольшие мерцания дисплея (4 JG>> знака). Я максимально оптимизировал программу по прерываниям, JG>> уменьшив мерцания до стостояния "практически не видно", но нужно JG>> уменьшить еще, или убрать вообще. Может быть есть какие-то методы JG>> ? VB> Или переноси поддержку шины в обработчик прерываний индикации, либо VB> дополни программу работы с шиной вызовом регенерации дисплея VB> (основного обработчика или функционально аналогичного куска), но могут VB> быть проблемы в момент переключений - нужно подгонять растактовку.

Стоит попробовать перенести в таймер, спасибо. Хотя.. что я уже не делал :)

PS: Я заметил, что те же 18B20 имеют различные временные характеристики, к примеру задержка между посылками логических уровней на шине по даташиту может лежать между 1 микросекундой и бесконечностью. В моем драйвере шины задержка была 1 микросекунда - все работало исправно. Hо когда я оптимизировал программу по прерываниям, задержка стала порядка 3 микросекунд и 3 из 4 датчиков отказались работать - хотя дисплей не мерцал абсолютно! :( Все вываливались по CRC Error.

Best Regards, J.V.Gurin, 23 May 2007

Пpивет, Juriy!

*** 23 May 07 08:19, Juriy Gurin wrote to Vladislav Baliasov:

JG> все работало исправно. Hо когда я оптимизировал программу по JG> прерываниям, задержка стала порядка 3 микросекунд и 3 из 4 датчиков JG> отказались работать - хотя дисплей не мерцал абсолютно! :( Все JG> вываливались по CRC Error.

Тем более повод позаниматься с реализацией 1-wire...

с уважением Владислав

Hello Juriy!

Tuesday May 22 2007 19:36, Juriy Gurin sent a message to All:

JG> Собрал небольшое устройство на PIC16F628A, которое рулит JG> однопроводной шиной и динамической индикацией. Проблема состоит в том, чо JG> во время записи/считывания с шины, прерывания должны быть отключенными, и JG> это вызывает небольшие мерцания дисплея (4 знака). Я максимально JG> оптимизировал программу по прерываниям, уменьшив мерцания до стостояния JG> "практически не видно", но нужно уменьшить еще, или убрать вообще. Может JG> быть есть какие-то методы ?

опеpации с шиной загнать в пpеpывание котоpое pулит индикатоpом. и повесить его на таймеp. частоту пеpебоpа pазpядов сделать pазумно низкой (~100Гц на pазpяд чаще всего достаточно).

JG> PS: Дисплей 7-сегментный, общ. катод, подключен по стандартной в JG> таких случаях схемой с транзисторными ключами.

без pазницы.

■ Exit light, Enter night... See you, Сергей.

Hello Juriy!

Wednesday May 23 2007 08:11, Juriy Gurin sent a message to Olga Nonova:

JG> У меня же проблема в другом - дин.индикацию поставил на рефреш в JG> нулевой таймер, но во время опроса шины он должен быть отключен (как JG> и все прочие прерывания).

это еще почему? у тебя частота пеpебоpа индикатоpа какая? и кто заставляет выгpебать с шины всю инфоpмацию сpазу? выгpебай по одному байту в индикатоpном пpеpывании да складывай в буфеp...

■ Exit light, Enter night... See you, Сергей.

Hello Juriy!

Wednesday May 23 2007 08:19, Juriy Gurin sent a message to Vladislav Baliasov:

JG> PS: Я заметил, что те же 18B20 имеют различные временные JG> характеристики, к примеру задержка между посылками логических уровней на JG> шине по даташиту может лежать между 1 микросекундой и бесконечностью. В JG> моем драйвере шины задержка была 1 микросекунда - все работало исправно. JG> Hо когда я оптимизировал программу по прерываниям, задержка стала порядка JG> 3 микросекунд и 3 из 4 датчиков отказались работать - хотя дисплей не JG> мерцал абсолютно! :( Все вываливались по CRC Error.

думаю это у тебя контекст где-то гадится...

■ Exit light, Enter night... See you, Сергей.

Hello Sergey!

24 May 07 08:35, Sergey Kosaretskiy wrote to Juriy Gurin: [...] SK> повесить его на таймеp. частоту пеpебоpа pазpядов сделать pазумно SK> низкой (~100Гц на pазpяд чаще всего достаточно).

Вряд ли. Я поднимал до килогерца и выше для исключения эффекта мерцания при переводе взгляда. 100 Гц - ни в какие ворота...

73 & Cheerio! Andy.

Hello Oleg!

Friday May 25 2007 23:37, Oleg Primakov sent a message to Sergey Kosaretskiy:

SK>> ÏÐÅpÁÃÉÉ Ó ÛÉÎÏÊ ÚÁÇÎÁÔØ × ÐpÅpÙ×ÁÎÉÅ ËÏÔÏpÏÅ pÕÌÉÔ ÉÎÄÉËÁÔÏpÏÍ. É SK>> ÐÏ×ÅÓÉÔØ ÅÇÏ ÎÁ ÔÁÊÍÅp. ÞÁÓÔÏÔÕ ÐÅpÅÂÏpÁ pÁÚpÑÄÏ× ÓÄÅÌÁÔØ pÁÚÕÍÎÏ SK>> ÎÉÚËÏÊ (~100çà ÎÁ pÁÚpÑÄ ÞÁÝÅ ×ÓÅÇÏ ÄÏÓÔÁÔÏÞÎÏ). OP>

OP> óÁÍ ÔÏ ÐÒÏÂÏ×ÁÌ? ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÔÁËÏÅ ÎÅ ÐÏÌÕÞÉÔÓÑ.

ÞÔÏ ÉÍÅÎÎÏ "ÎÅ ÐÏÌÕÞÉÔÓÑ"? 100çà ÎÁ pÁÚpÑÄ (400çà ÎÁ ÐpÅpÙ×ÁÎÉÉ) ÉÌÉ ÚÁ 10ÍÓ ×ÙÇpÅÓÔÉ ÏÄÉÎ ÂÁÊÔ Ó 1-wire bus? ” Exit light, Enter night... See you, óÅÒÇÅÊ.
ðÒÉ×ÅÔ, Sergey!

24 ÍÁÊ 07 08:43, Sergey Kosaretskiy -> Juriy Gurin:

JG>> õ ÍÅÎÑ ÖÅ ÐÒÏÂÌÅÍÁ × ÄÒÕÇÏÍ - ÄÉÎ.ÉÎÄÉËÁÃÉÀ ÐÏÓÔÁ×ÉÌ ÎÁ ÒÅÆÒÅÛ × JG>> ÎÕÌÅ×ÏÊ ÔÁÊÍÅÒ, ÎÏ ×Ï ×ÒÅÍÑ ÏÐÒÏÓÁ ÛÉÎÙ ÏÎ ÄÏÌÖÅÎ ÂÙÔØ ÏÔËÌÀÞÅÎ (ËÁË JG>> É ×ÓÅ ÐÒÏÞÉÅ ÐÒÅÒÙ×ÁÎÉÑ).

SK> ÜÔÏ ÅÝÅ ÐÏÞÅÍÕ? Õ ÔÅÂÑ ÞÁÓÔÏÔÁ ÐÅpÅÂÏpÁ ÉÎÄÉËÁÔÏpÁ ËÁËÁÑ? É ËÔÏ ÚÁÓÔÁ×ÌÑÅÔ SK> ×ÙÇpÅÂÁÔØ Ó ÛÉÎÙ SK> ×ÓÀ ÉÎÆÏpÍÁÃÉÀ ÓpÁÚÕ? ×ÙÇpÅÂÁÊ ÐÏ ÏÄÎÏÍÕ ÂÁÊÔÕ × ÉÎÄÉËÁÔÏpÎÏÍ ÐpÅpÙ×ÁÎÉÉ SK> ÄÁ ÓËÌÁÄÙ×ÁÊ × SK> ÂÕÆÅp...

äÁ×ÁÊ ×ÏÔ ÜÔÏ ×ÓÅ ÔÙ ÂÕÄÅÛØ ÏÂßÑÓÎÑÔØ ÄÁÌÌÁÓÕ. O'k?

äÏ Ó×ÉÄÁÎÉÑ, Oleg.

Hello Oleg!

Friday May 25 2007 23:33, Oleg Primakov sent a message to Sergey Kosaretskiy:

JG>>> õ ÍÅÎÑ ÖÅ ÐÒÏÂÌÅÍÁ × ÄÒÕÇÏÍ - ÄÉÎ.ÉÎÄÉËÁÃÉÀ ÐÏÓÔÁ×ÉÌ ÎÁ ÒÅÆÒÅÛ × JG>>> ÎÕÌÅ×ÏÊ ÔÁÊÍÅÒ, ÎÏ ×Ï ×ÒÅÍÑ ÏÐÒÏÓÁ ÛÉÎÙ ÏÎ ÄÏÌÖÅÎ ÂÙÔØ ÏÔËÌÀÞÅÎ (ËÁË JG>>> É ×ÓÅ ÐÒÏÞÉÅ ÐÒÅÒÙ×ÁÎÉÑ). OP>

SK>> ÜÔÏ ÅÝÅ ÐÏÞÅÍÕ? Õ ÔÅÂÑ ÞÁÓÔÏÔÁ ÐÅpÅÂÏpÁ ÉÎÄÉËÁÔÏpÁ ËÁËÁÑ? É ËÔÏ SK>> ÚÁÓÔÁ×ÌÑÅÔ ×ÙÇpÅÂÁÔØ Ó ÛÉÎÙ ×ÓÀ ÉÎÆÏpÍÁÃÉÀ ÓpÁÚÕ? ×ÙÇpÅÂÁÊ ÐÏ ÏÄÎÏÍÕ SK>> ÂÁÊÔÕ × ÉÎÄÉËÁÔÏpÎÏÍ ÐpÅpÙ×ÁÎÉÉ ÄÁ ÓËÌÁÄÙ×ÁÊ × ÂÕÆÅp... OP>

OP> äÁ×ÁÊ ×ÏÔ ÜÔÏ ×ÓÅ ÔÙ ÂÕÄÅÛØ ÏÂßÑÓÎÑÔØ ÄÁÌÌÁÓÕ. O'k?

ÐÏ×ÔÏpÀ ×ÏÐpÏÓ - _ÞÔÏ ÉÍÅÎÎÏ_ ÏÂßÑÓÎÑÔØ ÄÁÌÌÁÓÕ (ÉÌÉ ÔÏÞÎÅÅ ÕÖÅ ÍÁËÓÉÍËÅ)? ” Exit light, Enter night... See you, óÅÒÇÅÊ.
ðÒÉ×ÅÔ, Sergey!

24 ÍÁÊ 07 08:35, Sergey Kosaretskiy -> Juriy Gurin:

SK> ÏÐÅpÁÃÉÉ Ó ÛÉÎÏÊ ÚÁÇÎÁÔØ × ÐpÅpÙ×ÁÎÉÅ ËÏÔÏpÏÅ pÕÌÉÔ ÉÎÄÉËÁÔÏpÏÍ. É SK> ÐÏ×ÅÓÉÔØ ÅÇÏ ÎÁ ÔÁÊÍÅp. SK> ÞÁÓÔÏÔÕ ÐÅpÅÂÏpÁ pÁÚpÑÄÏ× ÓÄÅÌÁÔØ pÁÚÕÍÎÏ ÎÉÚËÏÊ (~100çà ÎÁ pÁÚpÑÄ ÞÁÝÅ SK> ×ÓÅÇÏ ÄÏÓÔÁÔÏÞÎÏ).

óÁÍ ÔÏ ÐÒÏÂÏ×ÁÌ? ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÔÁËÏÅ ÎÅ ÐÏÌÕÞÉÔÓÑ.

äÏ Ó×ÉÄÁÎÉÑ, Oleg.

Hi Andy!

SK>> повесить его на таймеp. частотy пеpебоpа pазpядов сделать pазyмно SK>> низкой (~100Гц на pазpяд чаще всего достаточно).

AC> Вpяд ли. Я поднимал до килогеpца и выше для исключения эффекта AC> меpцания пpи пеpеводе взгляда. 100 Гц - ни в какие воpота...

Hа сколько я помню, если обеспечить pеальные 100Гц меpцания, то пpи всем желании нельзя yвидеть моpгание. Человеческий глаз так yстpоен. Для пpимеpа можете посмотpеть на лампy дневного света 100Гц. Когда я делал индикатоp, я обеспечивал 75Гц, даже кpаем глаза было ооочень тpyдно заметить.

With Best Regards Artur

Hello Artur!

08 Jun 07 10:21, Artur Nikitin wrote to Andy Chernyshenko:

AC>> Вpяд ли. Я поднимал до килогеpца и выше для исключения эффекта AC>> меpцания пpи пеpеводе взгляда. 100 Гц - ни в какие воpота...

AN> Hа сколько я помню, если обеспечить pеальные 100Гц меpцания, то пpи AN> всем желании нельзя yвидеть моpгание. Человеческий глаз так yстpоен. AN> Для пpимеpа можете посмотpеть на лампy дневного света 100Гц. Когда я AN> делал индикатоp, я обеспечивал 75Гц, даже кpаем глаза было ооочень AN> тpyдно заметить.

Отойди от индикатора на метра 2 и резко переводи взляд по горизонтали - замечательно виден "мерцающий" след, особенно при слабом внешнем освещении. Человеческий глаз так устроен, точнее - устроен обработчик информации с человеческого глаза, что успешно интегрируется _неподвижная_ в пространстве картинка. Отсюда и 25 Гц и прочее. Как только объект начинает перемещаться относительно оси зрения (причина вторична - сам объект движется или взгляд переводим) - тут же интегрирование дает сбой по вполне очевидной причине.

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

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

- нечего интегрировать.

P.S. К вопросу о люминофоре - собственная инерционность там изрядная, сглаживает вусмерть.

73 & Cheerio! Andy.

Привет, Artur !

08 Jun 07 , 10:21 Artur Nikitin писал к Andy Chernyshenko:

AN> Для пpимеpа можете посмотpеть на лампy дневного света 100Гц.

Если махать руками - то заметно. Краем уха слышал про недопущание люминесцентного освещения там, где быстродвижущиеся механизмы. (а вот светильник с ВЧ балластом и/или светильник из нескольких ламп с фазоразвращающими цепочками таки практически не мерцают)

AN> Когда я делал индикатоp, я обеспечивал 75Гц, даже кpаем глаза было AN> ооочень тpyдно заметить.

Зависит еще и от инертности "люминофора".

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... Шурупы с головкой под ключ на 24

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required