/***********************************************************************/
/* */
/* FILE :fir_BPF_60.c */
/* DATE :Fri, May 20, 2005 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.0). */
/* */
/***********************************************************************/
//実験の為に、Q7、Q10, Q14の係数を操作しています。
#include <asmmacro.h>
#include "start.h"
int fir[60]={
//Q7
0,0,0,0,
0,0,0,0,
0,0,0,1,
1,-1,0,-1,
-2,2,2,-1,
1,-4,-6,6,
2,4,13,-23,
-30,35,35,-30,
-23,13,4,2,
6,-6,-4,1,
-1,2,2,-2,
-1,0,-1,1,
1,0,0,0,
0,0,0,0,
0,0,0,0
//Q10
/*0,0,0,0,
0,0,1,-2,
-1,1,-2,4,
6,-6,-2,-5,
-12,18,16,-7,
12,-33,-47,47,
19,32,102,-180,
-243,282,282,-243,
-180,102,32,19,
47,-47,-33,12,
-7,16,18,-12,
-5,-2,-6,6,
4,-2,1,-1,
-2,1,0,0,
0,0,0,0 */
/*
//Q12
0,0,-1,1,
0,1,4,-6,
-5,2,-7,17,
23,-24,-6,-19,
-49,74,63,-27,
48,-134,-186,187,
78,127,407,-722,
973,1128,1128,-973,
-722,407,127,78 ,
187,-186,-134,48 ,
-27,63,74,-49,
-19,-6,-24,23 ,
17,-7,2,-5,
-6,4,1,0 ,
1,-1,0,0*/
//Q14 BPF
/*1,-2,-3,4,
0,6,16,-25,
-20,9,-28,68,
91,-95,-25,-75,
-197,294,253,-109,
191,-535,-746,749,
311,508,1627,-2888,
-3892,4513,4513,-3892,
-2888,1627,508,311,
749,-746,-535,191,
-109,253,294,-197,
-75,-25,-95,91,
68,-28,9,-20,
-25,16,6,0,
4,-3,-2,1*/
};
int data[120]={0};
unsigned char i;
long total;
void set_timerC(void);
void set_AD8(void);
void main(void)
{
i=0;
set_CLK20();
set_LED();
set_timerC();
set_AD8();
asm("FSET I"); //割り込み許可
tcc00 = 1; //タイマCカウント制御開始ビットのセット
adst=1; //AD変換開始
while(1)
{
/* while(adst==1);
data[119-i] = data[59-i] = ad;
total=rmpa_w(0, 60, fir, data+59-i);
if (++i==60)i=0;
total=total>>8;
tm0=(char)total;
adst=1; */
}
}
void set_timerC(void)
{
pd3_4=1; //P3_4をタイマCの出力に設定
p3_4=1; //初期値=1
tcc00=0;
tcc01=0; //タイマCカウントソース f1
tcc02=0;
tcc12=1; //タイマC カウンタリロード選択ビット 1
tcc13=1; //コンペア0選択ビット アウトプット=1
tcc14=0; //コンペア0一致で出力を L に設定
tcc15=1;
tcc16=1; //コンペア1一致で出力を H にする
tcc17=1;
tcout4=1; //コンペア出力を CMP1_1に設定
tm0=0; //カウンタ 初期値
tm1=256;
ilvl0_cmp1ic =1; // コンペア1割り込み優先レベル(レベル1)
ir_cmp1ic = 0; // コンペア1割り込み要求フラグクリア
}
void set_AD8(void)
{
pd1_0 =0; //p1_0 読み出しモード AN8
p1_0 =0; //初期値=0
ch2 =1; //AN8
ch1 =0;
ch0 =0;
md =0; //単発モード
adgsel0 =1; //Port1グループ選択
adcap =0; //ADSTビットで開始
cks0 =1; //f2を選択 cks1=0にする
bits =0; //8bit
// bits =1; //10bit
cks1 =0;
vcut =1; //Vref接続
smp =1; //サンプルホールドあり
}
#pragma interrupt comp1_int (vect=16)
void comp1_int(void)
{
while(adst==1);
data[119-i] = data[59-i] = ad;
total=rmpa_w(0, 60, fir, data+59-i);
total=total>>7;
tm0=(char)total;
if (++i==60)i=0;
adst=1;
}