cirkularni buffer-pomoć?

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
baskomix
Posts: 8
Joined: 10-12-2015, 20:49

cirkularni buffer-pomoć?

Post by baskomix »

pozz!

Trebao bi pomoć oko kodiranja za cirkularni buffer. Ideja je čitati stanje senzora i raditi prosjek, na način da n-ti novi podatak zamijenjuje n-ti najstariji podatak.

Napisao sam ovaj dio koda i to radi kako treba u bascom 8051 simulatoru:


** buffer**

Dim niz(3) As Byte
Dim P As Byte
Dim suma As Byte
Dim X As Byte
Dim brojac As Byte
Dim prosjek As Single

brojac = 0
P = 0
suma = 0

Do

suma = suma - niz(p)
Input "Input number:" , X
niz(p) = X
suma = suma + X
brojac= brojac + 1
P = P + 1
P = P Mod 3
If brojac = 3 Then
prosjek = suma / 3
brojac = 2
End If
Loop

Ako npr. ucitam 5 brojeva u niz (x1=1, x2=3; x3=5; x4=7; x5=8) imam tri prosjeka:
prosjek_1= x1 + x2 + x3 /3
prosjek_2= x2 + x3 + x4 /3
prosjek_3= x3 + x4 + x5 /3
_________
Medutim, isti ovaj kod mi ne radi kad ga učitam u mikrokontroler, tj. samo prvi prosjek bude dobar na displayima, poslije dobivam neke čudne vrijednosti(povećava se duplo nakon svakog čitanja senzora ili X u ovom primjeru).

Program za mcu radi dobro ukoliko ne radim s ovim bufferom, tj. ucitavam konstantno vrijednosti i saljem ih na display. :idea: :?:

Ovako sam to zamislio:
do

- ucitaj vrijednost x s senzora
- onda ovaj dio koda sa cirkularnim buferom
- napravi kalkulaciju vrijednosti za prikaz na displayima
- prikazi na displayeve

loop

neka ideja?
Post Reply