Po výpočtu té korekce se potom provádí druhá korekce, kterou se eliminuje čas potřebný na ýpočet předchozí korekce. Po ukončení druhé korekce se provádí třetí korekce, kterou se upraví chyba zůsobená výpočtem druhé korekce. Pak se musí udělat 4. korekce na eliminaci chyb zpoždění způsobeného výpočtem předchozí korekce ... hmm, prostě česká cesta. Stejnou používá český parlament při tvorbě českých zákonů.ZdenekHQ píše:Ono, když se používá přerušení ke generování přesných pulsů, tak se dopočítává korekce - t.j. zohledňuje se doba, která uplynula od vyvolání přerušení do jeho obsluhy (dá se vyčíst z časovače) a ta se následně odečte od hodnoty nového nastavení časovače. Pak to tiká přesně.
Pic a vteřinové pulzy
Moderátor: Moderátoři
- psychosalam
- Zablokován
- Příspěvky: 156
- Registrován: 03 dub 2012, 02:00
- Bydliště: v domě na Dobytčím trhu v Praze
Měření času jako sumy intervalů od přerušení timerem je snad hardwarově závislé a tudíž neměnné, korekce by řešila jen čas pro sw obsluhu a tudíž fázovou chybu, což při měření času obyčejně nevadí. Jiný než nulový čas při vyhodnocení (měření) času má každá metoda. Pro korekci korekce, saláme, nevidím důvod. A co se týká korigování korekcí českým parlamentem: ačkoliv nemám důvod považovat český parlament za něco odlišného od bandy zhovadilců, vyžírků a blbů, připadá mi míň obtížný a nebezpečný než europarlament s jeho korekcemi korekcí. Ten český je přímočaře blbější a mafiánsky buranštější, ten evropský je fanatičtější a horší, protože má pro svoje korekce a páchání domnělého dobra víc prostředků.
Problém je v preddeličke a ten sa nedá nijako eliminovať úpravou čítača TMR0. Preddelička sa toťiž vynuluje zápisom do TMR0 a stratí sa nejaký zlomok n/256 hodín. Iba nejakým záhadným spôsobom sa zosynchronizovať na preddeličku, 2 inštrukčné cykly je TMR0 na ten čas mŕtvy, pred vygenerovaním hodín do TMR0 urobiť zápis novej aj upravenej konštanty, aby to n bolo násobkom 256.
Preto je potrebné nechať TMR0 bežať dookola (256krokov) čo si vyžaduje použiť oscilátor s vhodnou frekvenciou či už systémový, alebo druhý externý kvôli celočíselnému napočítaniu prerušení do jednej sekundy.
edit:
Po slušnej analýze by sa dalo dopracovať k presnejším časom s ľubovolným oscilátorom
. Z nevýhody sa stane výhoda...iba to treba exaktne hodiť do excelu.
Preto je potrebné nechať TMR0 bežať dookola (256krokov) čo si vyžaduje použiť oscilátor s vhodnou frekvenciou či už systémový, alebo druhý externý kvôli celočíselnému napočítaniu prerušení do jednej sekundy.
edit:
Po slušnej analýze by sa dalo dopracovať k presnejším časom s ľubovolným oscilátorom
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Jak píše Roman zde: http://www.romanblack.com/one_sec.htm
Máme tříbajtovou proměnnou Period. TMR0 každých 256us udělá přerušení, a my odečteme z proměnné konstantu 256, jakmile proměnná podleze pod 0, přičteme k proměnné konstantu 1000000. ... takže výsledkem je Zero Cumulative ErrorBasic procedure to generate a 1 second period;
(assuming a 4MHz crystal, and 1000000 timer0 ticks/second)
Every timer0 overflow; subtract 256 from our Period variable
When Period variable gets less than zero; generate the 1 second event and ADD another 1000000 to it
Because we ADD the next 1000000 ticks to the next second, the cumulated error is still contained within the Period variable. This means that the NEXT second will be adjusted by the error that was left in the variable. Every period will self-adjust it's length so over time there is Zero Cumulative Error.
TMR2 má možnosť hw-resetovať po načítaní do hodnoty PR2reg. Pritom sa rescaller nanuluje.
Voľne bežiaci TMR1 sa dá použiť v kombinácii s CCPxreg. v režime Capture. Do CCPxR sa vloží nasledujúci čas prerušenia.
Všeobecne platí: zápis do TMRxreg resetuje precaler. Tomu sa treba vyhnúť pri generovaní prerušení pre presnú časovú základňu.
Voľne bežiaci TMR1 sa dá použiť v kombinácii s CCPxreg. v režime Capture. Do CCPxR sa vloží nasledujúci čas prerušenia.
Všeobecne platí: zápis do TMRxreg resetuje precaler. Tomu sa treba vyhnúť pri generovaní prerušení pre presnú časovú základňu.
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
Já jsem pro výpočet používat aplikace třetích stran, např. tady:
http://eng-serve.com/pic/pic_timer.html
nebo tady:
http://pictimer.picbingo.com/ (ale sehnal jsem na webu verzi 0.9.7)
PF
http://eng-serve.com/pic/pic_timer.html
nebo tady:
http://pictimer.picbingo.com/ (ale sehnal jsem na webu verzi 0.9.7)
PF