OSDN Git Service

AD7999によるボリューム読み取りのAPIを実装した
authortakemasa <suikan@users.sourceforge.jp>
Sun, 16 Dec 2012 14:09:47 +0000 (23:09 +0900)
committertakemasa <suikan@users.sourceforge.jp>
Sun, 16 Dec 2012 14:09:47 +0000 (23:09 +0900)
12 files changed:
uzume_prototype/Makefile
uzume_prototype/Makefile.depend
uzume_prototype/configure-project
uzume_prototype/kernel_cfg.c
uzume_prototype/kernel_chk.c
uzume_prototype/kernel_id.h
uzume_prototype/kernel_obj.dat
uzume_prototype/uzume.c
uzume_prototype/uzume.h
uzume_prototype/uzume_callback.c
uzume_prototype/uzume_prototype.c
uzume_prototype/uzume_prototype.cfg

index 3422d7f..829c530 100644 (file)
@@ -116,10 +116,10 @@ UTASK_CFG = $(UNAME).cfg
 UTASK_DIR = $(SRCDIR)/library
 UTASK_ASMOBJS =
 ifdef USE_CXX
-    UTASK_CXXOBJS = $(UNAME).o uzume.o uzume_callback.o
+    UTASK_CXXOBJS = $(UNAME).o uzume.o uzume_callback.o ad7999.o
     UTASK_COBJS =
 else
-    UTASK_COBJS = $(UNAME).o uzume.o uzume_callback.o
+    UTASK_COBJS = $(UNAME).o uzume.o uzume_callback.o ad7999.o
 endif
 UTASK_CFLAGS =
 UTASK_LIBS =
index c2c81b5..cb3e337 100644 (file)
@@ -1,7 +1,7 @@
 kernel_cfg.c kernel_id.h kernel_chk.c: kernel/systask/logtask.cfg \
        kernel/include/kernel.h uzume.cfg \
        kernel/config/blackfin/cpu_defs.h \
-       kernel/config/blackfin/_common_bf592/chip_defs.h \
+       kernel/config/blackfin/_common_bf592/chip_defs.h ad7999.cfg \
        kernel/config/blackfin/_common_bf592/sys_rename.h \
        kernel/include/t_config.h \
        kernel/config/blackfin/tool_config.h uzume_prototype.cfg \
@@ -637,8 +637,9 @@ start.o: kernel/include/kernel.h kernel/config/blackfin/cpu_defs.h \
        kernel/config/blackfin/cpu_config.h kernel/include/itron.h \
        kernel/config/blackfin/_common_bf592/chip_config.h 
 cpu_crtbegin.o: kernel/config/blackfin/cpu_crtbegin.c 
-uzume_prototype.o: kernel/include/kernel.h \
-       kernel/include/t_services.h \
+uzume_prototype.o: \
+       kernel/config/blackfin/amakusa_bf592/i2c_subsystem.h \
+       kernel/include/kernel.h kernel/include/t_services.h \
        kernel/config/blackfin/cpu_defs.h uzume_prototype.c \
        kernel/config/blackfin/_common_bf592/chip_defs.h \
        /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/include-fixed/limits.h \
@@ -686,6 +687,18 @@ uzume_callback.o: kernel/include/kernel.h \
        kernel/include/itron.h \
        /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/include/stddef.h \
        kernel/include/t_stddef.h 
+ad7999.o: kernel/include/kernel.h ad7999.h \
+       kernel/config/blackfin/cpu_defs.h \
+       kernel/config/blackfin/_common_bf592/chip_defs.h \
+       kernel/include/serial.h kernel/include/t_stddef.h \
+       kernel/config/blackfin/amakusa_bf592/i2c_subsystem.h \
+       ad7999.c kernel/include/t_services.h \
+       /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/include-fixed/limits.h \
+       uzume.h kernel/config/blackfin/tool_defs.h \
+       kernel/include/t_syslog.h \
+       kernel/config/blackfin/amakusa_bf592/sys_defs.h \
+       /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/include/stddef.h \
+       kernel/include/itron.h 
 timer.o: \
        /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/defBF59x_base.h \
        kernel/include/kernel.h kernel/include/timer.h \
@@ -809,7 +822,7 @@ kernel_cfg.o: \
        kernel/include/kernel_cfg.h kernel/include/s_services.h \
        kernel/config/blackfin/_common_bf592/chip_config.h \
        kernel/include/../kernel/task.h kernel/include/kernel.h \
-       kernel/include/timer.h \
+       ad7999.h kernel/include/timer.h \
        /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/stdint.h \
        kernel/config/blackfin/_common_bf592/chip_defs.h \
        /opt/uClinux2011R1RC4/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/cdef_LPBlackfin.h \
index b73c940..f89d814 100755 (executable)
@@ -1 +1 @@
-kernel/configure -C blackfin -S amakusa_bf592 -A uzume_prototype -U "uzume.o uzume_callback.o"
+kernel/configure -C blackfin -S amakusa_bf592 -A uzume_prototype -U "uzume.o uzume_callback.o ad7999.o"
index 477624b..fd5911f 100644 (file)
 #include "logtask.h"
 #include "i2c_subsystem.h"
 #include "uzume.h"
+#include "ad7999.h"
 
 
        /* Object initializer [task] */
 
-#define TNUM_TSKID 3
+#define TNUM_TSKID 4
 
 const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);
 
 static __STK_UNIT __stack_MAIN_TASK[__TCOUNT_STK_UNIT(1024)];
 static __STK_UNIT __stack_LOGTASK[__TCOUNT_STK_UNIT(LOGTASK_STACK_SIZE)];
 static __STK_UNIT __stack_CODEC_TASK[__TCOUNT_STK_UNIT(512)];
+static __STK_UNIT __stack_AD7999_TASK[__TCOUNT_STK_UNIT(1024)];
 
 const TINIB _kernel_tinib_table[TNUM_TSKID] = {
        {0x00u | 0x02u, (VP_INT)(0), (FP)(main_task), INT_PRIORITY(5), __TROUND_STK_UNIT(1024), __stack_MAIN_TASK, TA_NULL, (FP)(NULL)},
        {0x00u | 0x02u, (VP_INT)(( VP_INT ) 1), (FP)(logtask), INT_PRIORITY(LOGTASK_PRIORITY), __TROUND_STK_UNIT(LOGTASK_STACK_SIZE), __stack_LOGTASK, TA_NULL, (FP)(NULL)},
-       {0x00u | 0x02u, (VP_INT)(0), (FP)(task_audiocodec), INT_PRIORITY(3), __TROUND_STK_UNIT(512), __stack_CODEC_TASK, TA_NULL, (FP)(NULL)}
+       {0x00u | 0x02u, (VP_INT)(0), (FP)(task_audiocodec), INT_PRIORITY(3), __TROUND_STK_UNIT(512), __stack_CODEC_TASK, TA_NULL, (FP)(NULL)},
+       {0x00u | 0x02u, (VP_INT)(40), (FP)(ad7999_task), INT_PRIORITY(AD7999_PRIORITY), __TROUND_STK_UNIT(1024), __stack_AD7999_TASK, TA_NULL, (FP)(NULL)}
 };
 
-const ID _kernel_torder_table[TNUM_TSKID] = {1,2,3};
+const ID _kernel_torder_table[TNUM_TSKID] = {1,2,3,4};
 
 TCB _kernel_tcb_table[TNUM_TSKID];
 
 
        /* Object initializer [semaphore] */
 
-#define TNUM_SEMID 5
+#define TNUM_SEMID 6
 
 const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);
 
@@ -63,7 +66,8 @@ const SEMINIB _kernel_seminib_table[TNUM_SEMID] = {
        {1, 1, 1},
        {1, 1, 1},
        {1, 0, 1},
-       {1, 0, 1}
+       {1, 0, 1},
+       {1, 1, 1}
 };
 
 SEMCB _kernel_semcb_table[TNUM_SEMID];
index d9e62ab..9b99d77 100644 (file)
@@ -39,6 +39,7 @@ void checker_function(void)
 
                /* task */
 
+       OBJECT(task_4,AD7999_TASK);
        OBJECT(task_3,CODEC_TASK);
        OBJECT(task_2,LOGTASK);
        OBJECT(task_1,MAIN_TASK);
@@ -56,6 +57,7 @@ void checker_function(void)
 
                /* semaphore */
 
+       OBJECT(semaphore_6,AD7999_SEM);
        OBJECT(semaphore_3,SEM_I2C0_BLOCK);
        OBJECT(semaphore_4,SEM_I2C0_SIGNAL);
        OBJECT(semaphore_1,SERIAL_RCV_SEM1);
index c9762da..c42e6e1 100644 (file)
@@ -3,6 +3,8 @@
 
        /* object identifier deifnition */
 
+#define AD7999_SEM           6
+#define AD7999_TASK          4
 #define CODEC_TASK           3
 #define LOGTASK              2
 #define MAIN_TASK            1
index c9b52e8..3e0a7d0 100644 (file)
Binary files a/uzume_prototype/kernel_obj.dat and b/uzume_prototype/kernel_obj.dat differ
index 14ca223..69d835e 100644 (file)
@@ -327,8 +327,8 @@ void task_audiocodec(VP_INT extinf)
                
                                // CODECの受信データを引数バッファにコピー
                for ( sample = 0; sample < UZUME_BLOCKSIZE; sample++ ){
-                       leftIn[sample]  = RxBuffer[bufRx].data[sample][ADC_L0];
-                       rightIn[sample] = RxBuffer[bufRx].data[sample][ADC_R0];
+                       leftIn[sample]  = RxBuffer[bufRx].data[sample][ADC_L0] >> UZUME_INT_BITS;
+                       rightIn[sample] = RxBuffer[bufRx].data[sample][ADC_R0] >> UZUME_INT_BITS;
                }
                
                                // 信号処理
@@ -341,8 +341,8 @@ void task_audiocodec(VP_INT extinf)
                
                                // 引数データをCODEC用送信バッファにコピー
                for ( sample = 0; sample < UZUME_BLOCKSIZE; sample++ ){
-                       TxBuffer[bufRx].data[sample][DAC_L0] = leftOut[sample];
-                       TxBuffer[bufRx].data[sample][DAC_R0] = rightOut[sample];
+                       TxBuffer[bufRx].data[sample][DAC_L0] = leftOut[sample]  << UZUME_INT_BITS;
+                       TxBuffer[bufRx].data[sample][DAC_R0] = rightOut[sample] << UZUME_INT_BITS;
                }                               
 
        }
index 3c56556..b072e39 100644 (file)
@@ -4,15 +4,35 @@
  */
 #ifndef UZUME_H_
 #define UZUME_H_
+
+/**
+ * @brief 汎用固定小数点型。
+ * @datails
+ * Blackfinでは32bitで使用する。整数部のビット長は0である。
+ */
+typedef int FX32;
+
 /**
  * @brief 割り込み1回あたりのサンプル数。ユーザーが変えてもよい。
  */
+#define UZUME_INT_BITS 0
+/**
+ * @brief スケーリング・ファクター
+ * @details
+ * AUDIOSAMPLE型の整数部のビット数を指定する。0の場合フォーマットは1.32、
+ * 3ならば4.28、7ならば8.24となる。
+ */
 #define UZUME_BLOCKSIZE 64
 /**
  * @brief サンプルあたりのスロット数。I2Sなら2。
  */
 #define SLOT_PER_SAMPLE 2
 
+/**
+ * @brief オーディオコーデック用データ型。
+ * @datails
+ * Blackfinでは32bitで使用する。整数部のビット長は、 UZUME_INT_BITS で宣言する。
+ */
 typedef int AUDIOSAMPLE;
 
 // CODECのスロット番号
index 84ed363..8c3b064 100644 (file)
@@ -6,6 +6,7 @@
 #include "t_services.h"
 #include "kernel_id.h"
 #include "uzume.h"
+#include "ad7999.h"
 /**
  * @brief 信号処理初期化関数
  * @param count @ref codec_callback()に渡される引数配列のサイズ
@@ -44,11 +45,15 @@ void process_audio(
 {
                // ループ変数
        int sample;
+       FX32 volume;
+
+           // ch 0 のボリューム値(32bit)
+       volume = get_volume(0)>>15;
        
                // count個のサンプルすべてを処理する
        for ( sample = 0; sample < UZUME_BLOCKSIZE; sample++ ){
-               output_left[sample]  = input_left[sample];
-               output_right[sample] = input_right[sample];
+               output_left[sample]  = (input_left[sample]>>16) *  volume;
+               output_right[sample] = (input_right[sample]>>16) * volume;
        }
 }
 
index 0f38932..f94c40e 100644 (file)
@@ -4,7 +4,6 @@
 #include "uzume_prototype.h"
 #include <i2c_subsystem.h>
 
-unsigned char adcbuf[8];
 #define ADCADDR 0x28
 
 
@@ -17,8 +16,6 @@ void main_task(VP_INT exinf)
 
     while(1)
     {
-        i2c_master_read(0, ADCADDR, adcbuf, 2);
-        syslog( LOG_NOTICE, "ADC is : %02x%02x ", adcbuf[0], adcbuf[1]);
         tslp_tsk(200);
     }
 }
index ca0f819..cdf60fb 100644 (file)
@@ -1,5 +1,4 @@
 /*
- *  @(#) $Id: sample1.cfg,v 1.1 2009/01/31 05:27:37 suikan Exp $
  */
 
 
@@ -14,4 +13,5 @@ CRE_TSK(MAIN_TASK, { TA_HLNG|TA_ACT, 0, main_task, MAIN_PRIORITY,
 #include "kernel/systask/serial.cfg"
 #include "kernel/systask/logtask.cfg"
 #include "i2c0_m.cfg"
-#include "uzume.cfg"
\ No newline at end of file
+#include "uzume.cfg"
+#include "ad7999.cfg"