Arduino due - millis

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Arduino due - millis

Příspěvek od Caster » 24 říj 2021, 23:22

Podle mě z toho děláš kovbojku. Pokud potřebuješ přesnost do 50 mS, tak ti na to musí stačit v pohodě milis. SAM3X8E má také 9 TC čítačů, které lze v pohodě naprogramovat, aby ti generovali požadovaný signál.

Já se chystám zapékat součátky na varné desce řízené triakem spínaným při průchodu nulou, kde pomocí ATtiny202 zkušebně generuji puls 80 µS na zapnutí triaku pomocí TCB. Náběžná hrana žlutého signálu signalizuje průchod nulou a nastartování čítače TCB což trvá 8,1 µS. Clock ATtiny202 je defaultní 20 MHz / 6 = 3,33 MHz.

TCB0.CCMP = 237; /* Compare or Capture: 237 * 1/3,33E6 = 71,17 µS Vlivem zpoždění pár instrukcí v IRQ rutinách je to pak těch 80 µS */

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino due - millis

Příspěvek od kiRRow » 25 říj 2021, 15:30

Áha, takže stopky s displejem. Konečně něco víme. Co já vím, tak u stopek je důležité měření, průběžné zobrazení je pouze orientační a na jeho přesnosti (pokud ho fakt nenatáčíš vysokorychlostní kamerou) naprosto vůbec nezáleží, důležitý je až "stop/mezičas". Např na 7-Seg displeji v řádech setin sekundy stejně uvidíš jen "8" v důsledku setrvačnosti LED a lidského oka. Taky kdo se dívá 3minuty na stopky, místo na to co se stopuje.

Takže rozhodně použít krystal jenž taktuje procesor (bude mnohem přesnější), používat interupt timer místo millis, naprosto se vybodnout na přesné zobrazování na displeji. Displej vypisovat, kdykoliv na to bude čas a důvod.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14
Reputation: 0

Re: Arduino due - millis

Příspěvek od Elkez » 25 říj 2021, 16:30

Možná byste se divili. Displej sleduje někdy i 100 párů očí a to dost bedlivě.
Představte si, že po výstřelu ze startovací pistole se rozběhne čas až za 1 vteřinu, protože tak dlouho trvá, než se zobrazí 1. vteřina. Nevěřili byste, jak je vteřina v některých případech dlouhá. Už bych měl na krku rozhodčí, ne-li něco horšího, že mi to měří blbě. Některým lidem přírodní zákony nevysvětlíš. Proto se musí zobrazovat alespoň desetiny vteřiny průběžně a to ihned od začátku.
Setiny jsou také důležité, protože se již několikrát stalo, že se naměřil stejný čas, ale ty se mohou zobrazit až nakonec. Dokonce byl požadavek měřit na ms, ale rozmluvil jsem jim to, není to určené pro F1.
Vysokorychlostní kamera opravdu není nutná.

peterple
Příspěvky: 156
Registrován: 22 zář 2021, 20:20
Reputation: 0

Re: Arduino due - millis

Příspěvek od peterple » 25 říj 2021, 17:43

Obhajuješ svojich 10ms jednou sekundou? Nuž keby si zobral tú vysokorýchlostnú kameru možno by si zistil že na tom displeji sa za 10ms ani nezobrazia všetky číslice toho čísla. Ak beží v multiplexe. Ale možno nebeží. V takom prípade vieme že všetkých 100 očí čo pozerajú na displej tak im to stačí aktualizovať 24x za sekundu. A to už budú vnímať ako plynulý pohyb (teda na stotinách uvidia osmičku s meniacim sa jasom. Je to vyskúšané desiatkami rokov v kinách (24 obrázkov/sek) a televízoroch (25/50 obrázkov/polsnímkov za sek)
Hocijaké arduino vie merať s presnosťou na 1ms ak sa to dobre naprogramuje. Ani ten millis by do troch minút nemusel nikto poznať že to nie je úplne presné. Neodpovedal si na otázku ako si zistil že to nevyhovuje.
Stopky musia štartovať, zastavovať a počítať čas cez prerušenia. A to millis splňuje. Zobrazovanie je volnočasová aktivita hlavného programu a ak ho nebudeš zbytočne brzdiť tak to určite stihne viac krát ako 10 za sekundu.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14
Reputation: 0

Re: Arduino due - millis

Příspěvek od Elkez » 25 říj 2021, 18:47

Nejsem si jist, zda nezaměňuješ přesnost s rozlišením, ale nejde mi o 10 ms, to až na konci měření. Důležité je, aby se stopky rozběhly okamžitě se startem. A to z hlediska lidských možností splňuje zobrazení s frekvencí 10 Hz a vyšší, tedy stačí 0,1 s.
Ani ten millis by do troch minút nemusel nikto poznať že to nie je úplne presné.
Jde mi o přesnost čistě z profesního hlediska. Běžně tato přesnost stačí, ale není vyloučeno měření času v řádech desítek minut.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14
Reputation: 0

Re: Arduino due - millis

Příspěvek od Elkez » 25 říj 2021, 18:54

Ještě k millis, viz
viewtopic.php?t=584
plus problémy s nestabilitou při značně různých teplotních podmínkách.

peterple
Příspěvky: 156
Registrován: 22 zář 2021, 20:20
Reputation: 0

Re: Arduino due - millis

Příspěvek od peterple » 25 říj 2021, 19:07

nie nemýlim si presnosť s rozlíšením. Ako som písal dosahoval som presnosť 1sek/mesiac. Oscilátor som nastavoval s presnosťou na desatinu Hz - kryštál 2^22. Tých hodín boli desiatky. Náročnejší zákazníci si dokonca kúpili aj DCF synchronizáciu a nastavovanie. Tiež som robil stopky pre hasičov na dva útoky s dvomi 6miestnimi LED displejmi na pulte a jedným 5miestnym externým.
V tvojom prípade odhadujem že pri rozlíšení 1ms pomocou millis nebude za 10minút presnosť horšia ako je 10-20ms Navyše je stále rovnaká takže výkony sú porovnateľné (pri f 16.000Mhz) Ak ta trapi teplotná stabilita navrhol som TXCO. Ale už sa tu točím dokola a z teba nevypadol jediný relevantný údaj. Takže za mňa asi všetko. Veľa šťastia pri stavbe.

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino due - millis

Příspěvek od kiRRow » 26 říj 2021, 15:39

Když to napíšeš tak že tlačítko start/stop bude přes interupt ovládat běh stopek, timer interupt bude co 1ms připočítávat +1 do proměnné, tak do příští ms procesor provede (při taktu 84MHz) 840tisíc operací - to je ohromná spousta strojového času. Pokud to ten displej bude dovolovat, tak ho za tu jednu milivteřinu jsi schopný přepsat několikrát. Vůbec neřešit časování displeje, zaměřit se na přesné počítání času (a to ještě bude sranda až se dostanem k zákmitům na tlačítkách)

Jinak dodám, že hodil by se kompletní zdrojový kód a schéma, bez toho se těžko někomu pomáhá.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14
Reputation: 0

Re: Arduino due - millis

Příspěvek od Elkez » 26 říj 2021, 19:26

Se stavbou teprve začínám a bude to stavba století. Nebudou to jen obyčejné stopky START/STOP, ale celý orloj. Uvidíme, co Due dokáže.
Jenom pro stručnou představu. Na panelu 3 displeje, 1x1602, 2x2004, bezdrátové vysílače/přijímače na bázi RFM 22,23, měření síly signálu a teplot vysílačů, velkoplošný externí displej, záznam výsledků do EEPROM, odpočítávání času na přípravu a ještě mnoho věcí, které mi v průběhu stavby třeba napadnou. Zatím jsem ve fázi, kdy zkouším jednotlivé segmenty programu. Momentálně se zabývám přesností hodin. Měřil jsem přesnost millis jednoduchým programem a dostal jsem se na 1,5s za dvě hodiny, ale je možné, že jsem něco přehlédl, protože se mi to zdá dost, ikdyž kdoví. Proto mě udivuje, že peterple dosáhl přesnosti 1sek/měsíc. Takovou přesnost nedosáhne snad ani termostatovaný X nebo RTC, ale nechci už to rozebírat. A co se týče schema, rovněž není hotové, ale v podstatě na něm není nic zvláštního. Prostě na Due navěsím, co se tam vejde a pak mám radost, že další část stroje funguje.
Do roka tady třeba sdělím víc. To bych už mohl být hotov. :D Jinak všem děkuji za komentáře a inspirace.
PS: zákmity tlačítek jsem už tady řešil taky a jsou vyřešené!!
Hezké vánoce všem.

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino due - millis

Příspěvek od kiRRow » 26 říj 2021, 21:56

(a to ještě bude sranda až se dostanem k zákmitům na tlačítkách)
- co když právě ona odchylka může být způsobena zákmitem a jeho snahou o ošetření ? ... jako třeba jsi vytáhl example když mačkám čudl od výtahu, tak je mi celkem jedno jestli se rozjedu požadovaným směrem o 25ms dřív nebo později

určitě nejdříve se zabývej 1) Přesností stopek 2) Přesností ovládání stopek ... co je na displeji mezi start a stop je přece jen orientační

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 17 hostů