ARDUINO Часы на ГРИ v2. Обсуждение проекта

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Sergo_ST, как и любое другое прерывание оно блокируется другим прерыванием, к тому же, как отмечалось, нетермостабильно, что мы выигрываем от этого? Тогда уж проще тактировать от SQW выхода DS3231 или любого другого выхода.
Динамическая индикация была бы крайне проста, не будь никаких эффектов отображения. В принципе, в первой версии она даже не на прерываниях отлично работает. Но как только возникают попытки динамически изменять яркость - всё сразу усложняется. Ну, например, для 6-лампового варианта и 50Гц мерцания, частота переключения между лампами уже возрастает до 300Гц. Если допустить, что для эффекта нужно хотя бы 8 уровней яркости, частота контроля яркости возрастает до 2400кГц (около 417мкс). У Гайвера на это накладывается изменение яркости день/ночь и частота, если не ошибаюсь 7,8кГц (около 128мкс). Отсюда и прожорливость.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
992
831
@poty, Выигрываемый мы как раз тем, что более функциональный таймер освобождаем от элементарной задачи, и например можем его использовать для генерации звука с разными частотами(даже мелодии делать). Сделать внешнее прерывание с дс-ки было бы конечно хорошо, но это требует доработки(хоть и всего один проводок подпаять).
Возвращаясь к динамической индикации, мой вариант может спокойно работать на частоте в двое(а то и выше) больше и имеет 255 значений шим диммирования для каждой лампы отдельно.
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Sergo_ST, посмотрим, что из этого выйдет. Пока, к.м.к., не учтены все ограничения платформы. К тому же переделка аппаратной части для повышения частоты даже в 2 раза - существенно больше, чем один проводок от SQW.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
992
831
@poty, Железо трогать не нужно, динамическая индикация будет работать без проблем, уже проверено, делал для @psyx86 эффект динамического наложения двух цифр с плавным разгоранием одной и затуханием второй цифры для часов на одном индикаторе. Единственная разница с новой функцией в том что я в несколько раз уменьшил время нахождения в прерывании за счет прямой записи в порт дешифратора.

Просто ещё проблема с SQW в том, что единственный свободный пин с полноценным прерыванием это D2, но он в стандартной схеме используется для бузера. И вот дилемма, или переносить бузер на D13, или мириться с двойным прерыванием порта от D13...

В общем надо подумать, но я пока склоняюсь ближе к таймеру 0...
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Sergo_ST, не знаю, по какой схеме делал часы @psyx86, но при использовании оптронов повышение частоты невозможно. Цикл включения/выключения оптронов длится примерно 80мкс. Если Вы говорите, что повысили частоту в 2 раза (от 7,8кГц), то период получается 64мкс, что уже меньше рабочего цикла оптронов. Я такой вариант исследовал. До какого-то предела он действительно действует (за счёт того, что оптрон открывается не на полную, но всё равно хватает для поджига индикатора), но потом начинаются заметные мерцания (высокоскоростной камеры нет, предполагаю либо влияние ёмкости самих индикаторов, либо нестабильность поджига). Кстати, ровно тоже самое происходит и при использовании частоты 20кГц и выше с транзисторным управлением: ёмкость просто не даёт индикаторам зажечься.
Просто ещё проблема с SQW в том, что единственный свободный пин с полноценным прерыванием это D2, но он в стандартной схеме используется для бузера. И вот дилемма, или переносить бузер на D13, или мириться с двойным прерыванием порта от D13...
Ну, если мы отталкиваемся от оригинальной схемы, то там по факту бузер-то никак не задействован, зато есть TX1/RX1 и упомянутый D13, которые можно легко использовать (на них ничего не подключено). Посадочное место от бузера использовать для впаивания как раз того самого проводка от SQW, а бузер взять с проводками и подпаяться напрямую.
С другой стороны, если Вы утверждаете, что использовали ШИМ, то он должен быть подключен к определённым пинам, явно не тем, что используются в оригинальной плате. Можно, конечно, использовать программный ШИМ, но чем он тогда будет лучше того, что сейчас используется в прерывании? Аппаратный ШИМ также ограничен (для нано) 6 выходами. Если мы говорим о 4-х ламповом варианте, то можно использовать 4 аппаратных ШИМ выхода для управления анодами, один - для DC/DC преобразования, один остаётся либо для подсветки, либо для точки (и все библиотеки придётся переписывать). Для 6-ти лампового варианта это уже не прокатит и нужно использовать выделенный DC/DC как в первой версии.
Просто геморрой с таймером 0 не стоит "проблем" с подпайкой одного провода. К тому же есть уже платы, который разведены с учётом SQW (уже упоминавшаяся @adm503).
 

Sergo_ST

★★★★★★✩
15 Мар 2020
992
831
@poty, Да, забыл что у него на мосфете... Но сейчас у нас 4 лампы перебираются за +-80Гц, а будут за +-2кГц. Но если как вы говорите что приод вкл/выкл оптрона 80мкс, то тогда думаю нужно будет снизить перебор до 1кГц и ограничить шим до 40 единиц во избежание фантомных цифр....
Про поднятие частоты, имел ввиду что её можно будет увеличить без потери производительности процессора на прерываниях.

Шим программный конечно имелся ввиду, хардверных на всё не хватит, тогда переделывать придется распиновку...
Лучше он тем, что мы не висим кучу времени в прерывание как сейчас...
Лично я не вижу никакого гемороя с таймером, просто в таком случае прошивка будет более универсальнее в плане залил и зыбыл, без каких-либо переделок.
 
Изменено:

groove

✩✩✩✩✩✩✩
22 Мар 2021
3
0
Подскажите пожалуйста, пытаюсь завести часы IN12 на SN74141N вместо К155ИД1. У меня горят одновременно сразу несколько цифр, читал в этой ветке что у всех кто пробовал тоже не завелось. Может кто-то объяснить почему работает на К155ИД1 но не работает на SN74141N если они должны быть абсолютно идентичны?
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
Про поднятие частоты... её можно будет увеличить без потери производительности процессора на прерываниях.
Шим программный ... Лучше он тем, что мы не висим кучу времени в прерывание как сейчас...
С моей точки зрения здесь видится противоречие. Управление пином в прерывании и сейчас сделано напрямую. Вы перенесли это управление в (одно? несколько?) других прерываний, увеличив при этом их частоту. Думаю, выигрыш от этого если и есть, то не стоит потери таймера 0.
просто в таком случае прошивка будет более универсальнее в плане залил и зыбыл, без каких-либо переделок
Уххх... Про универсальность - это Вы как-то поспешили. Для начала нужно попробовать всё же сделать "общение" по I2C, например, с использованием "своих" millis и micros. Не так там всё очевидно, возможно, что блокировка будет существенно жёстче, чем в стандартном варианте. Также это будет справедливо только для определённого процессора, работающего на определённой частоте. Впрочем, до реализации говорить ничего не буду.

@groove, либо фейковая микросхема попалась, либо слишком задрали высокое напряжение. Точно знаю людей, у кого работает. :)
 

groove

✩✩✩✩✩✩✩
22 Мар 2021
3
0
@poty подскажите пожалуйста схему по которой можно проверить фейковая или нет, заказывал из Китая
 

Sergo_ST

★★★★★★✩
15 Мар 2020
992
831
@poty, сейчас пины устанавливаются не напрямую, до установки одного пина делается куча ненужных (в прерывании) операций(а их нужно аж 4установить). У меня же в одном прерывании устанавливаются 4 пина за раз, и в прерывание всего 4 строчки кода. Если так сильно интересно, позже прикреплю их.

Универсальность именно к плате гайвера, имелось ввиду что без каких либо переделок оригинальной платы.
И да, миллис для работы с I2C не нужна от слова совсем)
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Sergo_ST, что ж, посмотрим на результат. Код прерывания на данный момент мне неинтересен.
@groove, в целом - всё банально. Нужно подать на входы (их 4) какую-нибудь последовательность (например, притянуть их к земле, таким образом "включив" выход 0) и подключить индикатор анодом через сопротивление килоом 200 к высоковольтному конденсатору, а катодом - последовательно к выводам дешифратора. Гореть должно только на включенном выходе.
 
  • Лойс +1
Реакции: groove

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
Избыточное цитирование
В приведённой выдержке из ответа нет утверждения влияния количества запросов к DS3231 на его точность. То, что содержится в качестве ответа, - это попытка реанимации DS3231 после нештатной блокировки шины I2C. Программные методы выхода из этого режима существуют, но даже они предполагают возможное разрушение информации в регистрах, немудрено, что после этого время может измениться.
в данном случае вы правы. Есть еще одно подтверждение того, что частое обращение к модулю по i2c блокирует работу внутреннего счетчика чипа. Эксперемент показал небольшое отставание порядка 6-7 мс на каждые 100 секунд циклического обращения к RTC. Впрочем, здесь тоже не все так однозначно. гипотетически СМОС мог нагреваться и успеть нагреть интегрированный внутренний резонатор, и как следствие частота могла заметно "уходить".
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@SergejEU, интересно, как обнаруживалось отставание в 6-7мс, если в регистрах хранится время с точностью до секунды? По логической схеме - при установке указателя на регистры времени оно копируется в отдельные регистры, которые не изменяются до окончания чтения. Это может вызвать проблему интерпретации времени, если читать как-то не очень быстро. (моё предположение)
Но проверить это достаточно просто. Есть пример в любой библиотеке - чтение времени. Можно его зациклить сначала с delay(100000), а потом - вообще без delay и посмотреть, на сколько часы будут отставать.
 

DmitryZ

★✩✩✩✩✩✩
10 Фев 2020
112
34
Кстати, ровно тоже самое происходит и при использовании частоты 20кГц и выше с транзисторным управлением: ёмкость просто не даёт индикаторам зажечься.
Можно ли трактовать эти строки, как "минимальный квант времени, необходимый для зажигания индикатора, порядка 50 мкс"?
Или спрошу иначе: а если попробовать прикрутить max7219 (а за ним К155ИД1)? Если мне не изменяет память, у него частота 6400 индикаций/с (для 4 индикаторов частота "кадров" будет 1,6 кГц) при 32 (16 для max7221) градациях. Получается, на полной яркости будет примерно 150мкс и можно интенсивность от 11/32 и выше использовать?

Upd: кстати, у TM1637 время показа одной цифры примерно 7/8 от 500 мкс - а это уже столь любимая I2C...
 
Изменено:

groove

✩✩✩✩✩✩✩
22 Мар 2021
3
0
MSNAPBACK]81808[/MSNAPBACK] @groove, в целом - всё банально. Нужно подать на входы (их 4) какую-нибудь последовательность (например, притянуть их к земле, таким образом "включив" выход 0) и подключить индикатор анодом через сопротивление килоом 200 к высоковольтному конденсатору, а катодом - последовательно к выводам дешифратора. Гореть должно только на включенном выходе.
Спасибо, так и делал, индикатор горит на всех выводах когда входы притянуты к земле (да и в целом при любой конфигурации входов). Заказал все-таки новые К155ИД1
 

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
интересно, как обнаруживалось отставание в 6-7мс, если в регистрах хранится время с точностью до секунды?
на сколько я помню, там циклически опрашивалось время RTC в течении 100 секунд (100000 мс), потом сравнивалось с показанием внутреннего таймера, как разность между последним IRQ и моментом завершения цикла. В качестве эталонного RTC выступал DS1307. С ним проблем с задержкой не было. Я могу дать линк на тест-программу. DS3231_busy_as7.zip Автор мне писал осенью прошлого года, но ни его сайта, ни его майла я не нашел. Остались только сообщения на форуме за 2017.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
992
831
Вопрос на засыпку: На сколько я понял из дашита на К155ИД1 - при записи в него чисел от 10 до 15 все выводы будут отключены, так ли это в реальности??
 

poty

★★★★★★✩
19 Фев 2020
3,257
949
@Sergo_ST, да, в первой версии этим Гайвер пользовался для отключения индикаторов, которые в текущем отображении гореть не должны (например, при демонстрации температуры).
 

3212andri

✩✩✩✩✩✩✩
24 Окт 2020
7
0
Здравствуйте,собрал часики с 6-тью ин-12Б, вроде все норм, но есть проблемка одна, кто-то сталкивался с морганием цифр вместе с неоновыми точками? и как боролись? Резисторы на точки ставил сначала 230кОм, так же пробовал 220кОм - результат тот же. Какие есть предложения? можно и в личку, дабы не засорять тему.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,257
949
@3212andri, самый эффективный вариант - резкое увеличение сопротивления на неонку. Также можно уменьшить яркость с помощью меньших значений ШИМ, но не всегда срабатывает, так как часть ламп имеет высокую ёмкость и просто не успевают зажигаться.
 

3212andri

✩✩✩✩✩✩✩
24 Окт 2020
7
0
@3212andri, самый эффективный вариант - резкое увеличение сопротивления на неонку. Также можно уменьшить яркость с помощью меньших значений ШИМ, но не всегда срабатывает, так как часть ламп имеет высокую ёмкость и просто не успевают зажигаться.
250кОм попробовать? или играться по 5-10кОм увеличивать и смотреть?
 

blogaster

✩✩✩✩✩✩✩
30 Мар 2021
1
0
Всем привет!
Можно ли кнопки перекинуть на аналоговые пины?