今回は、Padaukマイコンの開発環境を準備して、実際にマイコンに書き込んでみたいと思います。
VisualStudioCodeで開発
PlatformIOをインストールする
Visual Studio Codeを使います。[Terminal]の中の[New Terminal]をクリックしてターミナルを表示させます。
ターミナルに「brew install platformio」と入力しエンターキーを押します。
brew install platformio
自動でPlatformIOがインストールされます。
フォルダを開く
どこかに空のフォルダを作り、そのフォルダを開きます。今回は「blink」とします。
もう一度ターミナルを開きます。
必要なファイルを生成する
ターミナルに
pio project init
と入力しエンターします。すると、先程開いたフォルダーに、必要なファイルやフォルダーが作られます。
platformio.iniを編集
左側のplatformio.iniをクリックして、以下の内容を追加します。追加したら保存します。
[env:development] platform = https://github.com/1500WK1500/platform-padauk.git ; ボードのリポジトリ board = PFS154 ; 使うマイコンの選択 framework = easypdk ; ヘッダーとかを追加
環境をインストール
pio run
ターミナルに「pio run」と入力してエンターします。ソースファイルがないので失敗しますが、これでコンパイル環境がセットアップされます。
ソースファイルを追加
「src」フォルダーのところで右クリックして、[New File]をクリックします。新しいファイルを「main.c」とします。
Lチカのプログラムを書いてみます。以下のようにしました。
#include <pdk/device.h> #include <stdint.h>#define LED_BIT 4 //PA4 6pin #define turnLedOn() PA |= (1 << LED_BIT) #define turnLedOff() PA &= ~(1 << LED_BIT) void main() { PDK_USE_FACTORY_IHRCR_16MHZ(); PDK_SET_SYSCLOCK(SYSCLOCK_IHRC_16MHZ); CLKMD &= ~CLKMD_ENABLE_WATCHDOG; // Disenable WDT PAC |= (1 << LED_BIT); // Set LED pin as output while (1) { turnLedOn(); for( uint32_t i=0 ; i<400000 ; i++) __nop(); turnLedOff(); for( uint32_t i=0 ; i<400000 ; i++) __nop(); } }
PSF154は内蔵クロックのキャリブレーション値が出荷時に書き込まれています。これを使うことで、ほぼ正確な周波数に調整できます。8行目のPDK_USE_FACTORY_IHRCR_16MHZ();がそれです。
9行目のPDK_SET_SYSCLOCK(SYSCLOCK_IHRC_16MHZ);で、クロックを16MHzに設定します。
Padaukマイコンは起動時にウォッチドッグタイマー(WDT)が有効になっています。プログラム中でWDTをクリアしないとマイコンがリセットされてしまいます。今回は不要なので、10行目で無効化しておきます。
PadaukマイコンのIOはデフォルトが入力ピンになっています。12行目でPA4を出力に設定します。
whileのループで、PA4ピンに接続したLEDが約1秒周期に点滅します。
これらのプログラムを書いて保存します。
コンパイル
このプログラムをコンパイルします。ターミナルに「pio run」と入力してエンターします。
pio run
コンパイルが通るとSEUCCESと表示されます。
コンパイル結果のバイナリーファイルやHEXファイルは、隠しフォルダ「.pio」の中の「build」の中の「development」フォルダーに保存されます。
隠しフォルダは、macの場合は、「command」+「shift」+「.」で見えるようになります。
バイナリーファイルをフォルダ直下に自動でコピー
コンパイル結果のバイナリーファイルやHEXファイルは、隠しフォルダの中の深いところに保存されます。
毎回フォルダを開いて探し出すのが面倒なので、フォルダの直下にコピーするようにスクリプトを追加します。
スクリプトを書くためのファイルを作成します。左側の何も無いところで右クリックして、「New File」をクリックします。
ファイル名を「extra_script.py」として、ファイルを作成します。
import shutil import os Import("env") def post_program_action(source, target, env): src = target[0].get_abspath() dest = os.path.join(env["PROJECT_DIR"]) + "/" + os.path.basename(src) print("dest:"+dest) print("source:"+src) shutil.copy(src, dest) env.AddPostAction("$BUILD_DIR/firmware.ihx", post_program_action) env.AddPostAction("$BUILD_DIR/firmware.bin", post_program_action)
上記のように入力し、保存します。
platformio.iniに先ほどのスクリプトが実行されるように追記します。
extra_scripts = post:extra_script.py
以上で設定が完了です。
もう一度コンパイルします。
pio run
コンパイル結果のバイナリーとHEXファイルが、フォルダの直下にコピーされました。
これで、ライターにファイルをコピーすることが簡単になりました。
ここで紹介したプログラムとスクリプトは、上のアイコンをクリックすることでダウンロードできます。
解凍してできたフォルダをVisual Studio codeにドラッグ&ドロップすると、blinkのコードやスクリプトファイルを見ることができます。
プログラムの実行
プログラムの書き込み
コンパイルしてできたHEXファイルを、Padauk書き込み機にドラッグ&ドロップします。
マイコンにプログラムが書き込まれます。
実行
マイコンに電池とLEDをつないで、電池のスイッチを入れます。
点滅しました!!
Padaukマイコンのプログラムが作れるようになりましたよ!
さて次回は
これまでは1つ10セントのフラッシュタイプのマイコンでしたが、次回からはワンタイムタイプで3セントのPMS150Cの書き込みができるように、書き込みプログラムを改良しようと思います。
コメント