 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.61 Kraj: Ljubljana
|
Objavljeno: Sre Avg 12, 2009 10:59 am Naslov sporočila: Re: volatile troubles |
|
|
gregoral je napisal/a: |
Jaz res ne vem kdaj bi bilo dobro imeti števec v zanki volatile:
Koda: |
int volatile i;
for(i = 0; i < 9999; i++) { ... } |
Ali ve kdo za realen primer kjer bi to potrebovali? |
Recimo za generiranje zakasnitve:
Koda: |
void delay(int delay_value)
{
int volatile i;
for (i = delay_value, delay_value > 0, delay_value--)
{
}
return;
} |
Brez deklaracije volatile ti mora vsak ugleden prevajalnik pri vključeni optimizaciji eliminirati klic funkcije.
BTW, to je tudi sicer razlog za marsikatero preglavico v zvezi z custom delay funkcijami, če ne uporabiš magične besedice volatile. _________________ Question is more important than the answer.(Plato) |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Sre Avg 12, 2009 11:01 am Naslov sporočila: |
|
|
Moji možgani so med dopustom očitno zakrneli.
 _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
gregoral Član

Pridružen-a: Pet 24 Nov 2006 9:42 Prispevkov: 688 Aktiv.: 3.04 Kraj: Ljubljana
|
Objavljeno: Čet Avg 13, 2009 1:50 pm Naslov sporočila: volatile troubles |
|
|
Ja priznam da na delay nisem niti pomislil, namreč šele začenjam s programiranjem uC, tako da ... no važno je da se čim večkrat kaj naučimo.
V Cju za PCje imamo za te namene funkcijo Sleep, ki pa je seveda precej nenatančna za kratke čase.
Sem šel malo na Google vprašat, in ni neke univerzalne rešitve za delay/sleep. Meni se zdi še najboljša možnost klicati __nop() v zanki. Bom pa še raziskal možnosti v tej smeri.
LP, Gregor |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Čet Avg 13, 2009 2:05 pm Naslov sporočila: |
|
|
Lahko pa uporabiš timer, če ga imaš na voljo. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
gregoral Član

Pridružen-a: Pet 24 Nov 2006 9:42 Prispevkov: 688 Aktiv.: 3.04 Kraj: Ljubljana
|
Objavljeno: Čet Avg 13, 2009 2:43 pm Naslov sporočila: volatile troubles |
|
|
Ja seveda, to je še boljše kot nop v zanki, samo ne za zelo kratke zakasnitve.
Sicer mislim da naj vsak ki ima v kodi veliko zakasnitev razmisli, če se ne da drugače napisat programa. Je pa res da če je treba nekaj zapisat v nek HW register s kratkim zamikom, je to najlažje izvest z delay-em.
Dokler imamo to na enem ali dveh mestih v programu je še v mejah normale, če pa je tega več, potem pa ... bolje zastavit izvedbo programa.
LP,G |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|