Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации. По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например. Да и частота обновления дисплея у них чрезмерно высокая.
Странный какой-то глюк, из-за которого МК греется. На плате все чисто?
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации. По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например. Да и частота обновления дисплея у них чрезмерно высокая.
Странный какой-то глюк, из-за которого МК греется. На плате все чисто?
300 Герц у них обновления разрядов мерцания нет и яркость не страдает, хотя если уменьшить частоту как у вас яркость повыситься, хотя нет пробовал зажигать сегменты без контроллера примерна была та же яркость.
Я плату промывал после пайки. Пока думаю может в прошивке косяк у них, хотя врятли. Но если часы запустились то работают, если выключил включил может не запуститься и греться.
Пока определил пакеты запросы 0х81 секунды 0х85 часы 0х83 мин 7 ячеек RAM (наверное настройки часов типа пикать не пикать и будильник насколько выставлен) 0х89 месяц 0х87 дата 0х8B день, у вас считывание раз в секунду Burst mode, а они постоянно по очереди опрашивают. Я понял у них получается если секунды сменились сразу отобразятся, у вас получается погрешность если секунды сменились то задержка на считывание примерно от 0 до 1 сек. Зависит от того на какой милисекунде запустился контроллер после подачи питания это и будет плавающая погрешность в пределах 1 секунды. Получается рассинхронизация. Я думаю вы мою мысль поняли.
Показан только один пакет, данные запрашиваются раз в секунду. У нас запросы отличаются по форме. Неохота поднимать документацию по 1302, чтобы выяснять, что они там делали. Я делал т.н. Burst Mode, прием 8 байт оптом. Диаграмму с дисплея я не снимал.
Разобрал ваш опрос DS1302. 0xBE запись. 0 сек 2 мин 11 часов 4 дата 12 месяц 7 день 16 год 0 бит защиты. 0xC2 RAM запись чего-то. 0xC4 RAM запись чего-то. 0xBF чтение все то же самое плюс регистр зарядки.
Набор заказывал здесь за 374 рублей зеленого цвета, шел с треком, отслеживался. https://ru.aliexpress.com/item/2016-new ... cb434288e1 В контроллере китайская прошивка. Закоротил 7 ногу на минус (GND), для этого на плате предусмотрены контактные площадки. Теперь показывают 55 сек время и 5 сек температуру, то что надо. Яркость тоже устраивает дневной и ночной режим.
Осталось разобраться с не всегда корректным запуском, как бы не сгорел от перегрева. Заказал запасной чистый (пустой) без прошивки STC15W404AS буду с ним химичить. А этот оставлю с оригинальной прошивкой, потому что её потом негде будет взять.
Записью в 0хС2 и 0хС4 ДС1302 сохраняются начало и конец срабатывания "кукушки". 0xC3 и 0xC5 соответственно чтение их. Я изначально хранил настройки в еепром МК, а потом подумал, что грех не использовать такое хранилище, как ОЗУ 1302. И размер кода уменьшился при этом.
Varimon писал(а):
Заказал запасной чистый (пустой) без прошивки STC15W404AS буду с ним химичить. А этот оставлю с оригинальной прошивкой, потому что её потом негде будет взять.
Правильный подход. У меня тоже в начале изысканий хранился оригинальный чип (15F204EA) с прошивкой, не помню только остался или я его задействовал куда-то.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Пришла STC15F204EA, у меня часы на STC15F404AS схема как у вас в 3 архиве из статьи. Загрузил в 204 прошивку из 1 архива, на ней видны мерцания разрядов не сильно но есть все таки, вам нужно повысить частоту смены разрядов как у китайцев мое мнение.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Я все понимаю, но вот браться за часы опять просто-напросто влом Есть другие вещи, которыми хочется заниматься, а эти часы как дамоклов меч надо мной. И пообещал, что исправлю, и жутко неохота.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Я все понимаю, но вот браться за часы опять просто-напросто влом
Очень надеюсь, что появится все-таки время поправить прошивку, ибо очень заметно мерцание индикаторов) Тоже сегодня получил новую STC15F404AS, прошил - все отлично работает, да и настраивать часы стало намного удобнее!
Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации. По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например. Да и частота обновления дисплея у них чрезмерно высокая.
Так вам всего лишь поделить значения таймера 0 на 6 и все, хотя я не знаю что у вас еще привязано к нему, а 300 Герц в самый раз получается, у Вас 50 Герц навскидку, не замерял.
void timer0_isr (void) interrupt 1 using 1 { //******************************************** // В прерывание по Т0 мы попадаем каждые 5 мс. //********************************************
//******** Вывод на индикатор ******** anode |= 0x3C; // Р3[5:2] - set anode pins to switch off LEDs cathode = filldisplay(row, digit, Led[row][digit]); // Преобразование числа в символ индикатора dbuf. anode &= ~(1 << (digit + 2)); // Включаем разряд. if (++digit > 3) digit = 0; // Следующий разряд. if (abc_ena) t1set(); // Если автояркость активна, запускаем таймер для псевдо-ШИМ:
//******** Отображение ******** if ((!edit) && (screen_cnt)) screen_cnt--; // Счетчик режима отображения (screen_cnt=400). if (screen_cnt == 0) screen_start = 1; // Проверка режима отображения (every 2 seconds).
//******** Запуск АЦП ******** // Счетчик adc_cnt нигде не загружается, он декрементируется // по кругу за счет размерности типа переменной. if (--adc_cnt == 0) { ADC_CONTR = 0x8E; EADC = 1; }
Я знаю, но это не выход из положения. Скомпилировать - секундное дело. Персонально вам (в личку) могу скинуть хекс под 204-й с AUXR=1 (сейчас там 0). Покрутите, посмотрите как и что, потом поделитесь информацией здесь. Хотя и так ясно, что все будет так же, только все временные интервалы (выше выкладывал) будут быстрее. Кстати, этот бит и на Т1 влияет. Хотите?
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Я знаю, но это не выход из положения. Скомпилировать - секундное дело. Персонально вам (в личку) могу скинуть хекс под 204-й с AUXR=1 (сейчас там 0). Покрутите, посмотрите как и что, потом поделитесь информацией здесь. Хотя и так ясно, что все будет так же, только все временные интервалы (выше выкладывал) будут быстрее. Кстати, этот бит и на Т1 влияет. Хотите?
Давайте попробую. 7 бит на T1 не влияет, влияет на него только 6 бит. Запишите в AUXR=0x80, если запишите AUXR=0xC0 тогда повлияет и на Т1. Почему также, разряды перестанут мерцать что народ и хочет. Быстрее таймер срабатывает и частота обновления повышается. Может и программа конечно порушиться, по тестируем.
Секундные точки мигают часто это понятно, и перелистывание примерно через 3 секунды время день температура. При затемнении появляется мерцание разрядов. При полной яркости (яркость очень приличная) мерцания НЕТ. Это раньше если на советских АЛ318 АЛ324 выставишь 300Герц то ни чего не увидишь, а здесь применяются сверхяркие светодиоды в сегментах, что 300 Герц им не заметно снижения яркости.
Уважаемые Гуру! Подскажите, пожалуйста, что делать. Я прошил контроллер STC15W404AS из архива 03.zip. Все работало, но было заметно моргание цифр. Решил прошить прошивкой https://github.com, но в программаторе ошибочно нажал "Next time can program only wen P3.2 & P3.3". Прошивка залилась и контроллер работает (моргает двоеточие, переключаются точки при нажатии на кнопки, цифры не показывает), а программатор теперь контроллера не видит. Можно с ним что-нибудь сделать?
Такая ситуация требует имитации "полного стирания" - заливки в МК дампа, содержащего 0xFF по всем адресам дабы МК случайно не задрыгал тест-лапками. Затем повторим то же самое, но с отменой защиты - приводим МК в "исходное по умолчанию" состояние. И лишь потом прошиваем необходимую прожку (но уже не повторяя ошибок с "залочкой").
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения