www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Optimizacija algoritma / zanke
Pojdi na stran Prejšnja  1, 2, 3
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Sre Avg 12, 2009 10:59 am    Naslov sporočila:  Re: volatile troubles Odgovori s citatom

gregoral je napisal/a:
Jaz res ne vem Think 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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Sre Avg 12, 2009 11:01 am    Naslov sporočila:   Odgovori s citatom

Moji možgani so med dopustom očitno zakrneli. Anxious

Pray

_________________
Answers: $1, Short: $5, Correct: $25, dumb looks are still free.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.04
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 13, 2009 1:50 pm    Naslov sporočila:  volatile troubles Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Čet Avg 13, 2009 2:05 pm    Naslov sporočila:   Odgovori s citatom

Lahko pa uporabiš timer, če ga imaš na voljo.
_________________
Answers: $1, Short: $5, Correct: $25, dumb looks are still free.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.04
Kraj: Ljubljana

PrispevekObjavljeno: Čet Avg 13, 2009 2:43 pm    Naslov sporočila:  volatile troubles Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programiranje embedded sistemov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3
Stran 3 od 3

 
Pojdi na:  
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