Вопрос по зависанию микроконтроллера

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
Ребята, всем привет. У меня такой вопрос. Дела часы на arduino и диодах ws2812b (по завершении выложу исходники и статью по ним), но столкнулся с проблемой зависания arduino. Проект реализован с использованием RTC. Как работает, в основном цикле RTC опрашивается и если значение секунд поменялось то перерисовываем циферблат. Эта схема работает чуть больше суток после чего происходит зависание (я так думаю) значения на циферблате застывают или начинают теряться данные (не все светодиоды горят или горит только один из всех :) ). Программист я со стажем, не в микроконтроллерах, конечно, но всё же меня это обижает :). Микроконтроллеры пробовал разные от Uno до Mega результат один. Уж и не знаю что делать. Может кто посоветует что проверить или у моей программы память где-то течет или еще что-то связанное с кривостью моих рук (во что не хочется верить :) , но всё возможно )? Приложил один из классов как пример, может уже на основе этого кода что-то мне подскажите.
 

Вложения

mechanic

★★★★✩✩✩
Команда форума
31 Июл 2018
403
205
Часовой контроллер случаем не 1307 ?
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Привет, в библиотеке ClockController.h
присваиваешь отрицательное... когда

int8_t | char | от -128 до 127
uint8_t | byte, unsigned char | от 0 до 255
int16_t | int | от -32768 до 32767
uint16_t | unsigned int, word | от 0 до 65535
int32_t | long | от -2147483648 до 2147483647
uint32_t | unsigned long | от 0 до 4294967295


================================
uint8_t OldSecond = -1;
};
#endif
================================
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
и в основном коде...

==================================
case Button::pOWER:
{
Display->Parameters[Display->IS_OFF].Value = Display->Parameters[Display->IS_OFF].Value == 0 ? 1 : 0;
Display->Strip.clear();
Display->Strip.show();
OldSecond = -1;
SaveSettingsToROM();
break;
}
==================================
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = Display->Parameters[Display->ANALOG_OR_DIGITAL].Value == 0 ? 1 : 0;
OldSecond = -1;
SaveSettingsToROM();
}
}
}
==================================
else
{
if (!Display->Parameters[Display->ANALOG_OR_DIGITAL].Value)
{
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = 1;
OldSecond = -1;
Update();
delay(5000);
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = 0;
}
}
}
}
============================================
 

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
Привет, в библиотеке ClockController.h
присваиваешь отрицательное... когда

int8_t | char | от -128 до 127
uint8_t | byte, unsigned char | от 0 до 255
int16_t | int | от -32768 до 32767
uint16_t | unsigned int, word | от 0 до 65535
int32_t | long | от -2147483648 до 2147483647
uint32_t | unsigned long | от 0 до 4294967295


================================
uint8_t OldSecond = -1;
};
#endif
================================
Спасибо, досадная оплошность.
 

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
и в основном коде...

==================================
case Button::pOWER:
{
Display->Parameters[Display->IS_OFF].Value = Display->Parameters[Display->IS_OFF].Value == 0 ? 1 : 0;
Display->Strip.clear();
Display->Strip.show();
OldSecond = -1;
SaveSettingsToROM();
break;
}
==================================
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = Display->Parameters[Display->ANALOG_OR_DIGITAL].Value == 0 ? 1 : 0;
OldSecond = -1;
SaveSettingsToROM();
}
}
}
==================================
else
{
if (!Display->Parameters[Display->ANALOG_OR_DIGITAL].Value)
{
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = 1;
OldSecond = -1;
Update();
delay(5000);
Display->Parameters[Display->ANALOG_OR_DIGITAL].Value = 0;
}
}
}
}
============================================
Спасибо, досадная оплошность.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@flashguy, а что за проект? можешь показать?
я вот просто тоже сейчас делаю на ws2812b часы-светильник. Пока что в ожидании приезда компонентов из Китая. Код ещё не писал, занимаюсь пиксельатром циферок и прочих свистоперделок.
 

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
@KOHb, покажу, статья готовиться скоро появиться на форуме.
 

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
@flashguy, скажи хоть, часы матрицей сделаны?)))
Нет, не матрицей :)
Часы круглые. Светодиоды расположены по окружности. Не обижайся у меня своя примета, что если показать работу до её завершения она никогда не будет законченной. Советом или кодом помогу.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@flashguy, спс. Но мой проект матрицей сделан.
Просто думал поделится наработками которые сделал и нашел)
По проекту "как у тебя по кругу" могу чуть позже скинуть статью. Видел похожий проект )
 

flashguy

✩✩✩✩✩✩✩
5 Ноя 2018
28
2
@KOHb, да у меня всё готово, спасибо, остался только вот этот баг и финальное наведение красоты корпуса.