Čas chceš však zobrazovat průběžně, takže velmi přesně ho měříš dle oscilátoru RTC, a občas +- pár ms ho vyplivneš na displej (nebo někam jinam). Aspoň tak jsem to pochopil já.
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
Čas potřebuji zobrazovat každých 10 ms po dobu asi 3 min.
Takže k tomu potřebuji přesné 10ms impulsy, které sčítám do registru a ten pak po 10 ms zobrazuji.
Projevuje se tam však ta zmiňovaná nepřesnost.
Takže k tomu potřebuji přesné 10ms impulsy, které sčítám do registru a ten pak po 10 ms zobrazuji.
Projevuje se tam však ta zmiňovaná nepřesnost.
Re: Arduino due - millis
Načasovať 10ms sa dá aj 32kHz kryštálom, tak aby sa tá chyba nekumulovala. Ale ak to chceš naozaj presne tak použi kryštál procesora. Si myslím že už obyčajná millis bude presnejšia ako ten 32kHz kryštál. Samozrejme za predpokladu že to má kryštál a nie rezonátor.
Ako sa dá popasovať s nepresnoťou delenia je ukázané priamo v implementácii funkcie millis()
Celkom dobrý popis tu https://www.best-microcontroller-projec ... illis.html
úplne najpresnejšie sa to dá urobiť ale čítačom T1 (16 bit) a presným nastavením frekvencie kryštála na 16Mhz. Potom sa nastaví mód s autoreload vlasnoťou a to tak aby prerušenie prišlo presne každú 1ms
Inak dosť pochybujem že potrebuješ čas zobrazovať každých 10ms. Skôr potrebuješ merať čas s rozlíšením na 10ms. Pravdepodobne vyrábaš stopky (napr. pre hasičov). Na takýto účel millis nie je vhodný. Treba si to napočítať po svojom.
Ako sa dá popasovať s nepresnoťou delenia je ukázané priamo v implementácii funkcie millis()
Celkom dobrý popis tu https://www.best-microcontroller-projec ... illis.html
úplne najpresnejšie sa to dá urobiť ale čítačom T1 (16 bit) a presným nastavením frekvencie kryštála na 16Mhz. Potom sa nastaví mód s autoreload vlasnoťou a to tak aby prerušenie prišlo presne každú 1ms
Inak dosť pochybujem že potrebuješ čas zobrazovať každých 10ms. Skôr potrebuješ merať čas s rozlíšením na 10ms. Pravdepodobne vyrábaš stopky (napr. pre hasičov). Na takýto účel millis nie je vhodný. Treba si to napočítať po svojom.
Re: Arduino due - millis
Potřebuji. Ke stopkám je externí displej, kde se zobrazuje průběžný čas.Inak dosť pochybujem že potrebuješ čas zobrazovať každých 10ms.
Re: Arduino due - millis
a ten sleduje niekto vysokorýchlostnou kamerou?
Re: Arduino due - millis
Teoreticky by stačilo zobrazovat desetiny sec. a konečný čas zobrazit i se setinami.
To však neřeší původní problém.
To však neřeší původní problém.
Re: Arduino due - millis
Zobrazovať môžeš kludne aj so stotinami len to budeš posielať ako stihneš. Aj prenos na displej niečo trvá. Akú tam máš baudovú rýchlosť?
Dva spôsoby riešenia som ti navrhol. Lepšie je to s interným kryštálom a 16b čítačom.
Keď som kedysi dávno staval hodiny (nie jedny) tak som dosiahol presnosť 1sek/mesiac s interným kryštálom.
Dva spôsoby riešenia som ti navrhol. Lepšie je to s interným kryštálom a 16b čítačom.
Keď som kedysi dávno staval hodiny (nie jedny) tak som dosiahol presnosť 1sek/mesiac s interným kryštálom.
Re: Arduino due - millis
Všude se dozvídám, jak přesný je RTC s DS3231, proto jsem se na něj zaměřil, ale je problém dostat z něj 10 ms.
Složitému dopočítávání jsem se chtěl vyhnout, proto zjišťuji, zda s tímto modulem má někdo lepší zkušenosti.
Millis jsem zkoušel jako první, ale přesnost byla nevyhovující.
Používám DUE s krystalem.
Složitému dopočítávání jsem se chtěl vyhnout, proto zjišťuji, zda s tímto modulem má někdo lepší zkušenosti.
Millis jsem zkoušel jako první, ale přesnost byla nevyhovující.
Používám DUE s krystalem.
Re: Arduino due - millis
Millis je nepresný prečo? Čím testuješ presnosť? Aká je f oscilátora? Bežné kryštály arduina sa udávajú ako 16.000Mhz. Potom to už môže byť hocičo.
DS3231 nemám odskúšaný. V tej dobe keď som robil hodiny bol DS1302. S ním to utekalo za mesiac aj niekoľko minút. Preto som čas počítal na základe interného osc a každú minútu ukladal do RTC len pre prípad výpadku. MCU ale bežalo s presným časovým kryštálom ktorý má f udávanú na 1Hz. Okrem toho som ju dolaďoval kapacitným trimrom. Neverím že 32kHz kryštál bude presnejší a stabilnejší ako 16MHz.
Internet je plný blbostí, treba filtrovať. Pre niekoho je presné 2sekundy denne. Pre niekoho je to málo.
Ak to chceš mať super presné daj si tam TCXO 10Mhz a môžeš merať pomaly na mikrosekundy
DS3231 nemám odskúšaný. V tej dobe keď som robil hodiny bol DS1302. S ním to utekalo za mesiac aj niekoľko minút. Preto som čas počítal na základe interného osc a každú minútu ukladal do RTC len pre prípad výpadku. MCU ale bežalo s presným časovým kryštálom ktorý má f udávanú na 1Hz. Okrem toho som ju dolaďoval kapacitným trimrom. Neverím že 32kHz kryštál bude presnejší a stabilnejší ako 16MHz.
Internet je plný blbostí, treba filtrovať. Pre niekoho je presné 2sekundy denne. Pre niekoho je to málo.
Ak to chceš mať super presné daj si tam TCXO 10Mhz a môžeš merať pomaly na mikrosekundy
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů