Arduino勉強会

2021/05/01からのアクセス回数 361

Arduino UNOのスケッチのソース・デバッグ

Arduino UNOを使い始めて10年あまりが立ちますが、ずっと不思議に思ってことにArduinoのスケッチをソースレベルでデバッグする方法を紹介した記事がないことです。

Arduinoに使われているATmega328P単体ならATMEL Studio(現 Microchip Studio)を使ってC言語のソースデバッグの記事は見かけられますが、 Arduinoとなるとほとんどヒットしません。 また、AVR Studioでソースレベルのデバッグをするには、AVR Dragon(7,350円)やAtmel-ICE(11,000円)と高価なツールが必要でした。

AVR-DRAGON.png

安価なデバッグツールMPLAB Snapの登場

トランジスタ技術2021年4月号では、基板レベルではありますが安価なMPLAB Snap(2,850円)を使ったデバッグ方法が紹介されました。

MPLAB-Snap.png

MPLAB Snapの改造

Microchip StudioでMPLAB Snapを使用するには、少しの準備(改造)が必要です。

  • プルダウン抵抗R48の取り外し
  • Firmwareの更新

技術2021年4月号の写真2(43p)は、少し古いモデルみたいで、私が秋月から購入したものはR48の位置が少し異なっていました。 隙間が狭くピンセットが入らなかったので、チップ抵抗にコテを当てた後ドライバーでずらして、取り外しました。

R48-Remove.png

MPLAB SnapのFirmwareの更新には、Windows版のMPLABX IDEが必要です(Mac版では更新できませんでした)。

MPLABX IDEは以下のサイトからMPLABX-v5.45-windows-installer.exeをダウンロードしました。

MPBLAX IDEでATmega328Pのプロジェクトを作成し、MPLAB Snapを接続すると更新できました(すみません画像を取りそこねました)。

更新前のバージョンは

```
Connecting to MPLAB Snap...

Currently loaded versions:
Application version............00.00.17
Boot version...................01.00.00
Script version.................00.04.07
Script build number............59586f4647
Tool pack version .............1.3.305
```

アップグレード後のバージョンは以下のように出力されました。

```
Connecting to MPLAB Snap...

Currently loaded versions:
Application version............00.04.18
Boot version...................01.00.00
Script version.................00.04.07
Script build number............59586f4647
Tool pack version .............1.3.305
```

Arduino UNOでデバッグツールが動かない理由

Arduino UNOでデバッグツールが動かない理由が以下のサイトに説明されています。

Arduino UNOの公式サイトから回路図の一部を引用します。

RESET-R-C.png

Arduino IDEでスケッチをArduinoにアップロードした後に、Arduinoをリセットする必要があります。 このリセット信号は瞬間的にLOWになるパルスが必要ですが、シリアルの通信でそのような制御はできません。 そこで、CTSをLOWにしたあとC4とRN10のCR回路でリセット信号を作っています。

Arduino IDEにとっては便利なCR回路ですが、これがデバッグツールの制御に悪影響を与え、デバッグできなかったのです。

シリアルのリセット信号のカット

Arduino UNOの互換器では、CR回路がボードに直付けになっており、切り離すことができません。

しかし、秋月電子から発売されている

a href="https://akizukidenshi.com/catalog/g/gP-04399/">ATMEGA168/328用マイコンボード(I/Oボード)通販コード:P-04399</a> を使うとシリアルとの接続(TX, RX, RST)をジャンパーで選択することができます。

AE-ATmega.png

## ArduinoスケッチをMicrochip Studioでデバッグ 残念ながら、Microchip Studioは、Windows版のみが提供されており、MacのVirtualBoxでは動作しませんでした(Paralles, VMwareでは動作が確認されているみたいです)。

Microchip Studioのインストール

Microchip Studio for AVR and SAM Devices 7.0.2542のオフラインインストーラを以下のURLからダウンロードします。

Arduino UNOとMBLAB Snapとの接続

Arduino UNOとMBLAB Snapとの結線は、トランジスタ技術2021年4月号の図8から引用します。

Fig-8.png

結線を整理すると以下のようになります。

MPLAB SnapArduiono ISPピン
2: VDD2: VCC
3: GND6: GND
4: DAT1: MISO
5: CLK3: SCK
6: AUX5: /RESET
7: TDI4: MOSI

自由に切り離せるメス・押すのピンケーブルを使って以下のようにテープでまとめました。

AVR-Cable.png

Arduinoスケッチのインポート

Microchip StudioにArduinoスケッチをインポートする手順は、以下の動画に紹介されています。

手順としては、以下の通りです。

  • File > New > Project...を選択
  • プロジェクトの作成ディレクトリを指定
  • インポートするスケッチとボード、デバイスを選択

Arduinoプロジェクトの作成画面では、「Create project from Arduino sketch」を選択し、プロジェクト名称、作成ディレクトリを入力して、OKボタンを押下します。

NewArduinoProj.png

インポートするArduinoのスケッチを指定し、ボードのタイプ、CPUデバイスをセットしてOKボタンを押下します。 必要なライブラリも合わせてインポートされ、Microchip Stduioのプロジェクト画面が表示されます。

BlinkProj.png

デバッグの手順

Arduinoスケッチをデバッグするときに注意が必要なことにヒューズ・ビットの切り替えです。 ATmega328Pのデバッグには、ISPインタフェースからdebugWIREインタフェースに切り替えるために、 ヒューズ・ビットを書き換える必要があります。

Arduino(ATMEGA168/328用ボード)のジャンパを外して電源をオンにし、MPLAB Snapを接続してください。

Arduino-Snap.png

以下の手順でデバッグを開始します。

  • Debug > 「プロジェクト名」 Properties...を選択し、debugger/programmerでMPLAB Snapを選択、InterfaceでdebugWIREを選択

Project-properties.png

  • Debug > Start Debugging and Break(Alt+F5)を選択
  • ボードでの最初のデバッグの場合、"Failed to launch debug session with debugWIRE"の警告メッセージがでますので、YESボタンを押下

Failed-to-launch debug-session.png

  • 「debugWIRE is enabled」情報メッセージができますので、Arduinoの電源を入れ直し後、OKボタンを押下してください。

debugWIRE-is-enabled.png

  • main関数で停止 Start Debugging and Break(Alt+F5)でデバッグを開始するとmain関数の先頭で停止します。

この後は、Step Over(ステップ実行)、Step Into(関数内に入る)、Step Out (関数を抜ける)、Continue(続ける)等の デバッグコマンドが使用でき、Autos画面では変数の値が確認できます。

stop-at-main.png

ブレークポイントをセットしておけば、Continueボタンを押下した時にブレークポイントで停止します。

break-at.png

Launch Failedが出たとき

Launch Failedが出たときには、ターゲットボードの電源またはケーブルの配線をチェックしてください。

Failed-to-enable-DW.png

デバッグ完了時

デバッグを完了したら、必ずISPモードに戻してください。 debugWIREモードからISPモードに戻すには、デバッグの最後に

  • Debug > Disable debugWIRE and Closeを選択してください。

コメント

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


添付ファイル: fileAE-ATmega.png 89件 [詳細] fileArduino-Snap.png 84件 [詳細] filestop-at-main.png 86件 [詳細] fileRESET-R-C.png 94件 [詳細] fileR48-Remove.png 93件 [詳細] fileProject-properties.png 92件 [詳細] fileNewArduinoProj.png 80件 [詳細] fileMPLAB-Snap.png 89件 [詳細] fileImport-Scketch.png 53件 [詳細] fileFig-8.png 92件 [詳細] fileFailed-to-launch-program.png 48件 [詳細] fileFailed-to-launch debug-session.png 84件 [詳細] fileFailed-to-enable-DW.png 88件 [詳細] filedebugWIRE-is-enabled.png 85件 [詳細] filebreak-at.png 84件 [詳細] fileBlinkProj.png 83件 [詳細] fileAVR-DRAGON.png 83件 [詳細] fileAVR-Cable.png 84件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-01 (土) 20:04:25 (167d)
SmartDoc