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 

Circular buffer

 
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
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Pet Mar 04, 2016 12:02 am    Naslov sporočila:  Circular buffer Odgovori s citatom

Rad bi naredil circular buffer. Zanima me, ali obstaja kakšna logična/matematična operacija, ki bi mi kot rezultat podala razliko med write in read pointerjem.

Če je write_pointer > read_pointer, enostavno odšteješ. Če pa je write_pointer < read_pointer pa to ne deluje več? Zanima me, če obstaja funkcija, ki najde razliko brez da uporabim IF stavek in računam ločeno za oba primera?

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Pet Mar 04, 2016 8:22 am    Naslov sporočila:   Odgovori s citatom

Koda:

uint32_t size = 100, read, write;

//Write > Read
read = 10; write = 90;
printf("Full: %d, Empty: %d\n", (size + write - read) % size, (size - write + read - 1) % size);

//Write < Read
read = 90; write = 10;
printf("Full: %d, Empty: %d\n", (size + write - read) % size, (size - write + read - 1) % size);

//Write = Read
read = 90; write = 90;
printf("Full: %d, Empty: %d\n", (size + write - read) % size, (size - write + read - 1) % size);

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Ned Mar 06, 2016 10:57 pm    Naslov sporočila:   Odgovori s citatom

To sem iskal, hvala Smile
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Ned Mar 06, 2016 11:04 pm    Naslov sporočila:   Odgovori s citatom

Moraš se zavedat, da to na MCU-ju brez naprednih inštrukcij (Cortex-M4) ene 10x počasnejše od klasične varjante 2 if stavkov.
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
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
Stran 1 od 1

 
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group