; Written by Andrew Warren [fastfwd at ix.netcom.com]. A couple days ago, I wrote that an averaging filter of the form: (WIDTH-1)*AVE + NEW AVE = ------------------- WIDTH was "absurdly simple" if WIDTH = 256. A couple of people have asked in private email for the code; here it is: AVEHI EQU [ANY FILE REGISTER] ;Holds the average [0-255]. AVELO EQU [ANY FILE REGISTER] ;Holds the fractional part ;of the average. NEW EQU [ANY FILE REGISTER] ;Holds the new sample. FILTER256: MOVF AVEHI,W SUBWF NEW,W SKPC DECF AVEHI ADDWF AVELO SKPNC INCF AVEHI 7 words, 7 instruction cycles, "NEW" is unchanged.
See also:
http://www.htsoft.com/cgi-bin/agnes?PicforumAgnes+PicforumAgnesHTMLArticle+2775.2 Frank Everest mentions very similar idea:+temp = (average - new) >> time_value average = average - tis a quick implementation ofaverage = ( (2^time_value - 1)*average + (1)*new ) / 2^time_value.
Questions:
file: /Techref/microchip/dsp/av-256w-aw.htm, 2KB, , updated: 2004/2/18 23:11, local time: 2024/11/24 22:12,
3.144.90.108:LOG IN
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://massmind.org/techref/microchip/dsp/av-256w-aw.htm"> PIC Microcontoller DSP Math Method 8bit 16 step Averageing filter</A> |
Did you find what you needed? |
Welcome to massmind.org! |
Welcome to massmind.org! |
.