/***********************************************************************/
/* */
/* FILE :ssb_1.c */
/* DATE :Tue, May 31, 2005 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.0). */
/* */
/***********************************************************************/
#include <asmmacro.h>
#include "start.h"
int fir[60]={
//Q7
/*; ----------------------------------------------------------
; Band(1) Low:0.00000 High:0.06350 R= -52.78252
; Band(2) Low:0.11350 High:0.20000 R= 1.991546E-02
; Band(3) Low:0.25000 High:0.50000 R= -52.78252 Q7 60taps
;----------------------------------------------------------*/
0,0,0,0,
-1,0,0,0,
0,0,1,2,
0,-2,-1,0,
-1,-4,-2,4,
6,2,0,4,
6,-4,-22,-22,
3,30,30,3,
-22,-22,-4,6,
4,0,2,6,
4,-2,-4,-1,
0,-1,-2,0,
2,1,0,0,
0,0,0,-1,
0,0,0,0
/*; ----------------------------------------------------------
; Band(1) Low:0.00000 High:0.06350 R= -52.78252
; Band(2) Low:0.11350 High:0.20000 R= 1.991546E-02
; Band(3) Low:0.25000 High:0.50000 R= -52.78252 Q14 60taps
;----------------------------------------------------------*/
/*4,4,18,-33,
-70,-39,23,22,
-24,24,172,196,
-11,-195,-116,5,
-183,-452,-213,456,
709,244,-37,511,
814,-574,-2757,-2807,
386,3900,3900,386,
-2807,-2757,-574,814,
511,-37,244,709,
456,-213,-452,-183,
5,-116,-195,-11,
196,172,24,-24,
22,23,-39,-70,
-33,18,4,4*/
};
unsigned char i;
int data[120]={0};
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)
{
}
}
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=140;
tm1=220; //220 が成績がよい
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
cks1 =0;
vcut =1; //Vref接続
smp =1; //サンプルホールドあり
}
#pragma interrupt comp1_int (vect=16)
int data_ad;
void comp1_int(void)
{
while(adst==1);
data_ad =ad - 0x80;
if( (i/2)%2 ) data_ad =-data_ad;
data[119-i] = data[59-i] = data_ad;
total=rmpa_w(0, 60, fir, data+59-i);
//total=total>>14;
total=total>>7;
tm0=(char)(total + 0x80); //13 cycles
if (++i==60)i=0;
adst=1;
}