Программирование MCS51 Цифровые часы на микроконтроллере STC15W1K24S Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Цифровые часы на микроконтроллере STC15W1K24S Печать
Добавил(а) microsin   

Эти часы продаются на aliexpress [1], и собраны на матричном светодиодном индикаторе и микроконтроллере STC15W1K24S. Я их заказал, решил собрать и заодно разобраться, как они работают. Часы интересны тем, что применена микросхема часов RTC DS3231 [2], которая работает без внешнего кварцевого резонатора на 32768 Гц. Да и вообще никаких кварцевых резонаторов в схеме нет, микроконтроллер также работает от своего внутреннего генератора.

STC15W1K24S clock common view

Схему этих часов найти не удалось, поэтому решил перерисовать. К счастью, схема оказалась несложная. Ниже приведена эта схема и список деталей для сборки. Возможно, это пригодится тем, кто захочет повторить часы.

Clock with matrix LED STC15W1K24S SCH

На схеме синим цветом показаны сигналы, управляющие катодами индикаторов, красным цветом - анодами. Зеленым цветом показаны сигналы от кнопок управления.

REFDES Номинал, тип Описание
R10..R14 10 кОм Резисторы SMD в корпусе 0805.
C5, C7 0.1 мкф Фильтрующий конденсатор по питанию SMD в корпусе 0805.
С4 220 мкф 16V Фильтрующий конденсатор по питанию 5V.
C6 10 мкф 25V Фильтрующий конденсатор по питанию 3.3V.
Q1 SS8550 или SS9012 Биполярный транзистор P-N-P.
B1   Бипер на 5V со встроенным генератором.
U2 AS1117-33 Линейный стабилизатор напряжения на 3.3V.
SET, PLUS, MINUS   Кнопки управления.
miniUSB   Гнездо для подключения питания.
U3 DS3231 Микросхема RTC (Real Time Clock, часы реального времени).
U1 STC15W1K24S Управляющий микроконтроллер.
BT1   Держатель для 3V литиевой батарейки CR1216.
LD1, LD2 OES-13117BUR Матричные светодиодные индикаторы 11x7 точек.
SW1   Ртутный замыкатель.

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

Сначала запаивайте мелкие детали - резисторы и конденсаторы, а потом более крупные. Ртутный замыкатель SW1 запаивать не стал, посчитал это баловством - он нужен, чтобы при перевороте часов "вверх ногами" алгоритм автоматически перестраивался, и начинал отображение в новой ориентации. Батарейка нужна типа CR1216 (5034LC), толщиной 1.6 мм и диаметром 12.5 мм (в комплекте батарейки нет).

При монтаже платы некоторую трудность поначалу для меня составило определение первой ножки LED-индикатора, поскольку никакой соответствующей маркировки первого вывода на индикаторе нет. Но потом оказалось, что цоколевка индикатора так хитро устроена, что при любой ориентации он все равно будет работать. Так что ошибиться с запайкой матричного LED-индикатора невозможно. Для индикаторов я сделал кроватки из цанговых сокетов для DIP-микросхем.

13117 LED matrix

Индикаторы бывают с общим анодом, подключенным к столбцам, и с общим анодом, подключенным к строкам. Это отражается в маркировке индикатора буквами A (строки с общим анодом) и B (столбцы с общим анодом). Например, индикатор 13117AS имеет строки с общим анодом и столбцы с общим катодом, а у 13117BS наоборот, строки с общим катодом и столбцы с общим анодом.

Расположение выводов матричного LED-индикатора 13117 устроено таким образом, что его можно впаивать любой стороной, даже развернув на 180 градусов - он все равно будет корректно работать.

Другая засада меня ждала с микроконтроллером. Я его впаял наборот, "вверх ногами", перевернув на 180 градусов. Включил, и что удивительно, что-то там даже пыталось работать. На индикаторе бегали полосы, при нажатии на кнопки бипер издавал писки. Потом сообразил, что ошибся, выпаял микроконтроллер феном, перевернул, запаял. Оказалось, что микроконтроллер остался цел, и часы заработали нормально.

STC15W1K24S LQFP44 pin1

Здесь приведена краткая информация по микроконтроллеру STC15W1K24S. Подробные данные см. в даташите STC15-English.pdf из архива [7].

STC15W1K24S относится к серии STC15W1K16S семейства STC15 микроконтроллеров компании STC MCU Limited. Микроконтроллер имеет усовершенствованное ядро MSC51 (система команд и архитектура популярного некогда семейства микроконтроллеров Intel 8051). Это новое ядро, отличающееся высоким быстродействием (скорость работы в 8..12 раз быстрее традиционного ядра 8051 на той же тактовой частоте), широким рабочим диапазоном напряжений питания, низким энергопотреблением и устойчивостью к помехам. Код программы может быть защищен от несанкционированного доступа при перепрошивке с помощью специальной технологии шифрования STC. STC15W1K24S полностью совместим по системе команд с традиционным ядром 8051, и реализует его все аппаратные функции. Дополнительно в нем имеется два указателя DPTR вместо одного, порт UART можно использовать как 3 последовательных порта путем сдвига его данных на 3 группы выводов. Также имеется интерфейс SPI, и 8-канальный АЦП, которых нет в традиционных микроконтроллерах Intel 8051/8052/8751. Порты GPIO могут работать точно так же, как и оригинальные, и их также можно использовать в расширенных режимах (есть 4 режима работы: квази-двунаправленный со слабым pull-up, мощный двухтактный с усиленным pull-up, только вход с высоким сопротивлением и открытый сток). Каждый выход может коммутировать ток до 20 мА, однако общий коммутируемый ток не должен превышать 120 мА на корпус для 40-выводного корпуса и 90 мА для 16-выводного корпуса. В таблице ниже сведены основные параметры микроконтроллера.

Параметр Описание
Рабочее напряжение 2.6V..5.5V
Память программ (FLASH) 24 килобайта, с поддержкой ISP/IAP (IAP расшифровывается как In-Application Programming, т. е. перепрограммирование в программе), количество перезаписей не менее 100 тысяч раз.
ОЗУ (SRAM) 1024 байт: 256 байт традиционное регистровое ОЗУ (scratch-pad RAM) и 768 байт расширенное ОЗУ (auxiliary RAM).
UART 1 шт., его можно по выбору использовать на 3 группах выводов (P3.0/P3.1, или P3.6/P3.7 или P1.6/P1.7).
SPI 1 шт.
Таймеры 3 таймера разрядностью 16 бит T0, T1, T2 (T0 и T1 совместимы с традиционными Timer/Counter 0 и Timer/Counter 1 архитектуры 8051).
Захват и генерация сигнала (CCP, PCA, PWM) нет
Специальные режимы энергопотребления, таймер пробуждения Есть
Стандартные внешние прерывания 5 каналов: INT0, INT1, ~INT2, ~INT3, ~INT4.
АЦП нет
Компаратор Есть
EEPROM 5 килобайт с поддержкой IAP (In-Application Programming), количество перезаписей не менее 100 тысяч раз.
Прерывание при детектировании низкого напряжения Есть
Сторожевой таймер (WDT) Есть
Внутренняя система сброса Есть, порог напряжения сброса опционально настраивается.
Внутренний точный тактовый генератор Есть
Выходные сигналы тактирования и сброса Есть
Шифрование загружаемого кода Есть
Управление по RS485 Есть

Система шифрования кода. С применением ключа шифрования, прошитого в MCU, имеется возможность обновлять программное обеспечение с помощью кнопки update. Для этого в системе программирования выбираются опции "encryption" download и "release project", когда требуется обновить программное обеспечение микроконтроллера. Из-за того, что в памяти программ последние 7 байт используются для хранения глобального идентификатора (global ID), то пространство памяти FLASH, доступное для программы пользователя, уменьшается на эти 7 байт.

Система сброса. В микроконтроллер встроена очень удобная система сброса, так что можно полностью исключить внешние цепочки, формирующие сигнал RESET. По умолчанию вывод P5.4/RST/MCLKO используется как порт ввода/вывода (GPIO), но его можно переконфигурировать как ножку сброса RST с активным уровнем лог. 1, это делается программатором STC-ISP. Порог сброса можно запрограммировать по 16 различным уровням.

Тактирование. В кристалл встроен точный R/C генератор (точность установки частоты ±0.3%). Уход частоты в зависимости от температуры в диапазоне -40..+80°C составляет 1%, в диапазоне -20..+65°C составляет 0.6%. Это позволяет отказаться от подключения дорогого внешнего кварцевого резонатора. Тактовая частота может быть установлена в диапазоне 5..35 МГц (предпочтительные частоты 5.5296, 11.0592, 22.1184, 33.1776 МГц).

Цоколевка и назначение выводов микроконтроллера для 44-выводного корпуса LQFP44 показана в таблице ниже.

Мнемоника Описание/функция
1 P0.5 P0.5 Порт ввода/вывода (GPIO).
2 P0.6 P0.6
3 P0.7 P0.7
4 P1.0 P1.0
5 P1.1 P1.1
6 P4.7 P4.7
7 P1.2/SS/CMPO P1.2
SS Slave Selection, сигнал выборки подчиненного устройства интерфейса SPI.
CMPO Выходной порт результата сравнения компаратора.
8 P1.3/MOSI P1.3 Порт ввода/вывода (GPIO).
MOSI Master Output Slave Input, сигнал данных интерфейса SPI.
9 P1.4/MISO P1.4 Порт ввода/вывода (GPIO).
MISO Master Input Slave Output, сигнал данных интерфейса SPI.
10 P1.5/SCLK P1.5 Порт ввода/вывода (GPIO).
SCLK Тактовый сигнал интерфейса SPI.
11 P1.6/RXD_3/MCLKO_2 P1.6 Порт ввода/вывода (GPIO).
RXD_3 Вход данных UART1
MCLKO_3 Выход инвертирующего усилителя внутренней схемы тактирования. Когда используется внешний генератор тактов, этот вывод должен оставаться не подключенным.
12 P1.7/TXD_3 P1.7 Порт ввода/вывода (GPIO).
TXD_3 Выход данных UART1.
13 P5.4/RST/MCLKO/CMP- P5.4 Порт ввода/вывода (GPIO).
RST Вход для сигнала сброса. Уровень лог. 1 на этом выводе длительностью не менее 2 машинных такта приводит к сбросу устройства.
MCLKO Master clock output, главный выход тактов. Выходная частота может быть равна MCLK, MCLK/2 и MCLK/4. Эта частота может вырабатываться от внутреннего R/C генератора, или от внешнего генератора, или с помощью использования внешнего кварцевого резонатора.
CMP- Инверсный вход компаратора.
14 VCC Плюс напряжения питания.
15 P5.5/CMP+ P5.5 Порт ввода/вывода (GPIO).
CMP+ Прямой (без инверсии) вход компаратора.
16 GND Минус напряжения питания, общий провод.
17 P4.0 P4.0 Порт ввода/вывода (GPIO).
18 P3.0/RXD/~INT4/T2CLKO P3.0
RXD Вход данных UART1.
~INT4 Внешнее прервание 4, которое может сработать только по спаду логического уровня (от лог. 1 к лог. 0). Этот сигнал поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up).
T2CLKO T2 Clock Output, выход тактов T2. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[2] /T2CLKO.
19 P3.1/TXD/T2 P3.1 Порт ввода/вывода (GPIO).
TXD Выход данных UART1.
T2 Внешний вход тактов для Timer/Counter 2.
20 P3.2/INT0 P3.2 Порт ввода/вывода (GPIO).
INT0 Внешнее прервание 0, которое может сработать как по нарастанию, так и по спаду уровня, что определяется настройкой бита IT0 (TCON.0).
21 P3.3/INT1 P3.3 Порт ввода/вывода (GPIO).
INT1 Внешнее прервание 1, которое может сработать как по нарастанию, так и по спаду уровня, что определяется настройкой бита IT1 (TCON.2). INT1 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up).
22 P3.4/T0/T1CLKO P3.4 Порт ввода/вывода (GPIO).
T0 Внешний вход тактов для Timer/Counter 0.
T1CLKO T1 Clock Output, выход тактов T1. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[1] /T1CLKO.
23 P3.5/T1/T0CLKO P3.5 Порт ввода/вывода (GPIO).
T1 Внешний вход тактов для Timer/Counter 1.
T0CLKO T0 Clock Output, выход тактов T0. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[0] /T0CLKO.
24 P3.6/~INT2/RXD_2 P3.6 Порт ввода/вывода (GPIO).
~INT2 Внешнее прерывание 2, которое может срабатывать только по спаду уровня (при переходе от лог. 1 к лог. 0). ~INT2 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up).
RXD_2 Вход данных UART1.
25 P3.7/~INT3/TXD_2 P3.7 Порт ввода/вывода (GPIO).
~INT3 Внешнее прерывание 2, которое может срабатывать только по спаду уровня (при переходе от лог. 1 к лог. 0). ~INT3 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up).
TXD_2 Выход данных UART1.
26 P4.1 P4.1 Порт ввода/вывода (GPIO).
27 P4.2/~WR P4.2
~WR Сигнал записи (активный уровень лог. 0) во внешнюю память.
28 P4.3 P4.3 Порт ввода/вывода (GPIO).
29 P4.4/~RD P4.4
~RD Сигнал чтения (активный уровень лог. 0) из внешней памяти.
30 P2.0/RSTOUT_LOW P2.0 Порт ввода/вывода (GPIO).
RSTOUT_LOW Выход, который аппаратно генерирует лог. 0 после включения питания и во время сброса, и его можно программно установить в лог. 1.
31 P2.1/SCLK_2 P2.1 Порт ввода/вывода (GPIO).
SCLK_2 Сигнал тактов интерфейса SPI.
32 P2.2/MISO_2 P2.2 Порт ввода/вывода (GPIO).
MISO_2 Master Input Slave Output, сигнал данных интерфейса SPI.
33 P2.3/MOSI_2 P2.3 Порт ввода/вывода (GPIO).
MOSI_2 Master Output Slave Input, сигнал данных интерфейса SPI.
34 P2.4/SS_2 P2.4 Порт ввода/вывода (GPIO).
SS_2 Slave Selection, сигнал выборки подчиненного устройства интерфейса SPI.
35 P2.5 P2.5 Порт ввода/вывода (GPIO).
36 P2.6 P2.6
37 P2.7 P2.7
38 P4.5/ALE P4.5
ALE Address Latch Enable, сигнал защелки внешнего адреса. Используется для доступа к внешней памяти (инструкция MOVX).
39 P4.6 P4.6 Порт ввода/вывода (GPIO).
40 P0.0 P0.0
41 P0.1 P0.1
42 P0.2 P0.2
43 P0.3 P0.3
44 P0.4 P0.4

[На чем писать программы]

Можно использовать компилятор Keil C или любой другой компилятор, рассчитанный на семейство MCS-51. Также можно использовать бесплатный инструментарий SDCC (см. папку compiler архива [7]). В опциях проекта следует выбрать ядро Intel 8052, и в качестве заголочного файла определения регистров нужно подключить хедер reg51.h (можете в качестве него использовать файл stc_diyclock-master\src\stc15.h из исходного кода архива статьи [4]).

[Чем прошивать]

Программа может быть загружена с помощью порта UART через ножки GPIO P3.0 и P3.1. Для этого нужен простой переходничок USB-TTL который можно купить на aliexpress (прогуглите запрос stc-isp programmer site:aliexpress.com). Также можно купить специальный программатор STC-ISP40PIN, U8 или U8-mini (прогуглите STC-ISP40PIN site:aliexpress.com). Но можно ничего не покупать, для перепрошивки достаточно иметь любой переходик USB-TTL-UART. Итак, процесс перепрошивки по шагам.

1. Вбейте ключевые слова для поиска 6, откройте страничку загрузки на сайте STC, и выберите там последнюю версию утилиты программирования (я скачал stc-isp6.85.rar). На иероглифы не обращайте внимания. Распакуйте из-архива exe-файл, запустите.

2. Из выпадающего списка MCU Type выберите тип Вашего микроконтроллера. Этот список представляет собой дерево, в котором на верхнем уровне перечислены не сами типы микроконтроллеров, а их серии (разделы, список которых можно дополнительно развернуть). Например, чтобы выбрать микроконтроллер STC15W1K24S, нужно сначала в списке выбрать раздел STC15W1K16S Series, и уже в этом разделе выбрать микроконтроллер STC15W1K24S.

3. Подключите через USB Ваш переходничок USB-TTL-UART (я использовал дешевый USB-SERIAL CH340), выберите его по номеру COM-порта в выпадающем списке COM Port.

4. Отключите питание от платы, где установлен прошиваемый Вами микроконтроллер STC (микроконтроллер STC должен быть обесточен). Соедините провода GND, TXD и RXD переходничка соответственно с ножками GND, P3.0, P3.1 микроконтроллера.

5. Теперь проверьте, работает ли соединение с программируемым микроконтроллером, следующим образом: нажмите кнопку Check MCU, после чего подайте питание на программируемый микроконтроллер STC. В результате этой операции в консоль утилиты stc-isp будет выдано текст наподобие следующего (это пример проверки STC15W1K24S):

Checking target MCU ... 
  MCU type: STC15W1K24S
  F/W version: 7.2.5T
 
Current H/W Option:
  . Current system clock source is internal IRC oscillator
  . IRC frequency: 18.443MHz
  . Wakeup Timer frequency: 36.727KHz
  . Do not detect the level of P3.2 and P3.3 next download
  . Power-on reset, use the extra power-on delay
  . RESET pin behaves as I/O pin
  . Reset while detect a Low-Voltage
  . Thresh voltage level of the built-in LVD : 2.62 V
  . Inhibit EEPROM operation under Low-Voltage
  . CPU-Core supply level : 2.81 V
  . Hardware do not enable Watch-Dog-Timer
  . Watch-Dog-Timer pre-scalar : 256
  . Watch-Dog-Timer stop count in idle mode
  . Program can modify the Watch-Dog-Timer scalar
  . Do not erase user EEPROM area at next download
  . Do not control 485 at next download
  . Do not check user password next download
  . TXD is independent IO
  . TXD pin as quasi-bidirectional mode after reset
  . P2.0 output HIGH level after reset
  . MCU type: STC15W1K24S
 
  F/W version: 7.2.5T
 
  Complete !(2017-03-11 15:53:59)

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

STC15W1K24S ISP programming

[Алгоритм работы часов]

В алгоритме работы часов различают 2 основных режима: режим отображения и режим меню настроек.

Режим отображения. Это нормальный режим отображения, в котором может отображаться время, дата, день недели, температура окружающего воздуха и какой сегодня праздничный день ("Arbor Day", "New Year" и т. д.), если он есть.

Всего есть 5 типов отображения, один из которых можно выбрать в разделе настроек DiSP (описание меню настроек см. далее).

После смены режима каждый час звучит одиночный звуковой сигнал. Это происходит 1-2 раза, потом звуковой сигнал не выдается. Непонятная функция, возможно какая-то ошибка в программе.

Меню настройки. В этот режим можно войти в любой момент, если удерживать кнопку SET больше 1 секунды. Появится надпись TiME, приглашающее войти в настройку времени. В этот момент можно либо войти в эту настройку коротким нажатием кнопки SET, либо выбрать другие меню настройки. Эти меню настройки циклически переключаются по кругу нажатиями кнопок PLUS и MINUS: TiME -> DATE -> ALAR -> FONT -> DiSP -> MiDP, и далее по кругу снова TiME и т. д. (кнопка PLUS прокручивает выбор пунктов настройки "вперед", кнопка MINUS "назад"). Длинное нажатие SET производит выход из меню, короткое - подтверждает вход в этот раздел настроек. Ниже приведу описание этих разделов настроек.

TiME. Настройка времени. При входе в этот раздел начнут мигать цифры часов. Кнопками PLUS и MINUS можно установить нужный час. Кнопка SET подтверждает установку часов, после чего начинают мигать цифры минут, которые можно также настроить. Последними устанавливаются секунды, подтверждение установки секунд производит возврат в режим отображения.

DATE. Настройка года, месяца, дня. Принцип настройки точно такой же, как в настройке времени. Примечательно, что настройка дня недели (понедельник, вторник, ...) не предлагается, но часы все равно корректно вычисляют день недели по году, месяцу и дню.

ALAR. Настройка будильника. Его можно активировать (ON включен, OFF выключен), и если он активирован, то в этом разделе меню можно настроить час и минуту его срабатывания.

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

DiSP. Меняет характер (тип) анимации вывода информации режима отображения. Вот эти типы отображения:

TYP:1 по очереди отображается время, температура, месяц/дата, день недели, и праздник, если в этот день он есть. При этом отдельные надписи сменяют друг друга бегущей строкой, которая бежит справа налево.
TYP:2 то же самое, что и тип 1, но отдельные надписи меняют друг друга "шторкой". Пропадает надпись так, что как будто шторка наезжает слева направо, и новая надпись появляется, когда шторка перемещается обратно, справа налево. Праздник, если он есть, отображается по-прежнему, бегущей строкой.
TYP:3 то же самое, что и типы 1 и 2, но надписи "падают" сверху. Праздник, если он есть, отображается по-прежнему, бегущей строкой.
TYP:4 то же самое, что и типы 1, 2 и 3, но надписи сменяют друг друга двойной шторкой. Праздник, если он есть, отображается по-прежнему, бегущей строкой.
TYP:5 отображается только время часов. Никакая информация больше не отображается.

MiDP. Меняет характер отображения мигающих секундных точек.

Ниже во врезке приведен алгоритм работы часов в разных режимах.

Что понравилось: часы красиво работают, меню настройки простое, логичное и интуитивно понятное.

Замеченные недостатки:

1. Нет вообще никакой регулировки яркости - ни автоматической, никакой.
2. Часы не русифицированы.
3. Будильник нельзя настроить по дням недели - чтобы он не срабатывал в субботу и воскресенье.
4. Пищалка очень громкая, и звук довольно противный.
5. Плохо продумана конструкция: много лишних гаек, которые следовало заменить на стойки. Когда часы полностью собраны, затруднен доступ к кнопкам управления. Для того, чтобы можно было нажимать на кнопки, я сделал паз в задней стенке часов.

STC15W1K24S clock control buttons

[UPD170802]

Олег в комментариях дал полезную ссылку на статью, где опубликован проект с исходным кодом для этих часов (строка для поиска статьи: "DIY часы на DS3231 - расширяем функционал site:mysku.ru"). В проекте добавлен функционал измерения/отображения давления и влажности, вывод дат с русскими праздниками и названиями дней недели. Все файлы из этой статьи я собрал в архиве [8] - там есть исходный код и готовая прошивка.

[Ссылки]

1. DS3231 Excellent DIY Dot Matrix LED Clock Kit site:aliexpress.com.
2. DS3231: высокоточная микросхема RTC.
3. Часы – конструктор на высокоточном (extremely accurate I2C) чипе DS3231 site:shopper.life.
4. Цифровые часы на микроконтроллере STC15W404AS.
5. How to program STC 8051 microcontroller site:youtube.com.
6. STC ISP Download site:stcmicro.com - ссылки на утилиты для программирования микроконтроллеров STC.
7. 170312stc15w1k24s-clock.zip - схема, документация, фотографии.
8170902STC15W1K24S-clock.zip - альтернативный доработанный проект, исходный код и прошивка.

 

Комментарии  

 
0 #9 Виктор 07.05.2018 20:26
Имеются некоторые дополнения к прошивке v0tang OldDIYClock[18.432].hex от 10.09.2017 для этой версии часов. Подробности и ссылки в комментариях в теме v0tang на сайте https://mysku.ru/blog/aliexpress/54826.html.
Цитировать
 
 
0 #8 Александр 22.12.2017 15:49
Цитирую microsin:
у некоторых микросхем часов есть глюк: пока не установишь время, т. е. не запишешь что-то в регистры времени - часы не идут. Поэтому в некоторых программах мне пришлось отслеживать эту ситуацию, и если регистры не меняются, то автоматически записывать в них какое-либо время.

Я про этот глюк знаю, и всегда в коде инициализации пишу что-то вроде:

rtc.begin();
if (!rtc.isrunning()) {
rtc.adjust(DateTime (2017, 8, 22, 3, 0, 0));
}
В данном случае, надеюсь, автор прошивки часов тоже что-то подобное в своем коде написал. Но тут, похоже, не в этом дело - если напряжение питания снова понизить до 3.3V, то часы опять нули показывают, хотя батарейка вставлена и, по идее, однажды запустившись, они должны продолжать идти от батарейки. Тут явно микросхеме не хватает 3.3V по какой-то странной причине. Не могу себе представить, почему это всем DS3231 хватает, а данному конкретному экземпляру - нет.
Цитировать
 
 
0 #7 Александр 21.12.2017 23:50
После тех часов, что делал в мае (см. мой коммент #1), решил еще одни такие же спаять - знакомые попросили. Теперь уже контроллер сразу правильно запаял, а часы не идут. Контроллер работает - показывает на дисплее все время 00:00 1-го января и температуру 0 градусов. Кнопки работают, шрифты и прочие настройки меняются, а время не тикает. Все проверил сто раз, прозвонил все цепи, осциллографом все сигналы посмотрел, все правильно вроде. По шине I2C пачки импульсов время от времени проскакивают, как и положено, а не идут часики и все тут. Решил, что DS3231 поджарилась при пайке или изначально больная была, хотел ее уже выпаивать, но тут на всякий случай подал на нее 5V питание вместо 3.3 и вдруг чудо! Пошли часы. Так и не понял в чем дело - стабилизатор AMS1117 исправен, честные 3.3V даёт, микросхема DS3231, судя по даташиту должна вполне хорошо от этих 3.3V работать, а вот не работает и все тут! Пришлось замкнуть у стабилизатора ноги 2 и 3, теперь все работает.

microsin: у некоторых микросхем часов есть глюк: пока не установишь время, т. е. не запишешь что-то в регистры времени - часы не идут. Поэтому в некоторых программах мне пришлось отслеживать эту ситуацию, и если регистры не меняются, то автоматически записывать в них какое-либо время.
Цитировать
 
 
0 #6 Олег 04.11.2017 05:53
Есть похожие, но дороже стоят и комплектация другая https://m.ebay.com/orderDetails?itemId=372027416605&txnId=974512820024&skus=Color:Black%20blue%20letters&varId=640946111289 и печатная плата с датчиком 18b20, синим индикатором https://i.ebayimg.com/images/g/S70AAOSwRlJZe1wj/s-l500.jpg
Цитировать
 
 
0 #5 Oleg 06.09.2017 10:26
Александр, гляньте вот здесь: https://mysku.ru/blog/aliexpress/54826.html расширяет функционал и русифицируют данные часики. Может, вам пригодится. я таки прошил две штуки...
Цитировать
 
 
0 #4 Oleg 02.09.2017 10:50
Здесь выложена новая прошивка этих часов с русскими праздниками и названиями дней недели и добавлена функция отображения давления и влажности https://mysku.ru/blog/aliexpress/54826.html
Цитировать
 
 
0 #3 Олег 01.06.2017 15:38
А вы не знаете кто производитель данного набора? Может на сайте производителя можно скачать обновление прошивки...?

microsin: к сожалению, не знаю.
Цитировать
 
 
+1 #2 Олег 27.05.2017 03:56
А вы не пробовали прошивку считать и редактировать? Праздники бы подправить, и действительно пикают не каждый час... И еще есть фишка: будильник если срабатывал "вчера" и был выключен до окончания сигнала, т. е. меньше чем за минуту, то при отключении на следующий день будильника через меню в off, часы на индикаторе не увеличивают показания...

microsin: к сожалению, исходного кода этого проекта нет, так что простым способом исправить поведение часов нельзя. Даже если можно было бы считать прошивку, исправить её невозможно. Понятно почему: дизассемблирова ть двоичный код и делать реверс-инжиниринг это дикий объем работы, гораздо проще переписать с нуля.
Цитировать
 
 
+1 #1 Александр 16.05.2017 23:48
Огромное спасибо автору за подробную и технически грамотную статью и, особенно, за рисование схемы. Я эту страницу нашел после того, как у меня случилась ровно та же беда, которая случилась у автора - с первой попытки я запаял контроллер вверх ногами. Отчего это происходит, совершенно понятно - на корпусе микросхемы стоят две метки в противоположных углах, одна возле 1-го вывода, а другая - у 23-го. Причем та, которая у 23-го, как это видно на фото, гораздо более "жирная" и заметная, поэтому рука сама тянется установить микросхему вверх тормашками. Причем, как это верно подмечено в статье, даже в таком неправильном положении какая-то жизнь в схеме происходит, на дисплее мерцают какие-то точки, индикация реагирует на нажатие кнопок, в общем, понять, что проблема в неправильном положении контроллера можно не сразу. Затем - фен, отпаивание, откачка излишков припоя с печатных проводников и запаивание по-новой, но уже в правильном положении.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page