Страница 1 из 6
Часы на PIC16F628 + DS3231
Добавлено: Вт фев 09, 2021 16:14:30
korob
Доброго дня уважаемые форумчане!
В очередной раз потребовалась помощь с написанием программы (если точнее - готовая программа).
Задача - считывать текущее время из DS3231 с помощью PIC16F628 и выводить на индикатор методом динамической индикации. Да, всё верно - банальные часы.

Более никакого функционала не нужно, (даже установка/коррекция текущего времени не нужна) за исключением одного единственного - переключение в режим отображения текущих минут и секунд, т.е. из органов управления единственная кнопка с единственной функцией переключения режима отображения час:мин / мин:сек.
Индикация динамическая четырёхразрядная семисегментная, частота индикации 128Гц., скважность 32/7 (как у К176ИЕ18

).
Ну вот пожалуй и всё.
Примерно желаемая схема:
Спойлер

Если найдутся желающие помочь - заранее благодарен.

Re: Часы на PIC16F628 + DS3231
Добавлено: Вт фев 09, 2021 18:11:33
otest
Re: Часы на PIC16F628 + DS3231
Добавлено: Вт фев 09, 2021 18:13:52
korob
Re: Часы на PIC16F628 + DS3231
Добавлено: Ср фев 10, 2021 23:09:14
otest
Вот такие есть. Нужны?
Re: Часы на PIC16F628 + DS3231
Добавлено: Ср фев 10, 2021 23:27:00
korob
Схему узнаю!

Благодарю за проявленный интерес.

Как узнать подробности?

Re: Часы на PIC16F628 + DS3231
Добавлено: Ср фев 10, 2021 23:35:55
otest
Какие? Схему ты сам выложил. Нужны часы или нашёл?
Re: Часы на PIC16F628 + DS3231
Добавлено: Ср фев 10, 2021 23:44:41
korob
Естественно нужны. То что по мотивам моей схемы и так понятно. А вот по одной лишь картинке сложно судить то ли мне нужно, или не то.

Пару слов как работает программа не помешало бы.

Re: Часы на PIC16F628 + DS3231
Добавлено: Ср фев 10, 2021 23:48:26
otest
Всё в личке.
Re: Часы на PIC16F628 + DS3231
Добавлено: Вс фев 14, 2021 22:30:02
korob
К сожалению не получилось у ув.
otest сделать желаемую динамическую индикацию.
Так что всё ещё нуждаюсь в помощи.

Re: Часы на PIC16F628 + DS3231
Добавлено: Вс фев 14, 2021 23:25:46
Аlex
[uquote="korob",url="/forum/viewtopic.php?p=3980917#p3980917"]К сожалению не получилось у ув.
otest сделать желаемую динамическую индикацию.[/uquote] Что-то с трудом верится

Re: Часы на PIC16F628 + DS3231
Добавлено: Вс фев 14, 2021 23:48:17
korob
Да вот...

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

Re: Часы на PIC16F628 + DS3231
Добавлено: Вс фев 14, 2021 23:52:23
Аlex
Эммм... А для индикации есть разница, какая частота и скважность ?

Лишь бы мырганье в глаз не било

Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 00:17:44
korob
Вот как раз чтоб не было заметных мерцаний/переливаний должна быть некоторая минимальная частота при заданной скважности.
Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 08:58:59
Аlex
Чтобы не было мерцаний, достаточно частоты выше 25 Гц. При 50-ти их вообще не заметно. Ну 100 можно сделать, картика будет стоять как "вкопанная".
А от скважности будет зависеть яркость, но никак не мерцание.
Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 09:57:22
BOB51
Обычно делается кратно двойке - удобно для загрузки делителей.
Для 4-позиционного светодиодного дисплея достаточно 0,016 (0,004 на каждую позицию).
Это 62,5 Гц. Яркость/стабильность вполне нормальная.
Другое дело когда внешнее искусственное освещение - лампы накаливания, неон или светики...
Там теоретически может иметь место наложение "мерцаний" от светильнка и собственно индикатора.

Дополнительно задача сделать обращение к часикам и/или датчику таким образом, чтобы не приостанавливать индикацию.
Чаще всего именно эта "приостановка" и бывает источником "неприятных ощущений".
I2C в принципе допускает приостановку вплоть до полного останова - посему индикатор ставим на прерывания фоном (высший приоритет), а основная программа занимается часейками.
Как вариант - для обмена выделяется "теневой кадр" - развертка не на 4, а на 5 позиций и обмен втискиваем в ту 5-ю позицию.

Разве что исходная задачка с "неизвестным фактором" - подгонка под имеющийся нестандартный индикатор.
Тогда возможно параметры развертки будут иметь весьма большое значение.
Но схемка индикатора не представлена и данное условие не оговорено.
Как собственно и необходимость внешнего RTC без настроек параметров.
Для PICовых вполне реально и внутренние часики на Т1 устроить с собственным внешним кварцем...

Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 10:32:12
Аlex
Давайте немного прикинем по хотелкам ТСа.
128 Гц на индикатор. Скважность 7/32. 4 индикатора. Получаем тактовую для динамической индикации = 128*4*32 = 32768 Гц. Это получается частота, с которой будет происходить обработка динамической индикации.
Учитывая, что проц будет работать на внутреннем генераторе с частотой 4 Мгц( это 1 us на такт), имеем всего 30 тактов, за которые мы должны уложиться в обработчике прерываний. Это очень мало для обслуживания такой задачи этим процом. Будем практически постоянно висеть в прерывании.
Мало того, ровно 32768 мы получить не сможем. Это нужно ставить кварц какой-нибудь специфической частоты
PS: По-этому и вопрос - для чего такая бешеная частота и своеобразная скважность ?

Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 10:50:00
korob
Аlex писал(а):Получаем тактовую для динамической индикации = 128*4*32 = 32768 Гц.
Что-то много.

На 4 зачем умножать, там же просто сдвигаем фазу в каждом разряде. Я насчитал всего 4096Гц.
Аlex писал(а):для чего такая бешеная частота и своеобразная скважность ?
На самом деле не такая уж и бешенная, я бы сказал стандартная (бешенная это под 1кГц.). Ну а скважность - классика от К176ИЕ18.

Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 10:50:58
akl
BOB51 писал(а):...вполне реально и внутренние часики на Т1 устроить с собственным внешним кварцем...

Золотые слова. И DS не нужен, т.к. прога обслуживания оного займет столько же, сколько прога собственно часов.
Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 11:13:24
Аlex
[uquote="korob",url="/forum/viewtopic.php?p=3981132#p3981132"]На 4 зачем умножать[/uquote] Если не умножать и тактировать всю индикацию с частотой 128 Гц, то на каждый индикатор получим 32 Гц

Для того, чтобы была частота 128Гц, переключать индикаторы нужно с частотой, выше в "кол-во индикаторов" раз. В данном случае = 512 Гц.
Добавлено after 8 minutes 7 seconds:
Да, я немного обсчитался
Получается 16 Кгц, а не 32

Re: Часы на PIC16F628 + DS3231
Добавлено: Пн фев 15, 2021 11:23:03
korob
Всё равно неверно.
Делим период индикации на 32. Из них 7 тактов на один разряд, один такт защитный, потом 7 тактов второй разряд плюс один защитный и т.д. И того получается 32 такта на все четыре разряда с защитными интервалами (отсюда и своеобразная скважность 32/7).

При частоте индикации 128Гц. получаем тактовую 128х32 = 4096Гц.
Собственно упомянутая К176ИЕ18 именно так и делает, делит 4096Гц. на четыре сдвинутых на 90° тактовых сигнала по 128Гц. скважностью 32/7.