Ahoj, mam dotaz na vytvoreni nejake periodicke funkce.
Mam merici kartu a tou merim (nactu vstup a pres regulator menim vystup).
A potrebuju vytvorit nejaky spoustec (generator), ktery bude periodicky spoustet (napr. kazdych 100ms) ten merici cyklus (nacte vstup a pres regulator zmeni vystup).
Uz sem to zkousel pres nejake Sleep funkce, ktere sem dal do toho cyklu mereni, ale ty mi nezaruci, ze se to bude spoustet pravidelne co urcitou dobu.
Nevite nekdo jak na to?
Fórum › C / C++
Periodicke spousteni
To imaj : nejsem si jist jestli je to ono, ale jsou i takzvany alarmy... ty by se taky mozna daly pouzit...
a v jednocipu by to byl kazdopadne timer a preruseni
Co konkrétně ti Sleep dělalo? V kolika ms, ns se to neshodovalo s tvým očekáváním? Nestačilo by uspat se na kratší dobu a zbytek počkat prostě v cyklu kontrolou hodin?
while (gettime() == cas_co_chci) {
// nic
}
Pokud to chceš mít hoooodně přesně, tak taky můžeš narazit na omezení operačního systému, kdy se prostě rozhodne, že v okamžik, kdy potřebuješ měřit, tvému procesu nepřidělí CPU. To bys potom musel hledat realtime OS.
Jedna sa o jednocip ci o OS?(widnows/linux/etc)
v jednocipe as to da riesit ako napisal KIIV, popripade brutal, a to _delay_(), ale ta zbytocne zerie procesorovy cas...
To Atmegauser : Jedna se o windows + RTX (to je doplnek OS o realny cas, vytvori to subsystem realneho casu), takze procesy, ktere bezi pod RTX, tak bezi nezavisle na windows. http://msdn.microsoft.com/en-us/library/ms838340.aspx
To casovani by melo byt v jednotkach milisekund, ale tim RTX se muzu dostat i na jednotky nanosekund (ono je to hodne rychle, ale pri rychlosti v nanosekundach uz narazim na moznosti merici karty, protoze zatim pristupuju primo na tu kartu I/O, jeste uvazuju ze by sem pouzil MEM (pametovy) pristup).
S tim sleepem je problem, ze pokud nastavim periodu mereni hodne malou, tak to mereni muze trvat ruzne dlouho a tim padem nedodrzim pozadovanou periodu. Sem to chtel realizovat pres hodiny a k tem by se postupne pripocitaval periodu a spoustel mereni, ale tam je prave problem, ze pokud prekrocim cas te periody, tak se to uz nespusti, protoze to bude cekat na cas, ktery uz byl (cas + 1 perioda = spust mereni....).
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze