前回、Googleの生成AI、Gemini様に「Arduino UNO R3で1ms毎にタイマで割り込みをするプログラムを書いて」とお願いしたところ、一発完動のプログラムを3案中2案で作成いただけました。今回、プロンプトに入力した文字列のうち「3」を「4」と一文字差し替えて再度お願い。UNO R4ではどうでっしゃろ?
※Google様の生成AI、Gemini(無料プランだけれども)を使ってソフトをコーディングしてもらっています。
Arduino UNO R3とR4
Arduinoは「電子工作業界」定番の小型開発ボードです。起源はイタリア。Arduinoの名をいただくボードは数あれど、その中でUNOと名乗るボードこそが業界標準的な位置づけになってます。そのUNOのバージョンは長らくR3でこれが標準機種としての位置づけだったのですが、昨年登場した新機種がUNO R4です。Arduino UNO R3とR4が並んでいるところを冒頭の画像に掲げました。緑色っぽい基板の方がR3、青色っぽい基板がR4(の中のMINIMAという機種、WiFi非搭載)です。基板サイズ的には同一、IO端子配列もほぼほぼ同一、USBコネクタだけが異なってます。ソフトウエア的にもArduinoの「標準」APIを使っている限りにおいては非常に互換性が高いです。しかし、搭載マイコンについては大きく異なります。
-
- R3、MicroChip社(に買収されたAtmel)製のAVRマイコン搭載。
- R4、Renesas製RA4(Armコア登載)マイコン搭載。
異なるマイコンを搭載しているので、「ハードに触れないとすまないところ」は異なります。そこで前回のGemini様への問いかけは以下のようにしました。
「Arduino UNO R3で1ms毎にタイマで割り込みをするプログラムを書いて」
タイマ割り込みの使用。どうしても割り込みハンドラやタイマレジスタへの直接アクセスなど、ハードに「密着した」記述が必須となります。しかし、Gemini様は何でもご存じ。前回、回答いただいた3案のうち2案はコンパイル後そのままArduino UNO R3の実機上で実行可能なプログラムでした。
そこで今回は一文字変えて
「Arduino UNO R4で1ms毎にタイマで割り込みをするプログラムを書いて」
とお願いしてみました。R3は長年標準機種であったので、Web上でも情報の蓄積が凄まじいです。一方、R4は最近出たばかりなので、まだまだという感じ。Google Gemini様は「割と新しい情報」も含んでいるとかいないとか。R4ではどうかというのが今回のプロンプトへの問いかけの背景っす。
結果
ざっくり言って結果はダメダメでした。Gemini様の回答には以下のようにしっかり「Arduino UNO R4」と書かれておるのですが、生成されたコードは3つの案ともAVRマイコン搭載のUNO R3用の割り込み対応に見えました。
念のため、生成ソースをArduino IDE上にコピペし、ターゲット機をArduino UNO R4に向けてコンパイルを試みましたが、全てダメでした。
まだR4の情報収集は十分になされてないのかも知れんね。。。
なお、以下のページにArduino UNO R4のタイマを使うソースが解説されとります。あざーす。
Under the Hood: Arduino UNO R4 – Timers
上記ページに掲げられていたサンプルプログラム(UARTの通信速度を9600bpsに落とした部分のみ変更)をArduino IDEでビルドして実機UNO R4に書き込んだ結果が以下です。毎秒8000回割り込みとしたタイマの割り込みを割り込みハンドラでカウントして周波数を求めるもの。
まあ、Gemini様もまだ勉強が足らないところはある、と。ホントか?