www.elektronik.si
Pogostnost pojava
Pojdi na stran 1, 2  Naslednja  :||:
www.elektronik.si -> Zbirka projektov

Avtor: BojanRKraj: Vnanje Gorice PrispevekObjavljeno: Sre Jun 08, 2011 7:44 am    Naslov sporočila:  Pogostnost pojava
----------------------------------------------------------------------------
Imam primer, ko se mi nek dogodek zgodi naključno v nekem času. Rad bi spremljal pogostnost tega pojava. Na primer kolikokrat se je pojavil v zadnji uri. Pri tem pa ne bi rad po preteku ure števec resetiral, ampak bi rad temu dogodku dal veljavnost eno uro. Tako bi imel vedno realno število v eni uri (FIFO)
Ali obstaja kakšen eleganten način, da to programsko rešim (Atmega8), saj je lahko v eni uri 5 ali pa 1000 dogodkov.
Pri mojem razmišljanju se mi je zmerom močno zakompliciralo.

Avtor: . PrispevekObjavljeno: Sre Jun 08, 2011 11:20 am    Naslov sporočila:  
----------------------------------------------------------------------------
Brisana vsebina odstranjenega uporabnika.

Avtor: BojanRKraj: Vnanje Gorice PrispevekObjavljeno: Sre Jun 08, 2011 1:06 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Eno-sekundna ločljivost je dovolj. Je pa še en problem. Dolžina dogodka je lahko od 0,2 do 4 sekunde.
Ampak približno razumem kaj si mi svetoval, hvala. Se bom na tak način lotil zadeve.

Avtor: Peter123Kraj: Lj. PrispevekObjavljeno: Sre Jun 08, 2011 1:29 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Jaz zadevo takole razumem:
Rabiš 2 števca:
1. šteje dogotke
2. šteje čas, ko mine 1h ali podobno prebere koliko je bilo dogotkov ter zadevo vpiše v E2 in zbriše 1. števec.

Torej imaš narejeno logiranje po urah.

Avtor: BojanRKraj: Vnanje Gorice PrispevekObjavljeno: Sre Jun 08, 2011 2:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala tudi za tvoj predlog, ampak ti zveš koliko dogodkov se je zgodilo med npr. 11:00 in 12:00, mene pa zanima zadnja ura. Ker lahko da se je od 11:50 do 12:00 zgodilo 40 dogodkov, ampak na tvoj način bi ob 12:00 pokazalo 0 dogodkov.

Avtor: MarkoMKraj: Lovrenc na P. PrispevekObjavljeno: Sre Jun 08, 2011 2:48 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Time stamp delaš. Ob vsakem dogodku, kamor pač shraniš podatek, dodaš podatek o uri. Narediš pa krožni pomnilnik, da ga ne zmanjka. Zadnje podatke boš vedno imel na voljo.
Ali ne razumem težave?

Avtor: SilvoKraj: Koroška-okolica Dravograda PrispevekObjavljeno: Sre Jun 08, 2011 2:50 pm    Naslov sporočila:  Re: Pogostnost pojava
----------------------------------------------------------------------------
BojanR je napisal/a:
Imam primer, ko se mi nek dogodek zgodi naključno v nekem času. Rad bi spremljal pogostnost tega pojava. Na primer kolikokrat se je pojavil v zadnji uri. Pri tem pa ne bi rad po preteku ure števec resetiral, ampak bi rad temu dogodku dal veljavnost eno uro. Tako bi imel vedno realno število v eni uri (FIFO)
Ali obstaja kakšen eleganten način, da to programsko rešim (Atmega8), saj je lahko v eni uri 5 ali pa 1000 dogodkov.
Pri mojem razmišljanju se mi je zmerom močno zakompliciralo.


Če sem prav razumel napisano se mi zdi to dokaj enostavno. Načeloma bi to šlo izvesti z zelo preprostim mikrokontrolerjem. (praktično s vsakim tiny-em) Izbira pred vsem na število pinov, glede na to kak prikazovalnik bi želel uporabiti.

Nisem zasledil, če bi želel tudi meriti skupni čas trajanja dogodkov ali le te šteti. Prav tako nisem zasledi kak je minimalni čas trajanja dogodka.

Sam se bi zadeve lotil takole:
Uporabil bi en timer oz njegovo prekinitev. S pomočjo te prekinitve bi generiral takt 1S. V nadaljevanju bi mi služilo za meritev časa. V tej prekinitveni rutini bi tudi multipleksiral ter osvezževal prikazovalnik v koliko bi uporabil led prikazovalnik.
Dogodke bi štel z zunanjo prekinitvijo. V primeru rabe LCD-ja bi tukaj tudi osveževal prikaz.

Avtor: SilvoKraj: Koroška-okolica Dravograda PrispevekObjavljeno: Sre Jun 08, 2011 2:54 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Citiram:
Nisem zasledil, če bi želel tudi meriti skupni čas trajanja dogodkov ali le te šteti. Prav tako nisem zasledi kak je minimalni čas trajanja dogodka.


Aha tole sem prebal v nadaljevanju. 200mS je "zelo dolg" čas. Tako da izvedba, ki sem jo napisal zgoraj ne bi bila problematična.

Avtor: . PrispevekObjavljeno: Sre Jun 08, 2011 3:04 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Brisana vsebina odstranjenega uporabnika.

Avtor: igo PrispevekObjavljeno: Sre Jun 08, 2011 4:13 pm    Naslov sporočila:  
----------------------------------------------------------------------------
"1" vedno traja manj kot 6 bitov (64*0,2).
"0" z zelo veliko verjetnostjo traja manj kot 14 bitov (16348*0,2)
Za kodiranje enega cikla impulz/pavza rabiš 20 bitov.
Malo zahtevneje je potem izračunati nazaj po bufferju po 20 bitov in seštevati trajanje pavz in impulzov do ene ure. Se pa da.

Če je dovolj poznati trajanje pavze na 1s natančno, pa pavza traja največ 12 bitov (4096*1), zato en cikel porabi 18 bitov.

Če cikle navidezno zajameš kot 8bitne ASCII vrednosti in vse skupaj še "zazipaš" si pa sploh ujel kaitalca.

Avtor: SilvoKraj: Koroška-okolica Dravograda PrispevekObjavljeno: Sre Jun 08, 2011 8:58 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Sedaj sem razumel kaj bi Bojan pravzaprav rad. Ena iz med možnosti uporaba čim večjega (več) pomičnih registrov. (Morda izvedba s kakim gal-om oz programibilno logiko? ) Vhod v register bi predstavljal dogodek. Clock bi bil pogostost meritve. "Dolžina" registra bi morala biti 1h. Števec bi dogodke v register prišteval ter tiste iz registra odšteval. Izvedba z mikrokontrolerjem bi bila najenostavnejša tako, da bi shiftal sram.

Avtor: BojanRKraj: Vnanje Gorice PrispevekObjavljeno: Čet Jun 09, 2011 7:58 am    Naslov sporočila:  
----------------------------------------------------------------------------
Bi moral 3600 bitov vsako sekundo shiftat in v zadnjega vpisati dogodek, če se je zgodil.
Sem mislil, da mogoče obstaja kakšna preprosta in ne tako požrešna rešitev. Čeprav je par zelo zanimivih idej. Tista z meritvijo dolžine dogodka in pavze je zelo zanimiva, izvedljiva in požre najmanj spomina, če je dogodkov malo.
Hvala vsem za nasvete, bom probal Maretovo idejo udejaniti, če ne bo šlo, bom pa sprejel še kakšen kompromis , pa za pomoč zaprosil.

Avtor: red_mambaKraj: Yogyakarta PrispevekObjavljeno: Čet Jun 09, 2011 9:46 am    Naslov sporočila:  
----------------------------------------------------------------------------
BojanR je napisal/a:
Bi moral 3600 bitov vsako sekundo shiftat in v zadnjega vpisati dogodek, če se je zgodil.
Sem mislil, da mogoče obstaja kakšna preprosta in ne tako požrešna rešitev. Čeprav je par zelo zanimivih idej. Tista z meritvijo dolžine dogodka in pavze je zelo zanimiva, izvedljiva in požre najmanj spomina, če je dogodkov malo.
Hvala vsem za nasvete, bom probal Maretovo idejo udejaniti, če ne bo šlo, bom pa sprejel še kakšen kompromis , pa za pomoč zaprosil.


imam jaz še eno izboljšavo glede šiftanja Mr. Green
sicer je malo bolj "zakomplicirana" ampak bi jo procesor hitreje izvedel kot šiftanje bitov.

šiftaš samo paket bitov iz enega long-a v drugega. In ko si prestavil 32 bitov kaskadno popraviš array[112] long vrednosti.

pri gledanju rezultatov pa imaš 111 long vrednosti fiksiranih za 32 sekund, in gledaš samo tvoji dve long spremenljivki ki jih vsako sekundo spreminjaš in zadnji long v array-u, ki mu pa vzameš ustrezno št. bitov

razumljivo? Mr. Green

Avtor: igo PrispevekObjavljeno: Čet Jun 09, 2011 10:21 am    Naslov sporočila:  
----------------------------------------------------------------------------
Kakšno shiftanje neki?
Samo spremenljivke, ki kažejo na trenutno veljaven podatek se spreminja. Pomnilnik je itak krožen. Če je manj kot 2^n Byten, se pa spremenljivko vsakič primerja z nekim številom in po potrebi skoči na začetek.
In čisto vseeno je, koliko biten je osnovni paket podatka (16, 18, 20, ...). Če so znani začeten naslov, dolžina paketa in število paketov, ima vsak bit natanko znan pomen.

p.s.: Pisanje v Zbirniku precej olajša delo z 18, 20, ... bitnimi spremenljivkami, razen, če se jih da definirati tudi v višjih jezikih.

p.p.s.: Tisti " nekako "zazipaš" " bi pravzaprav moral imeti poudarek na narekovajih od "nekako". Zip zna ASCII datoteko stlačiti na par % začetne velikosti. Ve kdo, kako njegove matematične algoritme izvesti z MCU?

Avtor: red_mambaKraj: Yogyakarta PrispevekObjavljeno: Čet Jun 09, 2011 11:41 am    Naslov sporočila:  
----------------------------------------------------------------------------
igo je napisal/a:
Kakšno shiftanje neki?
Samo spremenljivke, ki kažejo na trenutno veljaven podatek se spreminja. Pomnilnik je itak krožen. Če je manj kot 2^n Byten, se pa spremenljivko vsakič primerja z nekim številom in po potrebi skoči na začetek.
In čisto vseeno je, koliko biten je osnovni paket podatka (16, 18, 20, ...). Če so znani začeten naslov, dolžina paketa in število paketov, ima vsak bit natanko znan pomen.

p.s.: Pisanje v Zbirniku precej olajša delo z 18, 20, ... bitnimi spremenljivkami, razen, če se jih da definirati tudi v višjih jezikih.

p.p.s.: Tisti " nekako "zazipaš" " bi pravzaprav moral imeti poudarek na narekovajih od "nekako". Zip zna ASCII datoteko stlačiti na par % začetne velikosti. Ve kdo, kako njegove matematične algoritme izvesti z MCU?


to bi se dalo samo če bi lahko naslavljal na bit natančno, kar pa ne moreš kolikor je meni poznano. Ti lahko naslavljaš podatke samo po bajtu naenkrat.

poleg tega pozabljaš da je šift operacija procesorsko najmanj zahtevna od vseh ukazov ki jih procesorji poznajo Very Happy

Stran 1 od 2

Powered by phpBB © 2001,2002 phpBB Group