編集中のプログラムです。 一時的にパブリッシュしました。 タッチパネル部分は未確認です。 It is a program while editing it. To pass it to the person, it shared.

Dependencies:   mbed

Committer:
jksoft
Date:
Sun Nov 28 09:17:14 2010 +0000
Revision:
0:f5f8e3417215

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:f5f8e3417215 1
jksoft 0:f5f8e3417215 2 #include <string.h>
jksoft 0:f5f8e3417215 3 #include "filters.h"
jksoft 0:f5f8e3417215 4
jksoft 0:f5f8e3417215 5
jksoft 0:f5f8e3417215 6 void FilterBoxF::initialise(unsigned int size)
jksoft 0:f5f8e3417215 7 {
jksoft 0:f5f8e3417215 8 m_size = size;
jksoft 0:f5f8e3417215 9 if (m_size>FILTER_MAX_SIZE) m_size = FILTER_MAX_SIZE;
jksoft 0:f5f8e3417215 10 memset(m_history,0,sizeof(float)*FILTER_MAX_SIZE);
jksoft 0:f5f8e3417215 11 m_index = 0;
jksoft 0:f5f8e3417215 12 m_out = 0;
jksoft 0:f5f8e3417215 13 }
jksoft 0:f5f8e3417215 14
jksoft 0:f5f8e3417215 15
jksoft 0:f5f8e3417215 16 float FilterBoxF::tick(float in)
jksoft 0:f5f8e3417215 17 {
jksoft 0:f5f8e3417215 18 m_history[m_index] = in;
jksoft 0:f5f8e3417215 19 m_index += 1;
jksoft 0:f5f8e3417215 20 if (m_index>=m_size) m_index = 0;
jksoft 0:f5f8e3417215 21
jksoft 0:f5f8e3417215 22 float sum = 0;
jksoft 0:f5f8e3417215 23
jksoft 0:f5f8e3417215 24 for (int i=0; i<m_size; i++)
jksoft 0:f5f8e3417215 25 {
jksoft 0:f5f8e3417215 26 sum += m_history[i];
jksoft 0:f5f8e3417215 27 }
jksoft 0:f5f8e3417215 28 m_out = sum/m_size;
jksoft 0:f5f8e3417215 29
jksoft 0:f5f8e3417215 30 return m_out;
jksoft 0:f5f8e3417215 31 }
jksoft 0:f5f8e3417215 32
jksoft 0:f5f8e3417215 33 //=================================
jksoft 0:f5f8e3417215 34
jksoft 0:f5f8e3417215 35 void FilterBoxI::initialise(unsigned int size)
jksoft 0:f5f8e3417215 36 {
jksoft 0:f5f8e3417215 37 m_size = size;
jksoft 0:f5f8e3417215 38 if (m_size>FILTER_MAX_SIZE) m_size = FILTER_MAX_SIZE;
jksoft 0:f5f8e3417215 39 memset(m_history,0,sizeof(int)*FILTER_MAX_SIZE);
jksoft 0:f5f8e3417215 40 m_index = 0;
jksoft 0:f5f8e3417215 41 m_out = 0;
jksoft 0:f5f8e3417215 42 }
jksoft 0:f5f8e3417215 43
jksoft 0:f5f8e3417215 44
jksoft 0:f5f8e3417215 45 int FilterBoxI::tick(int in)
jksoft 0:f5f8e3417215 46 {
jksoft 0:f5f8e3417215 47 m_history[m_index] = in;
jksoft 0:f5f8e3417215 48 m_index += 1;
jksoft 0:f5f8e3417215 49 if (m_index>=m_size) m_index = 0;
jksoft 0:f5f8e3417215 50
jksoft 0:f5f8e3417215 51 int sum = 0;
jksoft 0:f5f8e3417215 52 for (int i=0; i<m_size; i++)
jksoft 0:f5f8e3417215 53 {
jksoft 0:f5f8e3417215 54 sum += m_history[i];
jksoft 0:f5f8e3417215 55 }
jksoft 0:f5f8e3417215 56 m_out = sum/m_size;
jksoft 0:f5f8e3417215 57 return m_out;
jksoft 0:f5f8e3417215 58 }
jksoft 0:f5f8e3417215 59
jksoft 0:f5f8e3417215 60 //=================================
jksoft 0:f5f8e3417215 61
jksoft 0:f5f8e3417215 62 void FilterIirI::initialise(int tau, int limit)
jksoft 0:f5f8e3417215 63 {
jksoft 0:f5f8e3417215 64 m_tau = tau;
jksoft 0:f5f8e3417215 65 m_limit = limit;
jksoft 0:f5f8e3417215 66 m_remainder = 0;
jksoft 0:f5f8e3417215 67 m_out = 0;
jksoft 0:f5f8e3417215 68 }
jksoft 0:f5f8e3417215 69
jksoft 0:f5f8e3417215 70
jksoft 0:f5f8e3417215 71 int FilterIirI::tick(int in)
jksoft 0:f5f8e3417215 72 {
jksoft 0:f5f8e3417215 73 int temp = in - m_out + m_remainder;
jksoft 0:f5f8e3417215 74 m_remainder = temp % m_tau;
jksoft 0:f5f8e3417215 75 m_out += temp / m_tau;
jksoft 0:f5f8e3417215 76 if (m_out>m_limit) m_out = m_limit;
jksoft 0:f5f8e3417215 77 if (m_out<-m_limit) m_out = -m_limit;
jksoft 0:f5f8e3417215 78 return m_out;
jksoft 0:f5f8e3417215 79 }