UMEHOSHI ITA TOP PAGE COMPUTER SHIEN LAB
[UMEHOSHI ITA]の制御で使っているIC「PIC32MX270F256B-I/SO」のフラッシュメモリには、テスト用プログラムが書き込まれいています。
このプログラムを「テスト・ウメ・フラッシュ」と呼び、これをを利用したユーザー用のプログラムを
「ウメ・エディットプログラム」と呼ぶことにしています。
ここでは、「テスト・ウメ・フラッシュ」を 「ウメ・エディットプログラム」で利用するためにヘッダファイル
common.hを示しています。
// RAM領域内の各ブロック絶対アドレス #define _PTR_HANDLERS 0xA0004000 // 置き換え可能なおデフォルト関数やシステム情報用 #define _PTR_RAM_AREA1 0xA0005000 // PROGRAM AREA #define _PTR_RAM_AREA2 0xA0008000 // DATA AREA #define _PTR_RAM_AREA3 0xA0009000 // USER INDEX AREA #define _HANDLES ((void (**)(void) )_PTR_HANDLERS) #define _MEMO3 ((uint32_t *) _PTR_RAM_AREA3) // 排他制御に使うアクセス中を示すID (アクセス権要求ID)=========================== #define _ID_ACCESS_USBTASK 0x0010 // my_sys.c のMy_APP_Tasks関数内の処理内用排他ID #define _ID_ACCESS_PWMTASK 0x0020 // PWMのコンパレート割り込み処理内の処理内用排他ID #define _ID_ACCESS_ADCTASK 0x0040 // ADCの割り込み処理内の処理内用排他ID、 #define _ID_ACCESS_CT_TASK 0x0080 // コアタイマー割り込み処理内の処理内用排他ID #define _ID_ACCESS_T1_TASK 0x0100 // Timer1の割り込み処理内の処理内用排他ID #define _ID_ACCESS_T2_TASK 0x0200 // Timer2の割り込み処理内の処理内用排他ID #define _ID_ACCESS_T3_TASK 0x0400 // Timer3の割り込み処理内の処理内用排他ID #define _ID_ACCESS_T4_TASK 0x0800 // Timer4の割り込み処理内の処理内用排他ID #define _ID_ACCESS_T5_TASK 0x1000 // Rimer5の割り込み処理内の処理内用排他ID #define _ID_ACCESS_UARTASK 0x2000 // UARTの割り込み処理内の処理内用排他ID // コアタイマー 関連 ============================================================ #define _IDX_CORE_TIMER_FUNC 0 // コアタイマー割込み処理 #define _IDX_INIT_CORE_TIMER 1 // コアタイマー割込み初期化 #define _IDX_CP0_SET_COMPARE 3 // 上記の比較レジスタ設定値用 #define _UM_CP0_SET_COMPARE (((int *)_PTR_HANDLERS)[_IDX_CP0_SET_COMPARE]) #define _IDX_CORE_TIMER_SUB_FUNC 5 // 上記_core_timer_umeFunc1から呼ばれるサブルーチン #define _IDX_SWITCH2_STATE 7 // SW2の状態取得 #define _switch2_state() (((int (**)(void) )_PTR_HANDLERS)[_IDX_SWITCH2_STATE]()) #define _IDX_THROUGH_MODE 8 // リセット時もスルーモード指定フラグ #define _UME_THROUGH_MODE (((int *)_PTR_HANDLERS)[_IDX_THROUGH_MODE]) #define _IDX_USB_CDC_RATE 9 // USB CDC の基本ボーレート #define _UME_USB_CDC_DATE (((int *)_PTR_HANDLERS)[_IDX_USB_CDC_RATE]) #define _IDX_TIMER_1_FUNC 10 // Timer1の割り込み関数(デフォルトでテンポ切り替え) #define _IDX_INIT_TIMER_1 11 // Timer1の初期設定関数(デフォルトで0.5ミリ秒毎) #define _IDX_CORE_WAIT 12 // コアタイマ利用のwait関数 #define _core_wait(t) (((void (**)(int) )_PTR_HANDLERS)[_IDX_CORE_WAIT](t)) #define _IDX_TIMER_2_FUNC 20 #define _IDX_INIT_TIMER_2 21 #define _IDX_COMPARE_5_FUNC 22 #define _IDX_COMPARE_1_FUNC 23 #define _IDX_COMPARE_3_FUNC 24 #define _IDX_COMPARE_4_FUNC 25 #define _IDX_TIMER_3_FUNC 30 #define _IDX_INIT_TIMER_3 31 #define _IDX_ADC_1_FUNC 32 #define _IDX_INIT_ADC_1 33 #define _IDX_TIMER_4_FUNC 37 #define _IDX_TIMER_5_FUNC 38 #define _IDX_INIT_TIMER_4_5 39 // PWM 関連 ==================================================================== //CN6(左側)RB2デューティ比用Output Compare Output5 の設定(PWMなどの設定) #define _IDX_CN6_OC5RS 41 #define _UME_CN6_OC5RS (((int *)_PTR_HANDLERS)[_IDX_CN6_OC5RS]) //CN6(左側)RB3デューティ比用Output Compare Output1 の設定(PWMなどの設定) #define _IDX_CN6_OC1RS 42 #define _UME_CN6_OC1RS (((int *)_PTR_HANDLERS)[_IDX_CN6_OC1RS]) //CN7(右側)RB13デューティ比用Output Compare Output4 の設定(PWMなどの設定) #define _IDX_CN7_OC4RS 43 #define _UME_CN7_OC4RS (((int *)_PTR_HANDLERS)[_IDX_CN7_OC4RS]) //CN7(右側)後ろ方向デューティ比用Output Compare Output3 の設定(PWMなどの設定) #define _IDX_CN7_OC3RS 44 #define _UME_CN7_OC3RS (((int *)_PTR_HANDLERS)[_IDX_CN7_OC3RS]) #define _IDX_INIT_COMPARE 45// PWD上記設定を初期化する処理用 #define _init_compare() (((void (**)(void) )_PTR_HANDLERS)[_IDX_INIT_COMPARE]()) #define _IDX_SET_PWD_MODE 46 // CN6,CN7 の出力制御(PWMなど)のモード設定 #define _set_pwd_mode(f) (((void (**)(int) )_PTR_HANDLERS)[_IDX_SET_PWD_MODE](f)) // UMEHOSHI ITA HANDLESルーチンのユーザ用初期化 // dummyがセット #define _IDX_HANDLE_USER_SET_FUNC 48 #define _handle_user_set_func() (((void (**)(void) )_PTR_HANDLERS)[_IDX_HANDLE_USER_SET_FUNC]()) // UMEHOSHI ITA アプリ用初期ルーチン // dummyがセット #define _IDX_INIT_SUB_FUNC 50 #define _init_sub_func() (((void (**)(void) )_PTR_HANDLERS)[_IDX_INIT_SUB_FUNC]()) #define _IDX_CONFIG 51 // エラー処理などの設定 #define _UME_CONFIG (((int *)_PTR_HANDLERS)[_IDX_CONFIG]) // EEPROM操作追加に伴う追加[2023-4] #define _IDX_NVM_ERASE_PAGE 60 // 不揮発性メモリのページ消去(512byteを0xffにする) #define _nvm_erase_page(d) (((uint32_t (**)(uint32_t) )_PTR_HANDLERS)[_IDX_NVM_ERASE_PAGE](d)) #define _IDX_NVM_WRITE_WORD 61 #define _nvm_write_word(a,d) (((uint32_t (**)(uint32_t, uint32_t) )_PTR_HANDLERS)[_IDX_NVM_WRITE_WORD](a,d)) // USBからの置き換え可能な受信処理------------------------------------------------ #define _IDX_RECIVE_USB 90 #define _RECIVE_USB_FUNC (((int (**)(uint8_t))_PTR_HANDLERS)[_IDX_RECIVE_USB]) // USBを介した文字列出力操作関連関数---------------------------------------------- #define _IDX_API_REQUEST_ACC_OUTBUFF 101 #define _request_acc_outbuff(d) (((int (**)(uint16_t) )_PTR_HANDLERS)[_IDX_API_REQUEST_ACC_OUTBUFF](d)) #define _IDX_API_RELEASE_ACC_OUTBUFF 102 #define _release_acc_outbuff(d) (((uint16_t (**)(uint16_t) )_PTR_HANDLERS)[_IDX_API_RELEASE_ACC_OUTBUFF](d)) #define _IDX_API_SEND_CHAR 103 #define _send_char(s) (((void (**)(char) )_PTR_HANDLERS)[_IDX_API_SEND_CHAR](s)) #define _IDX_API_SET_BREAK_BUFFER 104 #define _set_break_buffer() (((void (**)())_PTR_HANDLERS)[_IDX_API_SET_BREAK_BUFFER]()) #define _IDX_API_SEND_STRING 105 #define _send_string(s) (((void (**)(char *) )_PTR_HANDLERS)[_IDX_API_SEND_STRING](s)) #define _IDX_API_SEND_HEX_LOW 106 #define _send_hex_low(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_API_SEND_HEX_LOW](d)) #define _IDX_API_SEND_HEX_HI 107 #define _send_hex_hi(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_API_SEND_HEX_HI](d)) #define _IDX_API_SEND_DECIMAL 108 #define _send_decimal(d,w) (((void (**)(int, int) )_PTR_HANDLERS)[_IDX_API_SEND_DECIMAL](d,w)) #define _IDX_API_GET_CAPACITY 109 #define _get_capacity() (((int (**)())_PTR_HANDLERS)[_IDX_API_GET_CAPACITY]()) #define _IDX_API_SEND_16BYTE 110 #define _send_16byte(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_API_SEND_16BYTE](d)) #define _IDX_SEND_PADDING_UINT 111 #define _send_padding_uint(d,c,w) (((void (**)(int, char, int) )_PTR_HANDLERS)[_IDX_SEND_PADDING_UINT](d,c,w)) #define _IDX_SEND_FLOAT 112 #define _send_float(d, w, p) (((void (**)(double, int, int) )_PTR_HANDLERS)[_IDX_SEND_FLOAT](d,w,p)) #define _IDX_SEND_EXPONENT 113 #define _send_exponent(d, w, p) (((void (**)(double, int, int) )_PTR_HANDLERS)[_IDX_SEND_EXPONENT](d,w,p)) #define _IDX_SEND_UME_ID 119 #define _send_ume_id() (((void (**)() )_PTR_HANDLERS)[_IDX_SEND_UME_ID]()) // BEEP 関連定義----------------------------------------------------------------- #define _IDX_SET_BEEP_PERIOD 120 #define _set_beep_period(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_SET_BEEP_PERIOD](d)) #define _IDX_SET_BEEP_SOUND_NODE 121 #define _set_beep_sound_node(i,c,s,n)\ (((void (**)(int , uint8_t ,uint8_t, uint8_t) )_PTR_HANDLERS)[_IDX_SET_BEEP_SOUND_NODE](i,c,s,n)) #define _IDX_SET_SWITCHING_PERIOD 123 #define _set_switching_period(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_SET_SWITCHING_PERIOD](d)) #define _IDX_SET_BEEP_CODE 124 #define _set_beep_code(d) (((void (**)(uint32_t) )_PTR_HANDLERS)[_IDX_SET_BEEP_CODE](d)) #define _IDX_CLEAR_BEEP_CODE 125 #define _clear_beep_code() (((void (**)() )_PTR_HANDLERS)[_IDX_CLEAR_BEEP_CODE]()) #define _IDX_PTR_BEEP_AREA 126 #define _UM_PTR_BEEP_AREA (((uint8_t **)_PTR_HANDLERS)[_IDX_PTR_BEEP_AREA]) #define _IDX_PTR_GOTO_BEEP 127 #define _UM_PTR_GOTO_BEEP (((uint8_t **)_PTR_HANDLERS)[_IDX_PTR_GOTO_BEEP]) // DEBUG 関連定義---------------------------------------------------------------- #define _IDX_DEBUG_COUNT 130 #define _debug_count(n,c,b) (((int (**)(int, int, int) )_PTR_HANDLERS)[_IDX_DEBUG_COUNT](n,c,b)) #define _IDX_DEBUG_HEX4 131 #define _debug_hex4(n,c,b) (((int (**)(int, uint8_t, int) )_PTR_HANDLERS)[_IDX_DEBUG_HEX4](n,c,b)) #define _IDX_DEBUG_HEX8 132 #define _debug_hex8(n,c,b) (((int (**)(int, uint8_t, int) )_PTR_HANDLERS)[_IDX_DEBUG_HEX8](n,c,b)) #define _IDX_DEBUG_HEX16 133 #define _debug_hex16(n,c,b) (((int (**)(int, uint16_t, int) )_PTR_HANDLERS)[_IDX_DEBUG_HEX16](n,c,b)) #define _IDX_DEBUG_HEX32 134 #define _debug_hex32(n,c,b) (((int (**)(int, uint32_t, int) )_PTR_HANDLERS)[_IDX_DEBUG_HEX32](n,c,b)) #define _IDX_DEBUG_POINT 135 #define _debug_point(n,c) (((int (**)(int, int) )_PTR_HANDLERS)[_IDX_DEBUG_POINT](n,c)) // ADC 関連 -------------------------------------------------------------------- struct ADC_CTRL { uint32_t counter_ADC;//USB出力数のカウント uint32_t count_end_ADC;//上記カウント目標値(block_size_ADCより設定) int loop_flag_ADC;// ループサンプリングで1 int block_size_ADC;//サンプリングブロック数(1ブロックがADC_BUFF_SIZE) int set_sequence_flag; int out_channel_bits; // 1:AN0 or 2:AN1 or 3:(AN0,AN1) void (*adc_out_usb)(uint32_t); // ADC USB output function }; #define ADC_BUFF_SIZE 1024 #define ADC_OUT_NONE 2 // index_adc_out_blockの出力情報なしの定数 struct ADC_BUFF { uint16_t adc_buffer0[2][ADC_BUFF_SIZE]; //AN0(CN8) uint16_t adc_buffer1[2][ADC_BUFF_SIZE]; //AN1(CN9) int index_adc_block_sample; //録音中の添え字 0 or 1 int index_adc_sample; // 録音位置 int index_adc_out_block;// USB出力中の添え字 0 or 1 で、出力情報無し時は2がset int index_adc_out_pos; // USBの出力対象の添え字 int adc_buff_data_numb;// 実際のusbで送信するする際のワードサイズ目標値 struct ADC_CTRL *p_ctrl; }; #define _IDX_GET_PTR_ADC_BUFF 150 #define _get_ptr_adc_buff() (((struct ADC_BUFF * (**)() )_PTR_HANDLERS)[_IDX_GET_PTR_ADC_BUFF]()) #define _IDX_ENCODE_ADC_BUFF 151 #define _UME_ENCODE_ADC_BUFF (((int *)_PTR_HANDLERS)[_IDX_ENCODE_ADC_BUFF]) #define _IDX_SET_ADC_EXE 152 #define _set_adc_exe(n,f) (((int (**)(int, int) )_PTR_HANDLERS)[_IDX_SET_ADC_EXE](n,f)) #define _IDX_SET_ADC_MODE 153 #define _set_adc_mode(c,t) (((void (**)(int, int) )_PTR_HANDLERS)[_IDX_SET_ADC_MODE](c,t)) // UART1 関連 ------------------------------------------------------------------ #define _IDX_API_REQUEST_ACC_UARTBUFF 160 #define _request_acc_uartbuff(d) (((int (**)(uint16_t) )_PTR_HANDLERS)[_IDX_API_REQUEST_ACC_UARTBUFF](d)) #define _IDX_API_RELEASE_ACC_UARTBUFF 161 #define _release_acc_uartbuff(d) (((uint16_t (**)(uint16_t) )_PTR_HANDLERS)[_IDX_API_RELEASE_ACC_UARTBUFF](d)) #define _IDX_MY_APP_TASKS 162 #define _my_app_tasks() (((void (**)(void) )_PTR_HANDLERS)[_IDX_MY_APP_TASKS]()) #define _IDX_DEF_POLLS_UART 163 //UARTのデフォルトポーリング処理 #define _def_polls_uart() (((void (**)(void) )_PTR_HANDLERS)[_IDX_DEF_POLLS_UART]()) #define _IDX_CMD_POLLS_UART 164 #define _cmd_polls_uart() (((void (**)(void) )_PTR_HANDLERS)[_IDX_CMD_POLLS_UART]()) #define _IDX_ISR_POLLS_UART 165 #define _isr_polls_uart() (((void (**)(void) )_PTR_HANDLERS)[_IDX_ISR_POLLS_UART]()) #define _IDX_INIT_UART1 166 #define _init_uart1() (((void (**)(void) )_PTR_HANDLERS)[_IDX_INIT_UART1]()) #define _IDX_RECV_UART1 167 #define _recv_uart1(c) (((int (**)(uint8_t) )_PTR_HANDLERS)[_IDX_RECV_UART1](c)) #define _IDX_SEND_UART1 168 #define _send_uart1(c) (((int (**)(uint8_t) )_PTR_HANDLERS)[_IDX_SEND_UART1](c)) #define _IDX_GET_UART_CAPACITY 169 #define _get_uart1_capacity() (((int (**)())_PTR_HANDLERS)[_IDX_GET_UART_CAPACITY]()) #define _IDX_SEND_STR_UART1 170 #define _send_string_to_uart1(s) (((void (**)(char *) )_PTR_HANDLERS)[_IDX_SEND_STR_UART1](s))