Zatížení arduina a generování času

daton
Příspěvky: 667
Registrován: 16 bře 2013, 16:12

Zatížení arduina a generování času

Příspěvek od daton »

Dobrý den
chtěl bych se zeptat zda se dá zatížení procesoru arduina odvodit jednoduše například ze svitu (v mém případě) červené diody signalizující běh. Měl jsem na něm dříve spuštěný program při kterém dioda jen nevýznamně občas pohasla ale jinak svítila. Ted jsem napsal jiný program, který je rozsáhlejší a při něm dioda jen velmi slabě pomrkává. Máte s tímto vizuálním posouzením zátěže někdo zkušenosti?
V programech mám jen jednoduše softwarově vytvořené hodiny. V prvním případě bylo zpoždění kolem 1 min za den na stejné desce (arduino nano) v druhém případě (u druhého náročnějšího pogramu co využívá i interupt) mám nyní zpoždění až 10 min za den a to už mi trochu vadí. Chtěl bych ty hodiny alespoň trochu srovnat. Řešením by bylo udělat to změnou frekvence nebo každý den na konci přičíst 10 min. Ale vrtá mi hlavou jestli to zpoždování je skutečně jen kvůli větší softwarové zátěži procesoru nebo jestli se mění frekvence oscilátoru arduina.
Naposledy upravil(a) daton dne 04 bře 2016, 19:53, celkem upraveno 1 x.
DavidO
Příspěvky: 1146
Registrován: 01 kvě 2013, 21:27

Re: Zatížení arduina

Příspěvek od DavidO »

Pokud PWR LED viditelně pohasíná v závislosti na běhu programu, tak to není nevýznamné. Malý pokles bys okem nepoznal. Když to okem zřetelně vidíš, znamená to, že napájení klesá podstatně. To se pak nejde divit, že hodiny ujíždějí. Možná se ti přitom i restartuje program v Arduinu.
Například tím napájíš i něco jiného (třeba displej), co žere víc nebo míň podle toho, co mu velí program v Arduinu, anebo máš někde v zapojení hardwarový problém, který způsobuje občasný prudký nárůst proudu, který zdroj nedokáže uspokojit (něco jako "spínaný zkrat"). V prvním případě musíš obvod napájet něčím lepším, v druhém najít tu chybu.

Hodiny můžou jít blbě i kvůli HW problémům, např. nekvalitní klon ATmegy, krystalu, krystal nahrazený interním oscilátorem atmegy pro ušetření nákladů (a ten je závislý na kdečem včetně počasí) apod., ale v tomhle případě sázím spíš na problém s odběrem proudu (USB by bez dalšího mělo standardně poskytovat 100mA ale jestli tam máš připojený nějaký displej, svítítka, hejblátka, tak to si může vzít mnohem víc, případně tvůj počítač ani těch 100mA na USB nedá).
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
daton
Příspěvky: 667
Registrován: 16 bře 2013, 16:12

Re: Zatížení arduina

Příspěvek od daton »

Zdravím
Ne ne v napájení to určitě není . Myslím tu diodu na arduinu jak bliká s během rpogramu ta myslím není přímo napojená na napájení. Jde o to že mám na arduinu napojený webový štít a snímám s ním napětí ze soláru a naopak řídím nějaká rele. Avšak když jsem měl ve stejné konfiguraci starý program tak ten ještě nepracoval s přerušením a neměl více výpočtů statistiky. Nyní jsem ho předělal a od té doby ta dioda jen jemně žhne a poblikává přičemž dříve svítila naplno a pravidelně jen poblikávala. Projevilo se to i tím zpomalením času. Jinak požívám to male arduino nano i když ted už mi přestává vyhovovat potřebuji víc ad vstupů a 7 již je málo.
DavidO
Příspěvky: 1146
Registrován: 01 kvě 2013, 21:27

Re: Zatížení arduina

Příspěvek od DavidO »

Aha. Na nano jsou 4 LED, jedna přímo na napájení, zbylé tři připojené na některé piny, D0, D1 a snad D13 (nevím už přesně). Jediné, co mě při čtení "červená dioda signalizující běh" napadlo, byla ta PWR LED, protože když má Arduino napájení, běží, ale ty ostatní jsou řízené programem a signalizují to, co program chce. Když se ty piny používají a taky když k nim je něco připojené, tak příslušná LED může žhnout, blikat, svítit (podle toho, jak rychle se zapíná a rozpíná). To se potom podívej, která to konkrétně je a jak ten konkrétní pin v komunikaci používáš (nic lepšího se bez znalosti programu říct nedá).
Podle dalšího popisu se mi ale zdá, že sis tou předělávkou buď rozhodil zpracování přerušení od časovače (někde v přerušení děláš něco delšího a pak někde unikne událost od časovače, který a která se používají pro počítání času) anebo ty jednoduše softwarově vytvořené hodiny nejsou korektní (např. přímočaré použití konstrukce ve stylu delay(1000);vterina++;).
Taky je dobrý si uvědomit, že chyba hodin 1%, což vypadá jako docela slušná přesnost, ti udělá skoro čtvrt hodiny denně (24h*60min/h=1440 minut denně, 1% je 14,4...).
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
daton
Příspěvky: 667
Registrován: 16 bře 2013, 16:12

Re: Zatížení arduina

Příspěvek od daton »

Jo tak to bude ono tím interaptem to dost zatěžuji. Jinak myslel jsem tu L diodu na kraji nikoliv napájecí PWR. Ale máte pravdu že jedno procento je nevýznamné i když ten můj systém na sledování soláru mi běží už 70dni bez přerušení a tam to už dělá nedobrotu. Budu muset zapřemýšlet jak to zpřesnit.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1535
Registrován: 16 úno 2013, 14:26

Re: Zatížení arduina

Příspěvek od Dex »

Jestli to chápu správně, je Arduino na internetu. Pak se přímo nabízí http://playground.arduino.cc/Code/NTPclient
"all your robots are belong to us"
robodoupe.cz
daton
Příspěvky: 667
Registrován: 16 bře 2013, 16:12

Re: Zatížení arduina

Příspěvek od daton »

Hmm nejsem si jist jestli to dobře chápu moje angličtina není uplně dobrá. To co používám jsou klasické html příkazy obalené tím co je nutné aby to arduino a shild zpracovaly.
Arduino nano je asi hodně zatížené protože zpracovává jak jsem psal všechny měření, přepočty na skutečné hodnoty, trochu statistiky co se týče vyhodnocení poruch (opravdu jen začátky primitivní diagnostiky celého systému) dále pak ten čas a vše potřebné pro jednu stránku na které jsou uvedeny hodnoty vypadá to takto
server.jpg
No už mi to chodí asi 2 roky s arduinem nano a docela spokojenost.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1535
Registrován: 16 úno 2013, 14:26

Re: Zatížení arduina

Příspěvek od Dex »

Pomocí NTP (Network Time Protocol) můžete z internetu získat přesný čas. To stačí třeba jednou za den. Ta implementace je "lehkotonážní", takže by snad neměl být problém.
"all your robots are belong to us"
robodoupe.cz
daton
Příspěvky: 667
Registrován: 16 bře 2013, 16:12

Re: Zatížení arduina

Příspěvek od daton »

Jestli jsem si to správně vysvětlil tak on to získá z internetu v podobě čísla v sekundách. To je pak potřeba rozhodit do klasického formátu hodin což už tam není.
Nic mi neříká ten převod do unix kodu vím že to je programovací jazyk ale nikdy jsem s ním nedělal. U arduina to budu muset přepočítat klasicky ne?
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: Zatížení arduina

Příspěvek od jrt »

myslel jsem tu L diodu na kraji
L dioda je připojena na pin D13, takže její blikání je buď řízeno programem, nebo je něco opravdu hodně špatně...
jrt
Odpovědět