Нужна помощь в программировании

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

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации.
По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например.
Да и частота обновления дисплея у них чрезмерно высокая.

Странный какой-то глюк, из-за которого МК греется. На плате все чисто?
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3124748#p3124748"]Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации.
По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например.
Да и частота обновления дисплея у них чрезмерно высокая.

Странный какой-то глюк, из-за которого МК греется. На плате все чисто?[/uquote]

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

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

Пока определил пакеты запросы 0х81 секунды 0х85 часы 0х83 мин 7 ячеек RAM (наверное настройки часов типа пикать не пикать и будильник насколько выставлен) 0х89 месяц 0х87 дата 0х8B день, у вас считывание раз в секунду Burst mode, а они постоянно по очереди опрашивают.
Я понял у них получается если секунды сменились сразу отобразятся, у вас получается погрешность если секунды сменились то задержка на считывание примерно от 0 до 1 сек. Зависит от того на какой милисекунде запустился контроллер после подачи питания это и будет плавающая погрешность в пределах 1 секунды. Получается рассинхронизация. Я думаю вы мою мысль поняли.
Реклама
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3124678#p3124678"]Кстати, если интересно, это мой опрос 1302.

Показан только один пакет, данные запрашиваются раз в секунду. У нас запросы отличаются по форме. Неохота поднимать документацию по 1302, чтобы выяснять, что они там делали. Я делал т.н. Burst Mode, прием 8 байт оптом. Диаграмму с дисплея я не снимал.[/uquote]

Разобрал ваш опрос 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 сек температуру, то что надо. Яркость тоже устраивает дневной и ночной режим.
DIY SKU 972289 plata v2_0005 обрезок.jpg
(135.81 КБ) 786 скачиваний
Осталось разобраться с не всегда корректным запуском, как бы не сгорел от перегрева. Заказал запасной чистый (пустой) без прошивки STC15W404AS буду с ним химичить. А этот оставлю с оригинальной прошивкой, потому что её потом негде будет взять.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Записью в 0хС2 и 0хС4 ДС1302 сохраняются начало и конец срабатывания "кукушки". 0xC3 и 0xC5 соответственно чтение их.
Я изначально хранил настройки в еепром МК, а потом подумал, что грех не использовать такое хранилище, как ОЗУ 1302. И размер кода уменьшился при этом.
Varimon писал(а):Заказал запасной чистый (пустой) без прошивки STC15W404AS буду с ним химичить. А этот оставлю с оригинальной прошивкой, потому что её потом негде будет взять.
Правильный подход. У меня тоже в начале изысканий хранился оригинальный чип (15F204EA) с прошивкой, не помню только остался или я его задействовал куда-то.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Эиком - электронные компоненты и радиодетали
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

Пришла STC15F204EA, у меня часы на STC15F404AS схема как у вас в 3 архиве из статьи. Загрузил в 204 прошивку из 1 архива, на ней видны мерцания разрядов не сильно но есть все таки, вам нужно повысить частоту смены разрядов как у китайцев мое мнение.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Я все понимаю, но вот браться за часы опять просто-напросто влом :(
Есть другие вещи, которыми хочется заниматься, а эти часы как дамоклов меч надо мной. И пообещал, что исправлю, и жутко неохота.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
denmmx
Родился
Сообщения: 10
Зарегистрирован: Пн июн 05, 2017 18:07:35
Откуда: Брянск

Re: Нужна помощь в программировании

Сообщение denmmx »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3138538#p3138538"]Я все понимаю, но вот браться за часы опять просто-напросто влом :([/uquote]
Очень надеюсь, что появится все-таки время поправить прошивку, ибо очень заметно мерцание индикаторов) Тоже сегодня получил новую STC15F404AS, прошил - все отлично работает, да и настраивать часы стало намного удобнее!
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3124748#p3124748"]Просто опрос часов происходит по прерыванию таймера 0, он же используется и для индикации.
По какой-то причине они дергают 1302 после каждых четырех обновления разрядов, а не 1000 например.
Да и частота обновления дисплея у них чрезмерно высокая.[/uquote]

Так вам всего лишь поделить значения таймера 0 на 6 и все, хотя я не знаю что у вас еще привязано к нему, а 300 Герц в самый раз получается, у Вас 50 Герц навскидку, не замерял.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Если интересно:
Спойлер

Код: Выделить всё

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;
  }

// Счетчик мигания разделительных точек
	if (--flash_cnt == 0)
	{
		flash = ~flash;
		flash_cnt = 100;		// 5ms * 100 = 0.5s
    if (longplusedit) key = 0x08; // Имитация нажатия кнопки ПЛЮС каждые полсекунды.
	}

//********* Сhime/alarm beep *********
  if (chime || alarm) beep();
    
//========= DS1302 read counter ===========
    if (rtc_cnt) rtc_cnt--;
      else ds_read = 1;

//******* Read buttons' state ********
    if (btn_cnt) btn_cnt--;
      else  btn_start = 1;  // Проверка каждые 20 мс.
  
} // End of T0 interrupt
Вот все эти счетчики надо будет подгонять под переполнение 1 мс.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

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

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Он используется для АРЯ. Отключает разряды индикатора раньше времени прерывания Т0 для снижения яркости.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

Есть регистр AUXR по умолчанию у него все биты в 0. Если выставить 7 бит в 1, то таймер нулевой заработает в 12 раз быстрее. Просто ради эксперимента.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Я знаю, но это не выход из положения.
Скомпилировать - секундное дело. Персонально вам (в личку) могу скинуть хекс под 204-й с AUXR=1 (сейчас там 0). Покрутите, посмотрите как и что, потом поделитесь информацией здесь. Хотя и так ясно, что все будет так же, только все временные интервалы (выше выкладывал) будут быстрее. Кстати, этот бит и на Т1 влияет.
Хотите?
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3140124#p3140124"]Я знаю, но это не выход из положения.
Скомпилировать - секундное дело. Персонально вам (в личку) могу скинуть хекс под 204-й с AUXR=1 (сейчас там 0). Покрутите, посмотрите как и что, потом поделитесь информацией здесь. Хотя и так ясно, что все будет так же, только все временные интервалы (выше выкладывал) будут быстрее. Кстати, этот бит и на Т1 влияет.
Хотите?[/uquote]
Давайте попробую. 7 бит на T1 не влияет, влияет на него только 6 бит. Запишите в AUXR=0x80, если запишите AUXR=0xC0 тогда повлияет и на Т1.
Почему также, разряды перестанут мерцать что народ и хочет. Быстрее таймер срабатывает и частота обновления повышается. Может и программа конечно порушиться, по тестируем.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Пробуйте.
Перелистывание будет слишком частым, опросы АЦП и прочее.
В общий доступ я это выкладывать не буду.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Varimon
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт авг 16, 2016 20:27:29

Re: Нужна помощь в программировании

Сообщение Varimon »

Секундные точки мигают часто это понятно, и перелистывание примерно через 3 секунды время день температура. При затемнении появляется мерцание разрядов. При полной яркости (яркость очень приличная) мерцания НЕТ.
Это раньше если на советских АЛ318 АЛ324 выставишь 300Герц то ни чего не увидишь, а здесь применяются сверхяркие светодиоды в сегментах, что 300 Герц им не заметно снижения яркости.
alex5551
Родился
Сообщения: 4
Зарегистрирован: Вт авг 29, 2017 15:17:04

Re: Нужна помощь в программировании

Сообщение alex5551 »

Уважаемые Гуру! Подскажите, пожалуйста, что делать. Я прошил контроллер STC15W404AS из архива 03.zip. Все работало, но было заметно моргание цифр. Решил прошить прошивкой https://github.com, но в программаторе ошибочно нажал "Next time can program only wen P3.2 & P3.3". Прошивка залилась и контроллер работает (моргает двоеточие, переключаются точки при нажатии на кнопки, цифры не показывает), а программатор теперь контроллера не видит. Можно с ним что-нибудь сделать?
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Нужна помощь в программировании

Сообщение Zhuk72 »

Указанные пины посадите на массу при прошивке. Это вы активировали защиту от случайного программирования.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
alex5551
Родился
Сообщения: 4
Зарегистрирован: Вт авг 29, 2017 15:17:04

Re: Нужна помощь в программировании

Сообщение alex5551 »

Сажал - не реагирует.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Нужна помощь в программировании

Сообщение BOB51 »

Такая ситуация требует имитации "полного стирания" - заливки в МК дампа, содержащего 0xFF по всем адресам дабы МК случайно не задрыгал тест-лапками.
Затем повторим то же самое, но с отменой защиты - приводим МК в "исходное по умолчанию" состояние.
И лишь потом прошиваем необходимую прожку (но уже не повторяя ошибок с "залочкой").
:roll:
Ответить

Вернуться в «Разные вопросы по МК»