SDS se zablokovalo (opakovaně se resetuje) kvůli chybnému FC programu (jak to narazí na konkrétní věc, viz dále, dojde k resetu zařízení - bezpečný stav, nepokračuje to dále). Máte tam očividně starou verzi firmware, protože aktuální si s tím (viz popis problému dále) už umí specificky poradit. Včetně té situace s RSTD.
Řešení je teď odstranit FC program ze zařízení, což se v dané situaci (kdy máte starý firmware co neumí zablokovat FC pomocí RSTD...) udělat u výrobce - ten vám to udělá zadarmo (popř. za poštovné).
Původní chyba je v tom, jak je váš FC program zapsán - vysvětlím:
Původní definice "textik" je pouze pointer (ukazatel), který tedy zabírá jen 4 bajty a nic víc.
char textik[]; // toto je jen ukazatel, a ne pole znaků (neví se velikost)
Tím pádem, po zavolání sprintf() dojde k přepsání RAM která už do "textik" vůbec nepatří.
Jedno z mnoha možných správných řešení:
#define MAX_DELKA_TEXTIK (128)
char textik[MAX_DELKA_TEXTIK]; // toto alokuje pole znaků o 128 položkách, tj. pro max 127 znaků plus 0x00 nakonci
...
snprintf(textix, MAX_DELKA_TEXTIK, "naruseni %u", status); // bezpečný způsob
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !