main.cpp

説明を見る。
00001 /** \mainpage
00002 * \Author アナログ・デバイセズ株式会社
00003 * \date 2006.Jan.19
00004 *
00005 * このプログラムは、ADSP-BF537を搭載する評価基板、EZ-KIT BF537の割り込みデモプログラムである。
00006 * 実行すると入力オーディオ信号を出力にコピーする。EZ-KIT Lite上のSW10を押すたびに、ゲインが
00007 * 変化する
00008 *
00009 * ::main 関数を実行すると、各種の初期化を行い、割り込みハンドラ afw::rxISRを登録した後、
00010 * 割り込みとDMAを許可してオーディオ信号の送受信を行う。オーディオ信号はSPORT0経由で入力
00011 * し、DMAによってメモリ上に格納される。2次元DMAの各行が終わるたびにオーディオ信号受信割り込み
00012 * が発生し、 afw::rxISRが呼び出される。
00013 *
00014 * afw::sport0RxISR は割り込みをクリアし、トリプルバッファの制御を行う。そしてしかるべきデータを
00015 * DMAの受信バッファから取り出すと、使いやすいよう並べなおしてユーザー定義のコールバック関数
00016 * afw::processData を呼び出す。
00017 *
00018 * afw::processData は実際に信号処理を行う場所である。 afw::processDataは入力したデータを
00019 * 出力バッファに格納して呼び出し関数に戻る。このさい、 param::gainの値に応じて音量を調整する。
00020 * param::gainの値は割り込みが発生するたびに変更される。
00021 * 
00022 * afw::processDataから制御が戻ると、呼び出した関数であるafw::rxISRは出力データを並べ替えて然るべきDMAバッファに
00023 * 格納する。
00024  *
00025  * EZ-KIT Lite BF-537のディップスイッチの設定は以下のとおり
00026  *  - SW1 : すべてOFF
00027  *  - SW7 : すべてON
00028  *  - SW8 : 1-2をON、残りはすべてOFF
00029  */
00030 
00031 /** \file main.cpp
00032  *  \brief メイン関数定義ファイル
00033  *  \author アナログ・デバイセズ株式会社
00034  *  \version 1.0
00035  *  \date    2007.Jan.16
00036  *
00037  * EZ-KIT BF537のリソースを初期化し、48Ksample/Sのオーディオ
00038  * フレームワークを起動する。受信データはコールバック関数 afw::processData によって
00039  * 送信バッファにコピーバックされる。音量はsw10を押すたびに変化する。
00040 
00041  */
00042 #include <ccblkfn.h>
00043 #include <signal.h>
00044 #include "afw.h"
00045 #include "utilbf537.h"
00046 #include "pb.h"
00047 #include "param.h"
00048 
00049 /** 割込みを発生させるスイッチ
00050  */
00051  const pb::eSwitch sw = pb::sw10;
00052 
00053 void pbIntHandler( int ivg );
00054 
00055 /** メイン関数
00056    * 
00057    * 各ペリフェラルを初期化後、割り込み待ちに入る。
00058    */
00059 void main(void)
00060 {
00061     utilbf537::initPLL();   // PLLを設定する
00062 
00063     afw::init();            // オーディオ・フレームワーク初期化
00064     afw::startAudio();      // オーディオ処理開始
00065     
00066     interrupt( SIGIVG12, &pbIntHandler );   // 割込みハンドラ登録
00067     pb::enableInterrupt( sw );        // プッシュボタン割込み許可
00068 
00069     while(1)
00070         ;                   // 割り込み待ち
00071 }
00072 
00073 /** 割り込みハンドラ関数
00074    * 
00075    * プッシュ・ボタンからのFLAG IO割り込みを受けて、ゲインを変更する。
00076    */
00077 void pbIntHandler( int ivg )
00078 {
00079     
00080     if (    pb::interruptRequested()        // PORTFからの割り込みか
00081             & pb::pushed( sw ) ){           // プッシュ・ボタン割り込みがかかっているのか
00082 
00083         if ( 0.0r != param::gain )          // ゲインを変更する
00084             param::gain = 0.0r;
00085         else
00086             param::gain = 1.0r;             // 1.0は表現できないので、最大値に飽和する
00087         pb::clearInterrupt( sw );           // 割り込みをクリアする
00088     }
00089     ssync();                                // パイプライン・バス上の書きこみが
00090                                             // 終了するまで待つ
00091 }
00092 
00093 

Push Buttonに対してSun Jan 21 21:09:50 2007に生成されました。  doxygen 1.4.7