Právě že vůbec nevadí, že jedou jen na sekundy, když chci měřit delší úsek jako je např. 5 minut. Pokud si s každým sekundovým tikem RTC zvýším sekundové počítadlo v programu a zároveň si zapamatuju millis() v době toho tiku, tak pak jsem schopný na milisekundy přesně spočítat čas (nepřesnost millis() v rámci té jedné sekundy bude zanedbatelná).
Arduino due - millis
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: Arduino due - millis
Re: Arduino due - millis
Ještě se vrátím ke starému tématu.
RTC modul má výstup 32 K, frekvence sedí, ale Upp pouze 380 mV při napájení +5 V.
Přidám-li pull-up odpor (zkoušel jsem 10k a 1k), nic se nezmění.
Ví někdo, jak použít tento výstup?
Nastavuje se nějak interně?
RTC modul má výstup 32 K, frekvence sedí, ale Upp pouze 380 mV při napájení +5 V.
Přidám-li pull-up odpor (zkoušel jsem 10k a 1k), nic se nezmění.
Ví někdo, jak použít tento výstup?
Nastavuje se nějak interně?
Re: Arduino due - millis
A jaký je to modul?
Re: Arduino due - millis
Výstup 32K je třeba povolit na adrese 0Fh bitem EN32kHz
Re: Arduino due - millis
Je to vlastně jednoduché. Stačí použít příklad z knihovny DS3231, příkazy :
Clock.enable32kHz(on); Clock.enable32kHz(!on);
Clock.enable32kHz(on); Clock.enable32kHz(!on);
Re: Arduino due - millis
Potřebuji však čas průběžně zobrazovat po 10 ms, takže z modulu dostat nějak 10ms impulsy a ty pak zobrazovat ve tvaru 000:00Právě že vůbec nevadí, že jedou jen na sekundy, když chci měřit delší úsek jako je např. 5 minut. Pokud si s každým sekundovým tikem RTC zvýším sekundové počítadlo v programu a zároveň si zapamatuju millis() v době toho tiku, tak pak jsem schopný na milisekundy přesně spočítat čas (nepřesnost millis() v rámci té jedné sekundy bude zanedbatelná).
Re: Arduino due - millis
Frekvence toho výstupu a frekvence oscilátorů pro RTC a jiné oprace s časem je naschvál 32 768. Je to nebližší mocnina čísla 2 nad hranicí (lidem) slyšitelného zvuku. Pokud tuto frekvenci proženeš přes sérii klopných obvodů, tak na 15tém budeš mít přesně 1s impulzy. Stejného efektu dostaneš, pokud každý impuls přičteš do proměnné a budeš hlídat dosažení hodnoty 32767. Pokud chceš impulzy co XXms, musíš si spočítat jakého čísla při frekvenci 32768 dosáhneš za potřebný počet ms.
Re: Arduino due - millis
32768/100 = 327,68.
Potíž je v tom, že všechny frekvence, které lze dostat z modulu, nejsou dělitelné 100 beze zbytku.
Nepřesnost daná zbytkem degraduje přesnost modulu.
Potíž je v tom, že všechny frekvence, které lze dostat z modulu, nejsou dělitelné 100 beze zbytku.
Nepřesnost daná zbytkem degraduje přesnost modulu.
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Arduino due - millis
10ms nikdo neuvidí - nechápu proč to chceš zobrazovat
nebo jsou myšleny nějaké mezičasy ?
já jsem klasické arduino (NANO, UNO) testoval, asi 500 měření po 1s/10s/100s/1000s - s aktivací vstupu jsem ukládal čas a zároveň z našeho testeru v práci - 20% bylo nad 2% - netuším proč, spíš to bylo jak střelba na holuby
nakonec jsem to udělal na STM32 a druhý kus na RPi PICO - tam je to OK - prostě je to celkově rychlejší CPU včetně zpracování vstupů
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"
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 45 hostů