Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Часы на PIC16F628 + DS3231

Вт фев 09, 2021 16:14:30

Доброго дня уважаемые форумчане!
В очередной раз потребовалась помощь с написанием программы (если точнее - готовая программа). :oops: :oops: :oops:

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

Примерно желаемая схема: :roll:



Если найдутся желающие помочь - заранее благодарен. :beer:
Вложения
DS3231+PIC16F628.JPG
(70.69 KiB) Скачиваний: 458
Последний раз редактировалось korob Вт фев 09, 2021 19:07:01, всего редактировалось 1 раз.

Re: Часы на PIC16F628 + DS3231

Вт фев 09, 2021 18:11:33

Вроде не новичок, а пишешь загадками. Что значит помочь? Вот полезные ссылки.
https://radiolaba.ru/microcotrollers/ds ... emeni.html
https://radiolaba.ru/microcotrollers/la ... dulem.html

Re: Часы на PIC16F628 + DS3231

Вт фев 09, 2021 18:13:52

Был я там, не то что нужно. :? :cry:
otest писал(а):Что значит помочь?
korob писал(а):если точнее - готовая программа
:oops: :oops: :oops:

Re: Часы на PIC16F628 + DS3231

Ср фев 10, 2021 23:09:14

Вот такие есть. Нужны?
Вложения
RIS.gif
(37.08 KiB) Скачиваний: 320

Re: Часы на PIC16F628 + DS3231

Ср фев 10, 2021 23:27:00

Схему узнаю! :) :beer:
Благодарю за проявленный интерес. :beer: Как узнать подробности? :)

Re: Часы на PIC16F628 + DS3231

Ср фев 10, 2021 23:35:55

Какие? Схему ты сам выложил. Нужны часы или нашёл?

Re: Часы на PIC16F628 + DS3231

Ср фев 10, 2021 23:44:41

Естественно нужны. То что по мотивам моей схемы и так понятно. А вот по одной лишь картинке сложно судить то ли мне нужно, или не то. :dont_know: Пару слов как работает программа не помешало бы. :oops:

Re: Часы на PIC16F628 + DS3231

Ср фев 10, 2021 23:48:26

Всё в личке.

Re: Часы на PIC16F628 + DS3231

Вс фев 14, 2021 22:30:02

К сожалению не получилось у ув. otest сделать желаемую динамическую индикацию. :(
Так что всё ещё нуждаюсь в помощи. :oops:

Re: Часы на PIC16F628 + DS3231

Вс фев 14, 2021 23:25:46

К сожалению не получилось у ув. otest сделать желаемую динамическую индикацию.
Что-то с трудом верится :dont_know:

Re: Часы на PIC16F628 + DS3231

Вс фев 14, 2021 23:48:17

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

Re: Часы на PIC16F628 + DS3231

Вс фев 14, 2021 23:52:23

Эммм... А для индикации есть разница, какая частота и скважность ? :roll:
Лишь бы мырганье в глаз не било :)))

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 00:17:44

Вот как раз чтоб не было заметных мерцаний/переливаний должна быть некоторая минимальная частота при заданной скважности.

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 08:58:59

Чтобы не было мерцаний, достаточно частоты выше 25 Гц. При 50-ти их вообще не заметно. Ну 100 можно сделать, картика будет стоять как "вкопанная".
А от скважности будет зависеть яркость, но никак не мерцание.

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 09:57:22

Обычно делается кратно двойке - удобно для загрузки делителей.
Для 4-позиционного светодиодного дисплея достаточно 0,016 (0,004 на каждую позицию).
Это 62,5 Гц. Яркость/стабильность вполне нормальная.
Другое дело когда внешнее искусственное освещение - лампы накаливания, неон или светики...
Там теоретически может иметь место наложение "мерцаний" от светильнка и собственно индикатора.
:roll:
Дополнительно задача сделать обращение к часикам и/или датчику таким образом, чтобы не приостанавливать индикацию.
Чаще всего именно эта "приостановка" и бывает источником "неприятных ощущений".
I2C в принципе допускает приостановку вплоть до полного останова - посему индикатор ставим на прерывания фоном (высший приоритет), а основная программа занимается часейками.
Как вариант - для обмена выделяется "теневой кадр" - развертка не на 4, а на 5 позиций и обмен втискиваем в ту 5-ю позицию.
:roll:
Разве что исходная задачка с "неизвестным фактором" - подгонка под имеющийся нестандартный индикатор.
Тогда возможно параметры развертки будут иметь весьма большое значение.
Но схемка индикатора не представлена и данное условие не оговорено.
Как собственно и необходимость внешнего RTC без настроек параметров.
Для PICовых вполне реально и внутренние часики на Т1 устроить с собственным внешним кварцем...
:dont_know:

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 10:32:12

Давайте немного прикинем по хотелкам ТСа.
128 Гц на индикатор. Скважность 7/32. 4 индикатора. Получаем тактовую для динамической индикации = 128*4*32 = 32768 Гц. Это получается частота, с которой будет происходить обработка динамической индикации.
Учитывая, что проц будет работать на внутреннем генераторе с частотой 4 Мгц( это 1 us на такт), имеем всего 30 тактов, за которые мы должны уложиться в обработчике прерываний. Это очень мало для обслуживания такой задачи этим процом. Будем практически постоянно висеть в прерывании.
Мало того, ровно 32768 мы получить не сможем. Это нужно ставить кварц какой-нибудь специфической частоты :roll:

PS: По-этому и вопрос - для чего такая бешеная частота и своеобразная скважность ? :roll:

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 10:50:00

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

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 10:50:58

BOB51 писал(а):...вполне реально и внутренние часики на Т1 устроить с собственным внешним кварцем...
:) Золотые слова. И DS не нужен, т.к. прога обслуживания оного займет столько же, сколько прога собственно часов.

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 11:13:24

На 4 зачем умножать
Если не умножать и тактировать всю индикацию с частотой 128 Гц, то на каждый индикатор получим 32 Гц :)
Для того, чтобы была частота 128Гц, переключать индикаторы нужно с частотой, выше в "кол-во индикаторов" раз. В данном случае = 512 Гц.

Добавлено after 8 minutes 7 seconds:
Да, я немного обсчитался :oops:
Получается 16 Кгц, а не 32 :oops:

Re: Часы на PIC16F628 + DS3231

Пн фев 15, 2021 11:23:03

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