Arduino a funkce millis. Proč nikdy neuvidíte číslo 42.

Zajímavé téma ohledně funkce millis() pro vývojové kity Arduino Uno, Nano, prostě desky založené na Atmega328 zveřejnil Michal Dudka.

Zjistil, že po spuštění časovače právě s ATmega328 se nikdy nedočkáte 42 milisekundy a jejich násobků. Zároveň přidal i vysvětlení.

Upřímně, proč časovač v ATMega328 vynechá každou 42 milisekundu mě nikdy nenapadlo a navíc bych ani nečekal, že něco takového bude mikrokontrolér dělat. Ale důvod je ve finále naprosto logický.

Cituji Michala:
Nedávno při nějaké diskuzi mě zaujalo jak je na Aruino (UNO, nano, micro, prostě s Atmega328) řešená funkce millis(). Má zajímavou vlastnost, přibližně každou 42 druhou milisekundu v řadě „vynechává“. Takže když sestavíte primitivní program který bude stále dokola číst hodnotu millis tak se čísla 42 nedočkáte, a nedočkáte se ani 85, 127, 170 … atd. Je to dáno tím, že millis ve skutečnosti počítá s periodou 1.024ms (daň za to že použitý timer nepřijde o jeden PWM kanál) a když celková chyba přesáhne 1ms (nasbírá cca 42 chyb po 0.024ms) tak prostě „poskočí“ o 2ms aby se nerozcházela (zjednodušeně řečeno) – podobně jako když v přestupném roce přidáváme v únoru jeden den abychom ošetřili fakt že rok netrvá přesně 365 dní.

Michal Dudka je velmi zkušený programátor a bastlíř a spravuje svůj vlastní web http://www.elektromys.eu/

Tuto zajímavost sdílel ve facebookové skupině Arduino CZ & SK

Sdílejte článek:
Komentáře:
121 komentářů na sociálních sítích
@TomasBajer Já mám páječku z tindie, která používá weller hroty a je skvělá, ale můj styl práce je více opravování než pájení a ta pinzeta se mi hodí více... a dost lituju, že jsem nepřikoupil větší hroty :-D ...více
Číst komentáře
- a -
Přidat svůj názor
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Aby mohl napsat další článek.

Související články

Každý elektro nadšenec přinejmenším slyšel o Arduino, které získalo obrovskou popularitu díky svým jedinečným vlastnostem.

Arduino – proč se osvědčí nejen u neprofesionálů? Arduino Pro – proč bychom měli vsadit právě na toto řešení? Arduino Pro – komu je určeno? Hardwarová platforma Arduino Pro – Arduino Portenta – Arduino MKR a Arduino Pro – Arduino…

Aktuálně: Zákon o DPH pro zásilky malé hodnoty ze zemí mimo EU podepsal prezident Od 1.

Poznámka administrátora: PMOD zařízení využívají i některé vývojové desky od STM32 (například STM32L4 a IoT development board, STM32F723 Discovery s STMod+ konektorem) stejně jako vývojové desky od firmy Microchip.

V posledních letech jsou stále populárnější integrované platformy vybavené mikrokontroléry (nejznámější značkou je zde pravděpodobně Arduino).

Pavel Majerek z Babetta klubu Brno (facebook) mi poslal svůj projekt miniaturního mini mobilu založeného na Arduino Uno.