Zastavení cyklování programu

Odpovědět
Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Zastavení cyklování programu

Příspěvek od Patrik » 28 kvě 2020, 21:15

Ahoj,

chtěl bych se zeptat jakým důvodem může být samovolné zastavení cyklování programu. Používám Arduino Mega 2560. Program cykluje bez problémů třeba 4 dny v kuse.. A někdy dojde prostě k tomu, že se cyklus zastaví a pomůže jedině restartovat napájením nebo např. znova uploudovat kód. Napadlo mě, že k zastavení mohlo dojít vlivem přehřátí... Ale nevím... Nejsou to pravidelné doby.. Někdy to jde bez problémů i týden.. Nevíte, co by mohlo být tímto problémem? Děkuji. Pokud možno tak také návrhy na řešení. Program není nikterak složitý... Vlastně se zobrazuje jen čas... A jen pokud někdo přiloží čipovou kartu, tak pak dochází k vyhodnocování různých cyklů.. Bez přiložené karty však dochází jen k přičítání sekund, minut, hodin a jejich nulování.

Děkuji

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Zastavení cyklování programu

Příspěvek od AstroMiK » 28 kvě 2020, 21:45

To se bude hledat hodně blbě.
Může docházet k nějakému přetečení paměti (přepsání návratových adres z podprogramů), překročení povoleného rozsahu proměnné, nebo to může být i tím hardwérem....

Kdybych byl v podobné situaci a nedařilo se mi najít příčinu, tak bych do toho programu asi zavedl Watchdog:
Při každé smyčce by se občerstvoval a když by program "zběhnul" a občerstvování by ustalo, tak by se po několika sekundách provedl automatický reset Arduina.

Český návod tady:
https://pihrt.com/elektronika/224-watchdog-a-arduino
(doporučuju i kouknout na komentáře pod článkem)

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zastavení cyklování programu

Příspěvek od pavel1tu » 29 kvě 2020, 11:11

Asi ti nezbude než tam dát třeba SD kartu a "logovat" všechny proměnné a cykly co spouštíš jen jednou za čas nebo s podmínkou, asi bych i logoval napájecí napětí.
Jednou se mi stalo, že jsem prostě jednu věc neuhlídal a prostě mi něco "přeteklo"
Několikrát u Arduin s malou pamětí "fragmentace" paměti
Jednou - prostě se zahřál zdroj, zkolaboval a posílal šílené věci do napájení a Arduino se kouslo

Já si na to už udělal funkci a každou novou věc automaticky nechávám třeba měsíc logovat stavy jak proměnných tak napětí.

PS: Watchdog je také řešení, ale začal bych tím hledáním chyby v programu
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Zastavení cyklování programu

Příspěvek od AstroMiK » 29 kvě 2020, 17:57

SD karta si vezme navíc několik set bajtů z RAM, takže jestli je problém s nedostatkem paměti, mohlo by se zasekávání projevit i dříve.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zastavení cyklování programu

Příspěvek od pavel1tu » 29 kvě 2020, 19:42

AstroMiK píše:
29 kvě 2020, 17:57
SD karta si vezme navíc několik set bajtů z RAM, takže jestli je problém s nedostatkem paměti, mohlo by se zasekávání projevit i dříve.
To je pravda, já na toto používám https://github.com/greiman/Fat16 měla by být minimalistická co se týče nároků na pamě´t atd.

Jinak používám https://github.com/greiman/SdFat
Je to asi autor klasické knihovny pro Arduino, ale tady je skvělá dokumentace a chodí mi to se všemi čtečkami co jsem zatím testoval, což se nedá říci o klasické knihovně. Zatím si ji jen testuji, SD karty moc nevyužívám
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Zastavení cyklování programu

Příspěvek od Patrik » 30 kvě 2020, 09:46

Pánové děkuji moc za rady. Nemyslím si, že bych měl problémy v programu, ale mohu se samozřejmě mýlit. Asi zkusím přepracovat celý program a uvidíme. Ve zdroji by problém být neměl.. Mám 12 V zdroj, který přes stabilizátor na 9 V napájí Ardurino... V případě výpadku napětí by však Ardurino začalo čerpat energii z 9 V baterie... Je zde samozřejmě hodně kondenzátorů, které dokáží Ardurino napájet i bez zdrojů pár vteřin.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů