3.その他
RISC用タイニーBASIC・・・ 8PinRISC
の CH32V003に豊四季タイニーBASICを入れる。
このページ
で公開している はなゆう製のソフトはフリーソフトです。ロイヤリティも保証もありません。店主
(2024/0817)
できあがったRISCチップ基盤の完成品、豊四季BASICが入っている。 小さくてかわいい
ブレッドボードで開発する。「tB]印がRISKチップ、LinkEの白いのは赤LEDが眩しくて
秋月電子で販売しています、@40の8ピンのRISC(@40RISC)上で動作する 豊四季タイニーBASICが使えるようになりました。
標準品に IN、OUT、ANA、SAVE、BOOT、LOAD、RND、TICK、CLT を追加しました。8ピ ンRISC
の電源以外の6ピンがI/Oとして使えます。
インタープリタ版です。 PC等の端末からTx,Rxピンを使って操作できます。
作ったBASICプログラムを ”SAVE BOOT” 文 でRISCチップ内のフラッシュに書き込んで、自動運転もできます。
豊四季タイニーBASICの操作画面 TeraTarmで操作、表示しています。
開発は Windows10+MonRiverStadio Var1.91(以後MRSと略)+LinkEで行いました。言語は C(
K&R )です。
できるまでは 結構しんどかったです。
しかし LPC(ARM)を始めたときよりは、情報が多いので助かりました。
見て判りますが ここではRISC,開発ソフトの準備、操作は紹介していません。 ネットに、いっぱい出ていますのでそちらを参考してください。
まとめ 目次
使ったものの紹介
できあがったソフト置き場はここ
豊四季タイニー
BASICに追加したこと
判ったこと、注意点は
サンプルソフトなど
< 使ったものの紹介 >
使ったのは 秋月電子で扱っている、@40の8ピンのRISCです(32ビットRISCマイコンCH32v003J4M6)これをブレッドボード
でつかうため、8ピンDIP拡張基盤 に乗せました。
これに
秋月で購入した、LinkEを接続します。LinkEは RISCのSWDIOを使ってプログラムライターとして、Tx,Rxを使ってシリアル通信、
3.3Vの電源の供給を行います。
このような小ピンのワンチップは、ただ小さいというだけで扱いやすそうですが、難点は「パケ、金額に比例してメモリーが小さい」ですが、このチッ
プは EEPROMが16KB、RAMが2KBあり、豊四季タイニーBASIC フルセットが載せられました。
8ピンとはいえ、電源の2ピンを除いても、I/Oが6ピンもあるので、小さな治具としてなら結構使えます。
同じコアで20ピンのチップ( CH32V003F4P6 )もありますので、両方持っているのがベストです。
このI/Oが使えることが大事で、価値があります。そうでなければ、もっとパワフルで安易なPCで代用できます。
開発は MRSで ADCあたりのサンプルをプロジェクトして、改築しています。
basic.cは作
者さんのページからコピペして、追記しました。
MRS内臓の Cコンパイラ 、デバッガー 、ターミナル で編集、虫取りを繰り返し、 TOP絵のように
LinkEを介して RISCに書き込みます。
最終は PCのTeraTarm(115200bps)+LinkE(3.3Vが出ます)+RISCで動作させます。
最低で 電源が2本、Tx,Rx(SWDIO)の合計4本必要です。
出来上がった ソフト置き場 で
す
main.c から basic.c
を呼んでいます。 この2つのソースと、コンパイルしたHEXファイルを載せておきます。
書き込むだけなら、そ の他 を参考にしてくださ
い。
もしくは 上のMRSの 左欄のobjフォルダの中に HEXファイルをコピペして 書き込んでもOKです。
< できた
もの 豊四季タイニーBASICに追加したこと >
1.@40RISCで、豊四季タイニーBASICが使えるようになった。
2.標準(?)に IN、OUT、ANA、SAVE、BOOT、LOAD、RND、TICK、CLT を追加しました。
内容は
IN+ピン番号 0か1が取れます。 例) >B=IN3 ... 3はチップの3番ピンで PA2です。
OUT+ピン >OUT3 HIGH or LOW
ANA+ピン >C=ANA(3)
SAVE()
プログラムを自身のフラッシュに書き込みます。 BOOTを付けると、自動で実行します。サイズは1KByte。
LOAD() フラッシュからプログラムを読み出します。
TICK() 10msecのタイマー値です。7FFFまでいくと
0に戻ります。 systicを使ってます。>B=TICK()
TCL TICKを ゼロクリアします。
RND 乱数発生
>A=RND(99)
BASICが使える大きさは 中間コードで 1KByteです。
以上の機能を詰め込んで、14KBに収めました。残量はあまり無いです。
電流は Vcc=3.3v時 実行時に ハイサイド電流計で 4.8mA(max)でした。
ついでに。。。
電流波形は比較的にきれいでして、デジタルテスターでも読めます。
データシートには載らない部分ですが、
Vccが 3.3V=4.0mA、2.87v=5.84mA このあたりが下限のリセット電圧で、内部でモガイています。
2.7V=5.77mA、、2.42V=0.09mA では停止して下がります。 以下は2.0V=0.08mAでした。
(2024/0829 追記おわり)
※ I/Oの指定は ピン番号を使いました。PC1=5ピンですが、PC1では配線できないし、20ピンではピン番が異なる。8ピ
ンで使うののを前提で、8ピ ンチップ の番号を割り付けました。
※20ピンなら、全てのピンに拡張できます。全てのポートが使えます。安いしオススメです。
※ Tx,Rxピンも I/Oとして使えます。 例 M=ANA(1) とか A=IN1
3.LinkEはシリアルUSB変換器として使えます。 私のPCではCOM4と認識しました。
その状態で
ターミナルソフトTeraTarmを立ち上げて、シリアル->COM4、設定は115200bpsでtBASICと通信できます。
MRSは EclipsのRISC版です。 NPX社のLPCに比べると、インストは楽です。アクチ不要でした。
プロジェクトが簡単に作れます。ターミナル+LinkEも使えて、結構便利です。デバックも、安定して使えます。
< 判ったこと、注意点は >
1. Cの標準ライブラリーはあっても、中は空なので使えません。LINKでエラーになります。
2.コンパイル効率を上げるためか、レジスタを多用していますので、エラーが発見しにくい。
3.WHILE文は要注意です。 条件が空のときもありました
4.変数の扱いも注意です。LoacalとGrovalの認識が危ない。
えてして コンパイラは けっこうあぶないです。
変数は アドレスで指定する方式が固いです。ポインタを使うような。。。
5必要なところしか、触ってはいけない、好奇心は怪我の元です。
一度 LinkEをポアしました。LinkE上のリセットボタンを押しながらUSBに差し込んで、復旧しました。
6.PA2のADCが使えなかった件は、内部クロックの指定に変えて、使えています。
【参考 ◼️ CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること
上のように変更しました。
7.内部の周辺デバイスは STM32と同じですので、参考になります。
【ADコンバータ【STM32のADコンバータ詳細】https://depfields.com/adc/ 】
8.周辺デバイスのサンプルは、下記にあり、Cで平易に記述されていて、判りやすいです。
https://www.wch.cn/downloads/CH32V003EVT_ZIP.html
これをコピペして使わせていただきました、これと 前記のSTM32のサイトを突き合わせると判りやすい。
特に フラッシュの扱いは 助かりました。
9.開発者の著作「タイニーBASICをCで書く 単行本-2016/4/25鈴木哲哉」は できれば 目を通しておいたほうがいいです。
本書の 第1章のさわり「お試し版」をソシム社のサイトで公開しています。
10.速度 ラズパイ版を3Aに入れました。 マンデルブロ集合をやってみた、SSHで15秒でした。 @40RISCでは8秒でした。
OSが絡むと遅くなります。 でも 早いぞ32bitRISC@24MHz
11. 20ピンの CH32V003F4P6 もお勧めです。
良い点
1)安い・・・@50
2)ピンが多い分だけ、GPIO、ADCが多い
3)SWDIOピンが別にある。
克服する点
4)足のピッチが狭い(0.65mm)のでハンダ付けのスキルアップできる。
5)拡張基盤の幅が広い。 スキニーがほしいです。 立たせればいいけど・・・
6)BASICでの I/O数の拡張は、ソースを見れば判りますが、単純です。フラッシュですので何度でもやり直しはできます。ただし、ROMの残量がSAVE領域を圧迫しますので注意して下さい。
< 私の作った サンプルソフトです >
11.作ってみました Hit and Blowです。
12.発振器 です。TICKの10msecを使って、HとLの長さ、繰り返し数、先出しはHか? を指示すると5ピンに出力します。繰り返しを1にすると ワンショット動作となります。
<その他 >
MiniGameを見つけました その中のPacManです。 書き込みました 動きました。 いい動きしています。インベーダー、テトリスもあります。
上の<イメージ>をクリックすると 動画に飛びます。
下は 書き込み方です。
13.豊四季BASICの作者さんに 感謝いたします。
14.気がかりなこと
AND,ORの論理演算が欲しかったが もう ROMに残は無いです。
SAVEは1KBです、RAMの限界の2KBにしておけばよかった。
以上 ページの先頭に戻ります。