Часы на PIC16F628 + DS3231

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

Ничего сложного нет. Просто нужно выбрать правильный подход к программе.
Зачем опрашивать часы с частотой 1 КГц ? Ну вот зачем ??? Просто, чтобы впихнуть этот опрос между переключениями индикаторов ? :dont_know:
С таким подходом, микрокотроллеры нужны будут только для индикации, и больше заниматься ничем не смогут. Ленивые МК :)))

Добавлено after 7 minutes 23 seconds:
Кстати, 4096 Гц - это не 1.7 мс, а ~244 мкс. :music:
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

korob
Ты наверное считаешь по CLK и забываешь про другие операции МК. Загрузить, переложить, сдвинуть и т.д.
Реклама
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: Часы на PIC16F628 + DS3231

Сообщение korob »

Аlex писал(а):Кстати, 4096 Гц - это не 1.7 мс, а ~244 мкс.
:)))
Так вроде же разобрались... 4096Гц. это тактовая для индикации, период которой составляет 32 такта. А 1,7мс. это время индикации одного разряда, при скважности 32/7 это 7 тактов. А теперь 244мкс. (период одного такта тактовой частоты) умножаем на 7 (7 тактов длится индикация одного разряда), вот и получается ~1,7мс. :wink:
otest писал(а):Ты наверное считаешь по CLK и забываешь про другие операции МК
Ну да. :oops: Во время индикации одного разряда опросил DS3231, во время индикации друго разряда посчитал/перевёл/переложил, во время индикации следующего разряда... и .т.д.
Разве не так? :dont_know:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

korob писал(а):А 1,7мс. это время индикации одного разряда, при скважности 32/7 это 7 тактов.
Таким макаром можно сказать, что у нас есть в запасе 7.8 мс., ибо частота индикации всего = 128 Гц :)
4 КГц - несущая частота индикации. а это значит, что контроллер будет прерываться с этой частотой и делать некие вычисления. По всей видимости, между этими вычислениями (между прерываниями) человек и хотел уложиться в опрос DS'ки. Другого объяснения я не вижу :dont_know:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: Часы на PIC16F628 + DS3231

Сообщение korob »

Аlex писал(а):4 КГц - несущая частота индикации. а это значит, что контроллер будет прерываться с этой частотой
Даже так? Прерываться каждый такт? :roll:
Я думал иначе - прерываться будет только при изменении уровней выходных сигналов. Т.е. у МК будут "рабочие окна" в 1,7мс. А иначе зачем прерываться семь раз за время индикации одного разряда если ничего по сути не нужно делать в этих прерываниях? :dont_know:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Чтение состоит из двух процедур — установить указатель на нужный
регистр и прочитать его. Чтобы установить указатель на нужный регистр, нужно передать
условие старта, потом передать адрес микросхемы с битом записи и байт с адресом
регистра. Далее либо условие остановки и следом условие старта, либо просто рестарт.
Теперь вторая процедура — непосредственно чтение из регистров. Старт передан, далее
нужно отправить адрес микросхемы с битом чтения и далее считывать регистры в
необходимом количестве, по окончании передать условие остановки. Если информация из
регистра была прочитана, то указатель автоматически переходит на следующий за ним
регистр без лишних действий со стороны микроконтроллера (мастер устройства.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

[uquote="korob",url="/forum/viewtopic.php?p=3983075#p3983075"]А иначе зачем прерываться семь раз за время индикации одного разряда если ничего по сути не нужно делать в этих прерываниях?[/uquote]Несущая так поднялась из-за требований к скважности.
Ты видишь только 7/32-ых, но не видишь другую 1/32-ую. Которая и является минимальным квантом для несущей.

У меня начальник такой-же. "Да чего тут сложного ? Всего-то, нужно чтобы на дисплейчике нарисовалось то-то и менялось в зависимости от того-то" .... :)))
Будучи обычным пользователем, не имея опыта программирования, и не зная структуры уже имеющейся программы, нельзя оценивать программу только по наружним берюшкам :dont_know:
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: Часы на PIC16F628 + DS3231

Сообщение korob »

otest, с описанным выше всё как раз понятно (время опроса прикидывал с учётом всего выше сказанного). :)
Не понятно зачем затягивать с опросом? Это же не DS18B20 где после запроса выполняется преобразование температуры, и МК вынужденно приходится ждать завершения преобразования. Здесь же просто прочесть регистры без ожиданий на преобразование/вычисление. Более того - у нас есть возможность "читать" в Fast Mode. :dont_know:
Аlex писал(а):но не видишь другую 1/32-ую. Которая и является минимальным квантом для несущей.
Я её вижу. :) Только пока не понимаю чем она так мешает. Такты разве не таймер считает? :dont_know:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

У меня даже для одного считывания в 1.7 не помещается. Внимательно читаем
Далее либо условие остановки и следом условие старта, либо просто рестарт.
Т.е. потоком считывать у меня не получается. Если уложиться в 1.7 , то без разницы как считывать.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

korob писал(а):Только пока не понимаю чем она так мешает. Такты разве не таймер считает?
Всё очень просто.
Каждый квант времени, на несущей частоте, увеличивается счётчик периода и сравнивается со значением скважности. И, в зависимости от результата на выходе компаратора, принимается решение.
Это принцип PWM'а. А тут он программный. Каждый квант, таймер дёргает прерывание. И делаются определённые вычисления - счётчик, сравнение, вывод результата на PIN, ....
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Аlex
Это общий принцип построения алгоритма. Сделайте считывание данных с ДСки за 1.7 мсек.. Остальное приложится.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

otest, а без привязки к индикации не получится ?
Индикация, по-любому, будет крутиться в прерывании таймера. Почему бы не реализовать работу с DS'кой в основном потоке ? Спокойно, не спеша, с чувством-толком-расстановкой ... :))

Добавлено after 1 minute 20 seconds:
[uquote="otest",url="/forum/viewtopic.php?p=3983100#p3983100"]Сделайте считывание данных с ДСки за 1.7 мсек..[/uquote]Я до сих пор не могу взять в толк, откуда взялась эта циферка ?
Почему мы должны уложиться именно в этот промежуток времени ? :dont_know:
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Основной поток-1.7мс светим разрядом +0.25 мс пауза ,и в это же время считываем ДС.( Больше негде)
Дальше идёт следующий разряд с такими же интервалами. И т.д.
1.7 желание КОРОБа
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

otest писал(а):Основной поток- ....
А, Вы без прерываний хотите сделать. Всё понятно тогда.... :roll:
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Сделайте с прерыванием. На что прерываться будете?
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Zhuk72 »

Изображение
Вот чтение одного байта (регистра) из DS3231 на 400 кГц тактах. Справа видно время, за которое он прочитался.
Время (часы-минуты) содержится в двух регистрах, так что нужно добавить 26 мкс еще на один байт, всего 142 мкс на чтение. Еще некоторое время (зависит от МК и его частоты) на распаковку нибблов этих двух регистров в 4-х элементный массив, после чего вывод на индикатор.
Если не отобрать секунды, то считывать достаточно раз в секунду.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Где программа часов для korobа ? Ваши теоретические рассуждения похожи на упрёки и отмазки.
Вы сколько времени готовили ДСку для считывания?
Считать готовое как 2 байта передать. Мне ещё НОПить приходилось.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

[uquote="otest",url="/forum/viewtopic.php?p=3983128#p3983128"]Сделайте с прерыванием. На что прерываться будете?[/uquote]
Я уже сказал - я бы сделал, если бы было железо. Протеусом не пользуюсь уже много-много лет, он у меня не установлен и ставить его не хочу. Предпочитаю реальное железо :dont_know:

Вас ни в чём не упрекаю. Делать или нет, и как делать, - Ваше право.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Часы на PIC16F628 + DS3231

Сообщение otest »

Право моё, но мне интересно какая часть программы будет обрабатываться в прерывании.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Часы на PIC16F628 + DS3231

Сообщение Аlex »

Динамическая индикация, по всей видимости :roll:
А в основном потоке, спокойно и не спеша, работаем с часами.
Ответить

Вернуться в «PIC»