Hi,
I'd probably sample at atleast 10 times the input frequency dependning on what else the PIC has to do while doing this thing.
Here's one idea, from the top of my head, untested..../Henrik.Code:Sample VAR WORD LastSample VAR WORD Average VAR WORD Peaks VAR WORD [8] i VAR BYTE j VAR BYTE ' You might want to insert some form of "trigger" mechanism here. ' Perhaps sample the input in a loop and wait until there's a ' positive going trend or something - then move on the following: For i = 0 to 7 ' Get 8 peaks LastSample = 0 ' Set up Average = 0 ' Set up Sample = 0 ' Set up DO LastSample = Average ' Save previous sample Average = 0 ' Reset accumulator For j = 0 to 3 ' Take 4 samples quickly ADCIN 1, Sample ' Get current input Average = Average + Sample ' Add to accumulator Next ' Next sample Average = Average >> 2 ' Divide by 4 UNTIL Average < LastSample ' Stop if this sample is lower than the last one. Peaks[i] = LastSample ' Current sample is lower than last one, we've found the peak. NEXT For i = 0 to 7 HSEROUT ["Peak number", DEC (i+1), ": ", DEC Peaks[i], " ADC counts", 13] Next




Bookmarks