Zastavení cyklování programu
Zastavení cyklování programu
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
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
Re: Zastavení cyklování programu
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)
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)
- 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
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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Zastavení cyklování programu
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.
- 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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Zastavení cyklování programu
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.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů