UMEHOSHI ITA TOP PAGE    COMPUTER SHIEN LAB

[UMEHOSHI ITA]の制御で使っているIC「PIC32MX270F256B-I/SO」のフラッシュメモリには、テスト用プログラムが書き込まれいています。
以降では、このプログラムを「テスト・ウメ・フラッシュ」と呼ぶことにして解説します。
また、「テスト・ウメ・フラッシュ」を利用したユーザー用のプログラムを 「ウメ・エディットプログラム」と呼ぶことにします。
「ウメ・エディットプログラム」の開発では「umehoshiEditツール」が必要で、 その取得や最初の操作情報は、こちらを参照してください。
(「PICKit3などの書き込みツール」をお持ちの方で、「テスト・ウメ・フラッシュ」を利用しないで、 「MPLAB X IDE」の開発環境ですべてをプログラミングする場合の情報ではありません。)
「テスト・ウメ・フラッシュ」をどのように利用して、「ウメ・エディットプログラム」を 作るかの解説で、「umehoshiEditツール」の使用例を示しています。
各サンプルは、このWebページ上でドラック&コピーして、貼り付けしてご利用ください。

各種確認プログラム左記に必要な部品の追加例

umehoshiEditの使い方(Lチカで始める)

(D1のLEDを使う)

USBで接続されるホストにメッセージ(文字列)を送信する。

とくに必要ありません。
(D1のLEDは、あるとよい)

モータ制御、PWM (Timer2利用)

PWM対応の部品追加例

ADC(A/Dコンバータ)を使う(Timer3利用)

ADC 対応の部品追加例

BEEP(ブザー音で、デフォルトのCORE Timer、Timer1を利用)

BEEP SWITCH 対応の部品追加例

[UMEHOSHI ITA]単体で動作させる

Reset SW, Type-A, CN2 部品追加例

赤外線制御

U20,D4,D5,NPN, D3 部品追加例

UART を介して、RN-42(Bluetooth)を制御

CN11,CN-12 部品追加例

UART を介して、ESP32-WROOM-32DをBASIC制御

U19 部品追加例

UART を介して、RN4020(BLE)で制御

U17にRN4020の部品を追加する例

UART を介して、ESP32-WROOM-32DをBASIC制御

[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行の表示を行うだけのプロフラムですが・・

[UMEHOSHI ITA]からESP32へBASICプログラムを転送して動作させる

以下は、「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などの実行です。)