/***********************************************************************/
/* */
/* 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]={
//Q14

/*; ----------------------------------------------------------
; Band(1) Low:0.00000 High:0.07000 R= -56.90937
; Band(2) Low:0.15000 High:0.20000 R= 0.012389
; Band(3) Low:0.25000 High:0.50000 R= -56.90937 60
;----------------------------------------------------------*/
3,45,48,-8,
-72,-62,-11,-21,
-64,9,187,222,
12,-163,-53,88,
-119,-446,-287,299,
501,67,-80,658,
1112,-240,-2525,-2784,
172,3527,3527,172,
-2784,-2525,-240,1112,
658,-80,67,501,
299,-287,-446,-119,
88,-53,-163,12,
222,187,9,-64,
-21,-11,-62,-72,
-8,48,45,3





};

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;      //2つおきに、符号を反転。mix動作  fs/4 = キャリア周波数

data[119-i] = data[59-i] = data_ad;

total=rmpa_w(0, 60, fir, data+59-i);

total=total>>14;

tm0=(char)(total+0x80); //13 cycle

if (++i==60)i=0;

adst=1; 
}