Часы по озарению [IN12 IN12 IN15 IN12 IN12] Одна плата, вертикальный корпус. RGB-подсветка, "погодный" датчик BME-280. MCU - STM32G030K8. Управление катодами - TPIC6B595. ===== 05.05.2021 И снова - раньше нужно читуть даташиты... у TPIC6B595 уровень логической единицы - 0.85 от питания, т.е. 3.3В логики тут никак не хватает. К счастью, MOSI и SCK на FT выводах - переключил в OD и подтянул резисторами с наружи на +5В. Вывод LATCH придётся переносить на 26-ой вывод -- PA15. Исправил схему и плату. --- 12.07.2021 Переход на новую версию железа. --- 04.09.2021 Вторая версия показала, что нужно переходить на третью - для гашения индикатора необходимо убирать анодное напряжение, с 50В на катодах они не гаснут - горит всё, хватает утечек тока в TPIC6B595. --- 07.09.2021 Закончил третю версии схемы и платы - с индивидуальным управлением анодами ламп. Опыты показали, что писк на частоте 100 Гц отсутвует, на частотах 200 и больше - появляется. --- 30.09.2021 Правка софта под третью версию железа. Таймеры 1 и 3 пока 100 Гц. PWM: TIM1_CH1 - PWM_1 TIM1_CH2 - PWM_R TIM1_CH3 - PWM_G TIM1_CH4 - PWM_B TIM3_CH1 - PWM_5 TIM3_CH2 - PWM_4 TIM3_CH3 - PWM_3 TIM3_CH4 - PWM_2 Таймер 14 попробую использовать для "блинка" - 0.75 сек вкл, 0.25 сек выкл. может стоит Т14 пинать по прерыванию в начале каждой секунды в режме one pulse mode? тогда будет синхронизация со сменой секунд. пока оставлю в качестве идеи. --- 12.01.2022 Наконец то запустил первый таймер. На очереди - SPI. И глобальное причёсывание. И HSV2RGB... --- 17.01.2022 Засады на каждом шагу... Какая-то лажа с оптимизациями. Код из Кейла не работает. вернее не "тикает", хотя минуты вроде меняются. Наверное, нужно код прервааний оборачивать в "-O0" или как-то так. --- 01.02.2022 Предварительные итоги... Пока условно успешно - всё запустил, всё работает, HAL_LL выбросил. Код из gcc и Segger - не работает ни с какими уровнями оптимизаций. Работает только Keil с клмпилятором 6-ой версии. Код из Segger падает в HardFault, подозреваю, что с gcc таже беда. Причём код из HAL_LL - всё работает. На урове Keil-а сровнял все регистры на этапе инициализации. Отдебажить gcc (пока) нет возможности (лень заниматься). В любом случае - очень странно... Из хорошего - VSCode очень даже приятен. Segger тоже ничего, но горячие влавиши совсем свои. C::B скорее всего придётся хоронить - "плюсов" у него не осталось, поиск по коду сломался или хз. Из пока не реализованного - "бликование" разрядами. Ничего не делал с ком-портом. Не придумал ничего внятного по управлению/настройкам. ... бред... пришёл домой - всё работает. ан нет - работает только с уровнем оптимизации "s", 2 и 3 - нет. Ждём отладчик... Segger убрал, в хардфаулт падает только он. --- 03.02.2022 Вчерашняя версия опять перестала работать под GCC... Есть мысль повесить опрос кнопок на 16 или 17-ый таймер. Получается, под GCC какая-то лажа с I2C - при инициализации получается частота прерываний 4096 Гц. --- 07.02.2022 Информация, сохраняемая в FLASH: час дня, час ночи - 2 байта; яркость дня, яркость ночи - 2 байта (1 байт); режим подсветки дня, режим подсветвки ночи - 2 байта (1 байт) - выкл/"радуга"/цвет; код цвета дня, код цвета ночи - 2 байта (0..59). Пока ужиматься не нужно - будет 8 байт, при необходимости можно сократить до 6-ти, освободив 2 байта для чего-то другого.