Stránka 6 z 13
Re: Hodiny a časování
Napsal: 06 lis 2016, 10:05
od fulda
Vladimir66 píše:zkousel jsem pouzit casovac (Timer2) pro odecet sekund v presruseni.
...
pro spustu veci presnost casovacu staci, pokud ne, tak externi hw je nutny.
-V66
No a další takovej
Poslouchej, to ti ani není divné, že máš dva časovače uvnitř jednoho procesoru, které berou čas ze stejného zdroje a že ti jdou každej jinou rychlostí
To je přece trochu dost blbost ne? Každému trochu soudnému člověku dojde, že někde soudruzi z NDR museli udělat chybu.
Takže znovu a lépe
Externí hw je nutný pro ty, kteří neumí programovat a neví, co se v jejich procesoru děje
Že se tak ptám - který z časovačů vlastně považuješ za správný? Timer1, který dělá millis() a nebo Timer2, který jsi si nastavil?
Re: Hodiny a časování
Napsal: 06 lis 2016, 10:21
od daton
Víš Fuldo trochu míň agrese v příspěvcích a více trpělivosti s námi plebejci by bylo kostruktivnejsi. Už jsem lecos pochytil ale třeba přesně to jak píšeš o době trvání instrukci by mne taky zajímalo však o tom mělo být toto vlákno protože vlastně v zakládajícím příspěvku jsem se na toto nepřímo ptal proč jeden příklad kódu funguje a druhý je zzpožděn.

Re: Hodiny a časování
Napsal: 06 lis 2016, 10:40
od Vladimir66
to Fulda:
OK, beru na vedomi ALE jak se rika "ukazana plati.."
muzes mi napsat vzorek kodu, ktery mi na terminal bude vypisovat v PRESNYCH sekundovych intervalech millis bez ohledu na pocet a delky delayu v loopu ?
diky, (bez ironie)
-V66
Re: Hodiny a časování
Napsal: 06 lis 2016, 11:36
od Dex
Dvě věci:
- používejte, prosím, tlačítko Code - už jsem dva příspěvky opravoval
- Vláďo o tom, že "delay je zlo" jsme si přece říkali

Re: Hodiny a časování
Napsal: 06 lis 2016, 11:39
od Vladimir66
Ahoj,
jeden poucny link k tematu
http://www.forward.com.au/pfod/ArduinoP ... duino.html
Pokud se nekomu rozjede blikani LEDky po 4hodinach o neunosnou dobu, je neco spatne.
Zkousel jsem demonstrovat na (mozna hloupem) prikladu, ze rozdil nemuze byt tak dramaticky.
Cteni millis v preruseni neni chyba, ale nechci se o tom prit. zalezi PROC se to dela.
Mimochodem toto reseni jsem uspesne pouzil na robotickem dnu, kdy robot meril cas, jestli se pohybuje
na hristi (prejizdi cerne cary), nebo uz je mimo.
Ano, tam neslo o milisekundy..
Idealni tema si o tom popovidat 12.11. po 16hod.
Re: Hodiny a časování
Napsal: 06 lis 2016, 12:08
od daton
Já bych byl vsema deseti pro diskusi a kdyby si k tomu tématu někdo něco připravil bylo by to super já bohužel takové znalosti nemám a proto bych je rád získal nejlépe na tom setkání

Re: Hodiny a časování
Napsal: 06 lis 2016, 13:37
od jrt
daton píše:Já bych byl vsema deseti pro diskusi a kdyby si k tomu tématu někdo něco připravil bylo by to super já bohužel takové znalosti nemám a proto bych je rád získal nejlépe na tom setkání

Myslím, že Davida nebude těžké přemluvit , aby k tématu na setkání něco řekl a dá se předpokládat, že k němu něco řeknou i ostatní zdejší "radilové", kteří se zúčastní.
Ovšem bylo by vhodné klíčové otázky ještě před setkáním položit sem, protože ani ten největší génius nenosí všechny své znalosti stále v hlavě.
A taky by bylo dobře, kdyby si ti, kterým diskuze k problému něco přinese dělali poznámky, ze kterých by mohl vzniknout článek, který by pomohl dalším tápajícím.
Re: Hodiny a časování
Napsal: 06 lis 2016, 17:10
od fulda
Vladimir66 píše:Idealni tema si o tom popovidat 12.11. po 16hod.
OK, klidně k tomu něco řeknu.
Re: Hodiny a časování
Napsal: 06 lis 2016, 19:19
od fulda
Aby jste neřekli, že jen tlachám, tak přiložím tento kus kódu.
Cílem kódu je vypisovat vteřiny při zaneprázdněném procesoru.
V kódu najdete na dvou místech
delay(257);
(pro všímavé 257 je prvočíslo).
To slouží jako simulace zanerázdnění procesoru. Je celkem jedno, jaké je tam číslo a je celkem jedno, jestli jsou stejné. Podstatné je, že nemá přesahovat 1sec (nebo může, ale ne pořád, musí se kompenzovat dlouhé a krátké, jinak se o prostě nedá stihnout).
Vzhledem k tomu, že kód nemá šanci stihnout začátky vtrřin, tak se alespoň pokouší stihnout nejbližší dostupné okno.
Ale o tom víc v sobotu.
V mezičase si někdo může vyzkoušet pustit kód na dlouhou dobu.
Kód: Vybrat vše
unsigned long NextTick;
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
// Dalsi krok hodin bude okamzite, poud bychom chteli, aby byl az za vterinu
// tak tady dame: NextTick=millis() + 1000;
NextTick=millis();
}
void loop() {
unsigned long MS;
MS = millis();
if ((NextTick <= MS) && ((NextTick>=1000) || ((NextTick<1000) && (MS<2000)))) {
NextTick += 1000; // další tik bude za vteřinu od předchozího
// tady se dělá co je potřeba
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(257); // wait for a moment (pro jistotu prvocislo)
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
Serial.print("Od startu: ");
Serial.print(MS);
Serial.print(" mili sekund, to je: ");
Serial.print(MS / 1000);
Serial.print(" sekund, nebo: ");
Serial.print(MS / 3600000); // hodiny
Serial.print(":");
Serial.print((MS % 3600000) / 60000); // minuty
Serial.print(":");
Serial.print(((MS % 3600000) % 60000) / 1000); // sekundy
Serial.println("");
} else {
delay(257); // wait for a moment (pro jistotu prvocislo)
}
}
Re: Hodiny a časování
Napsal: 06 lis 2016, 23:36
od Vladimir66
diky, vyzkouseno.
kdo chce lepsi millis nez default v Arduinu, tak si muze stahnout knihovnu z Githubu.
http://blog.zakkemble.co.uk/millisecond ... y-for-avr/
-V66