UMEHOSHI ITA TOP PAGE COMPUTER SHIEN LAB
[UMEHOSHI ITA]の制御で使っているIC「PIC32MX270F256B-I/SO」のフラッシュメモリには、テスト用プログラムが書き込まれいています。
以降では、このプログラムを「テスト・ウメ・フラッシュ」と呼ぶことにして解説します。
また、「テスト・ウメ・フラッシュ」を利用したユーザー用のプログラムを
「ウメ・エディットプログラム」と呼ぶことにします。
「ウメ・エディットプログラム」の開発では「umehoshiEditツール」が必要で、
その取得や最初の操作情報は、こちらを参照してください。
(「PICKit3などの書き込みツール」をお持ちの方で、「テスト・ウメ・フラッシュ」を利用しないで、
「MPLAB X IDE」の開発環境ですべてをプログラミングする場合の情報ではありません。)
「テスト・ウメ・フラッシュ」をどのように利用して、「ウメ・エディットプログラム」を
作るかの解説で、「umehoshiEditツール」の使用例を示しています。
各サンプルは、このWebページ上でドラック&コピーして、貼り付けしてご利用ください。
各種確認プログラム | 左記に必要な部品の追加例 |
---|---|
(D1のLEDを使う) | |
とくに必要ありません。 (D1のLEDは、あるとよい) | |
PWM対応の部品追加例 | |
ADC 対応の部品追加例 | |
BEEP SWITCH 対応の部品追加例 | |
Reset SW, Type-A, CN2 部品追加例 | |
U20,D4,D5,NPN, D3 部品追加例 | |
CN11,CN-12 部品追加例 | |
U19 部品追加例 | |
U17にRN4020の部品を追加する例 |
[UMEHOSHI ITA]で動作させる時に必要な部品の追加のリンクです。
(BASIC の動作は、このページで示すように ESP32の初期内容を変更すると出来ませんのでご注意ください)
次のイメージでPCと接続して使います。
このようにESP32を追加した基板を使うには、大きなUSB電源供給能力(1.5A程度)が必要です。
PCやスマフォと直接USB接続しないで、別電源付きのUSBハブを経由して接続した方が良いでしょう。
(USB2.0の給電能力が500mA、USB3.0で900mAのため、規格を超えて使うことになります)
(USBはPCと接続)
このリンクに従って、
PCとUSBで接続して、「Tera Term」を起動して、『Tと[Enter]』の入力操作で、
[UMEHOSHI ITA]をスルーモードにしています。
次のように、「Tera Term」と接続して[Setup]メニューの[Terminal]の画面で受信改行を「LF」送信改行を「CR+LF」に変更後、
『Enter、T、Enter、Enter』とキー入力すると
一時スルーモードになります。
その後で、helpを入力すれば、BASIC が動作しているか分かります。
スルーモードにより、「Tera Term」のキー入力は、[UMEHOSHI ITA]を介して「ESP32-WROOM-32D」へシリアル入力され、 出力が「Tera Term」に送られるようになっています。
10 N=10 20 FOR X=1 TO 10000 30 PRINT '012345678901234567890123456789012345678901234567890123456789HELLO', X 40 DELAY 0 50 NEXT X上記をキー入力した後、『list』でリストアップ、『run』で実行します。
>list 10 N=10 20 FOR X=1 TO 10 30 PRINT '012345678901234567890123456789012345678901234567890123456789HELLO', X 40 DELAY 0 50 NEXT X OK > >run 012345678901234567890123456789012345678901234567890123456789HELLO1 012345678901234567890123456789012345678901234567890123456789HELLO2 ・・・ 012345678901234567890123456789012345678901234567890123456789HELLO10000 012345678901234567890123456789012345678901234567890123456789HELLO10000 OK >単純に、10000行の表示を行うだけのプロフラムですが・・
以下は、「Tera Term」でなく「umehoshiEditツール」を使って作る「ウメ・エディットプログラム」です。
これは上記BASICコードをUARTを介してESP32に埋め込み、起動させるコードです。
(BASICの繰り返しを、分かりやすく10回に変更しました。)
//exsp32_basic_run_test.c #include <xc.h> #include "common.h" char **prg=NULL; // // BASICプログラム文字列群のポインタ int prg_n =0; int prg_i =0; char *prg1[]= // BASICプログラム文字列群 { "10 N=10", "20 FOR X=1 TO 10", "30 PRINT '012345678901234567890123456789012345678901234567890123456789HELLO', X", "40 DELAY 0", "50 NEXT X", "list", "run", NULL, }; void timer(){//「割り込みで目的のプログラム行うため処理: 0.00005秒ごとに呼び出される。」 static int timing_count=0; if(timing_count++ < 100) return; timing_count=0; if( prg[prg_n] != NULL ){ if(prg[prg_n][prg_i] != 0){ _send_uart1(prg[prg_n][prg_i]);//UARTへ送信 //_send_char(prg[prg_n][prg_i]); //エコーモード時必要ない prg_i++; } else { _send_uart1('\r');//UARTへ送信 _send_uart1('\n');//UARTへ送信 prg_n++; prg_i=0; _RB15 = ! _RB15;// D1 LEDを反転 //_send_string("\r\n");//エコーモード時必要ない } } else { _send_string("end send.\r\n"); IEC0bits.T4IE = 0;// Timer4 Enable(割込み不許可) } } void restart(){ _core_wait(5);// 遅延実験用 prg = prg1; //IEC1bits.U1RXIE = 1; // UART1受信 Enable(割込み許可) //IEC1bits.U1EIE = 1;// 送受信エラー用割込み _HANDLES[_IDX_TIMER_4_FUNC] = timer;//デフォルトで0.00005秒ごとに呼び出しに登録 IEC0bits.T4IE = 1;// Timer4 Enable(割込み許可) T4CONbits.ON = 1;// timer割込みオン } __attribute__((address( 0x80005000 ))) void setting(void); void setting() { _HANDLES[_IDX_INIT_SUB_FUNC] = restart; restart(); _RB5 = 0;// 起動確認用のLED D1の消灯 }
実行する場合はスルーモードにする必要はありません。単なる「ウメ・エディットプログラム」です。
[UMEHOSHI ITA]内のプログラムで、UARTに送信することで、BASICが動いているESP32へ転送しています。
(char *prg1[]に記録したBASICのコード列を、prgを介してタイマー割り込みでUARTへ送信しています。)
タイマー割り込みで1文字送信ずつ送信して、1行送信ごとにLED出力を反転しています。
BASICのコード列の最後に、"run"があり、その転送により転送後に自動実行します。
このイメージを以下に示します。([UMEHOSHI ITA]の0x80005000番地からの実行イメージ)
なお、この発想でUART接続先へコードを送り込み、上記のESP32のBASIC以外の対象物も実行させるようなことが出来るでしょう。
(例えば、別ページで示しているのESP32のmicropythonなどの実行です。)