|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
trot Član
Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1270 Aktiv.: 6.04 Kraj: glej fogl
|
Objavljeno: Pet Mar 04, 2016 12:02 am Naslov sporočila: Circular buffer |
|
|
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 |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pet Mar 04, 2016 8:22 am Naslov sporočila: |
|
|
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 |
|
|
trot Član
Pridružen-a: Čet 18 Jan 2007 20:25 Prispevkov: 1270 Aktiv.: 6.04 Kraj: glej fogl
|
Objavljeno: Ned Mar 06, 2016 10:57 pm Naslov sporočila: |
|
|
To sem iskal, hvala _________________ lp, Klemen |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Ned Mar 06, 2016 11:04 pm Naslov sporočila: |
|
|
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 |
|
|
|
|
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: 76 dni
Powered by phpBB © 2001, 2005 phpBB Group
|