教育:教室で使用するマイクロコントローラの選択

APDahlen Applications Engineer

最近、教育関係者からいくつかの要望を受けました。彼らは、教室に最適なマイクロコントローラを選択するためのガイダンスを求めています。

低コストで高性能のオプションが数多くあるため、これは簡単な質問ではありません。まず、8051、MSP430、Z8、AVR、PICなどの古典的な8ビットマイクロコントローラがあります。また、ARMやその他の32ビット製品などの最新のダイナモが多数のメーカーから提供されています。また、システムオンチップ(SoC)およびフィールドプログラマブルゲートアレイ(FPGA)のオプションもあります。これらの高度なマイクロコントローラオプションは、柔軟なアナログおよび高速並列デジタル処理機能を提供します。

どこからはじめるか?

単一の完璧なマイクロコントローラは存在しないことを認識する必要があります。その代わりに、設計者が特定の設計に合わせて最適化できるさまざまなマイクロコントローラが存在します。単一の完璧なマイクロコントローラは存在しないため、教室用に適した単一のマイクロコントローラがあると考えない方がよいでしょう。

教室で使用するマイクロコントローラについて、私の経験と意見をお話しさせてください。DigiKeyチームに参加する前は、全くの初心者から電気工学のキャップストーンクラス(学外の優秀な学生も参加している実践的課題解決を履修する正課科目)にいたるまで、実際にさまざまな学生に、さまざまなマイクロコントローラを使って授業をしてきました。私は最も経験豊富な教授とは程遠いですが、本稿の中には珠玉の情報があるかもしれません

本稿の内容は、1学期および2学期のマイクロコントローラの授業向けで、上級の高校生、技術や電気工学の課程を始める大学生に適した知識です。プログラムすることと、実際にマイクロコントローラを外部回路に接続してプロトタイプを作成し、動作確認する必要性とのバランスを取ることを試みます。

プログラミングの基礎

教育者が最初に取り組まなければならない問題の1つは、生徒のプログラミングスキルです。マイクロコントローラの可能性を引き出すには、型、分岐、ループ、関数などの概念を素早く習得する必要があります。

  • 困難な方法: ハードウェアをマイクロコントローラに接続して、プログラミング、周辺回路の操作、レジスタのデータシート記述の解釈を同時に教えようとします。

  • 簡単な方法: あなたの大学の授業にまだプログラミング入門のクラスがないと仮定すると、選択肢は2つあります。まず、GDB online Debuggerなどのオンラインツールを使ってCプログラミングに焦点を当て、マイクロコントローラ以外の授業に1ヶ月費やすことです。もう1つの方法は、Arduinoコミュニティを活用することです。3色LEDや圧電ブザーなどのシンプルなハードウェアを使って、分岐、ループ、関数を探求します。

技術的なヒント: Arduinoという言葉には複数の側面があります。1つは、ホームページArduino - Homeにある会社そのものに焦点を当てる見方です。もう1つの見方は、Arduinoが大規模で活発なコミュニティを持つオープンソースプラットフォームであるということです。これは、すべての学生が活用すべき貴重なリソースです。

同時に、Arduinoにまつわる教育上の矛盾も認識する必要があります。Arduinoはプログラミングを簡単にするように設計されていますが、単純なプログラムではありません。例えば、「単純な」digitalWrite( )関数を考えてみましょう。この関数をすべてのArduinoファミリにわたってシームレスに統合するためのArduinoコードは、単純なものではないことがわかるでしょう。

ブレッドボードに適したデバイス

電気技術や電気工学の授業を想定すると、学生はブレッドボードで回路を作ることを想定しているはずです。これは、マイクロコントローラの目的を理解し、以前習った電子工学の講義内容を強化するのに役立ちます。

ブレッドボードに関しては、次のような実装可能な形状のものがいくつかあります。

  • デュアルインラインパッケージ(DIP)マイクロコントローラ:マイクロコントローラの大部分は面実装で製造されています。1つの例外は、DIPパッケージのマイクロコントローラを生産し続けているMicrochipです。

  • 面実装デバイス(SMD)からDIPアダプタへ:ほとんどの低コストのマイクロコントローラをブレッドボードで使用できるアダプタ ボードが利用可能です。

  • ブレッドボードに適したデバイス:ターゲットのマイクロコントローラとプログラマ、さらにはインサーキットデバッガを備えたマイクロコントローラ評価ボードが多数あります。代表的な例には、Silicon LabのBusy Bee、STMicroelectronicsのNucleo、MicrochipのCuriosity Nano、ArduinoのNanoシリーズなどがあります。また、マイクロコントローラ開発キットをブレッドボードと接続できるようにする、シールド、ハット、ケープ、またはその他の名前で呼ばれている拡張ボードも多数あります。

低電圧化の傾向に追従し、将来の柔軟性を高めるために3.3V DCコンポーネントに焦点を当てることをお勧めします。

推奨オプション: MicrochipのPICとAVRが際立っています。これらの製品のほとんどは、8ピン、14ピン、20ピン、28ピン、40ピンのDIP形状で入手可能です。

技術的なヒント:多くのユニークなSMDパッケージがあり、フットプリントはますます小さくなる傾向にあります。大型のSMDデバイスの中には、SOICのオプションもよく見かけます。下図のSOIC-16のようなアダプタもあります。これらのデバイスは、技術や工学クラスの1年生のはんだ付けスキルの範囲内ではんだ付け可能です。スクラップPCBで少し練習すれば、ホットエアや従来の小型はんだごてを使ってSOICをはんだ付けできるようになります。

デバッグのテクニック

プログラムを迅速にデバッグする能力を身に付けなければなりません。デバッグの対象には、コンパイルエラーとランタイムエラーがあります。 ほとんどのIDE(統合開発環境)は、コードの疑わしい行を表示するツールを使用して、コンパイル エラーに対する優れたサポートを提供しています。 しかし、実行時エラーにはそのようなサポートはありません。

中級者向けには次のデバッグ手法があります。

  • ブレークポイントとウォッチポイント:サポートされている場合、これらのツールにより、プログラマはマイクロコントローラの内部を「見て」、変数やマイクロコントローラの周辺回路に関連するレジスタを調べたり、さらには変更したりすることができます。

  • I/Oピン:外部LEDやオシロスコープでデューティサイクルを見るような簡単なものでいいです。より複雑な例では、マルチビットロジックアナライザを使用することもできます。

  • printステートメント:この単純な手法により、プログラマはシリアルモニタまたはシリアルグラフディスプレイに値を表示できます。これは強力な手法ではありますが、マイクロコントローラのリソースを消費し、高速処理のタイミングを妨げる可能性があります。

  • シミュレーション:利用可能な場合、ツールはブレークポイントやウォッチポイントと同様の情報を提供できます。

学生は、デバッグ技術の習得とその活用に多くの時間を費やすことになります。教育者として、生徒の学習をサポートするために連携するマイクロコントローラ、IDE、関連するデバッグツールを選択することが重要です。あらゆることを考慮すると、ブレークポイントとウォッチウィンドウはこのプロセスに不可欠な要素だと言えるでしょう。

まだ検討していない場合は、Jay Carlson氏のEvaluating the $1 Microcontrollerの成果を検討する良い機会です。この文書では、教育環境に適したさまざまな低コストのマイクロコントローラについて詳しく説明しています。並べて比較することで、マイクロコントローラとそれをサポートするインフラストラクチャのさまざまな側面が調査でき、マイクロコントローラのエコシステム全体の総合的な理解につながります。

推奨オプション: 低コストのインサーキットデバッガをサポートする任意のプラットフォーム。 Carlson氏の提案と私自身の経験に基づくと、Silicon Labs 8051や小型のPIC16ファミリメンバを含む8ビットマイクロコントローラに傾いてます。ATtinyは、新しいMPLABサポートの候補でもあります。

周辺回路のロック解除

グラフィカルな周辺回路設定ツールは、プログラマのワークフローの重要な一部です。今日、ほとんどすべての統合開発環境(IDE)は、これらの自動化ツールを備えています。それには十分な理由があります。マイクロコントローラ周辺回路のサイズと複雑さが急増するにつれて、関連するデータシートのサイズと複雑さも増しています。

教育者として、私たちは一歩下がって、これらのツールが適切かどうかを問う必要があります。最新の200MHz 32ビットARMにフォーカスする必要性、構成ツールを使用するのが業界標準の実践であるという正論があります。しかしながら、根本的な原理を生徒に教えること、つまり、周辺構成に関連する基礎と思考プロセスを教えるという、より説得力のある議論もあります。

実践を原則から切り離すことが重要です。

経験豊富なマイクロコントローラのプログラマの行動と、彼らがどのように考え、そもそもどのようにして経験豊富なプロフェッショナルになったのかという根本的な基盤を混同しないようにしてください。自動化ツールが予期しないアクションを実行したら、学生はデータシートを見つけて解釈できなければなりません。

そうは言っても、選択プロセスではデータシートのページの長さを考慮することをお勧めします。 ページの長さは、マイクロコントローラの周辺回路の複雑さと直接相関しています。100ページの制限を設定したいのですが、そうするとほとんどすべての最新のマイクロコントローラが使用できなくなります。 ページ長は300のほうが相応しく、 初心者にとって合理的だが扱いやすい周辺回路のセットが提供されます。

学生がリソースを使い果たしてしまうだろう、という妥当な批評があります。そうですね。実際、学生はメモリやI/Oピンが不足するかもしれません。けれども、デバイスの最適化を学習する良い機会になるかもしれません。生徒はプログラムのサイズを最小限に抑えるために具体的な整数計算の学習ができます。LCDドライバピンのニブルが4 x 4プッシュボタンマトリックスの列セレクタとして使用される場合と同様に、PINの多重化を検討できます。I/Oを拡張するための私の個人的なお気に入りの解決法もあります。 ダブルバッファリングされたSN74HC595Nは、シリアル動作の入門に最適です。MCP23017-E/SPは、皆さんの研究に加わるもう1つの頼りになる製品です。この I^2C デバイスを使うことによって、I/Oピンの方向の概念を強化しながら、シリアル通信について学べます。

推奨オプション: 小さくてシンプルな方が良いです。依然として8051、PIC16、およびATtinyを推奨します。

割り込みサービスルーチン、スタック、コンテキスト保存、スリープ

割り込みサービスルーチン(ISR)と関連するハードウェアおよびプログラミング技術は、マイクロコントローラのプログラミングの最も重要な側面です。 これらはマイクロコントローラを定義し、効率的なリアルタイム処理の鍵となります。 これを正しく理解すれば、学生はリアルタイムオペレーティングシステム(RTOS)やダイレクトメモリ アクセス(DMA)などの高度な周辺機器などのより高いレベルの概念に進む準備が整います。 残念ながら、これらの抽象的な概念は複雑で、初心者にとってはすぐにはわかりません。 複雑さはマイクロコントローラの構成オプションと関係があると言えます。

RTOSについて考えてみましょう。これは、研究する価値のある強力なマイクロコントローラベースのプログラミングツールです。RTOSについての有意義な議論には、コンテキストスイッチングとタイマの概念が含まれます。単純化したアプローチでは、RTOSを一定の間隔でタスクを切り替えるマイクロコントローラのソフトウェアと見なします。その結果、マイクロコントローラはタスクを同時に実行しているように見えます。RTOSは、各要素が何を、いつ、どのように動作するかを定義する非常に慎重に設計されたプロトコルによって、コンテキストスイッチングと調整のバックグラウンドタスクを処理します。

先ほど、単一の完璧なマイクロコントローラは存在しないと述べました。代わりに、特定の製品の設計を最適化するようにマイクロコントローラが選択されます。ほとんどの製品では、マルチタスク機能などのRTOSが必要ですが、RTOSに関連するオーバーヘッドは必要ありませんし、望んでいません。この問題の解決策はマイクロコントローラ自体と同じくらい古くからあり、ISRの形で提供されます。

ISRにより、マイクロコントローラはフォアグラウンドとバックグラウンドのスケジューラを使用して動作できるようになります。フォアグラウンドはISRであり、バックグラウンドはmain()の内容です。簡単な例としては、4セグメントのデジタル時計ディスプレイなど、マルチセグメントの7セグメントディスプレイ(SSD)のマルチプレクサがあります。main()内のプログラムは、表示される値を計算することができます。次に、タイマベースのISRを使用して、特定のセグメントをアクティブにします。バックグラウンドでは、マイクロコントローラはほとんどの時間スリープしている可能性があります。その間、ISRは表示を継続するために各SSDセグメントを忠実に更新します。

学生の最初の課題に適した他のISRの例には、次のものがあります。

  • 比較的正確な時間遅延を生成するノンブロッキングタイマ

  • 高速矩形エンコーダを読み取り、定期的にシリアルモニタまたはシリアルグラファに位置を通知します。

  • 周波数測定

  • パルス幅測定

  • 曲を演奏します(1つのタイマで音符を、もう1つのタイマで音符の長さを指定します)。

  • 決定的タイミングを持つ比例または比例微分コントローラ(PD制御)

これらの古典的なISRベースのアイデアはどれも単純なものではありません。トラブルシューティングの課題は言うまでもなく、フォアグラウンドプロセスとバックグラウンドプロセスの間でマルチバイト情報を転送することに関連する重大な課題があります。学生はフラグやメールボックスなどのソリューションを学ぶにつれて、RTOSに関連するセマフォやロックなどの概念を理解できるようになります。

これに関連しますが、授業時間は貴重なリソースです。肝心な授業が周りの雑音で集中できない、なんてことがないように私たちはあらゆる努力をすべきです。最良の方法の1つは、比較的シンプルなマイクロコントローラを選択することです。機能セットと対応するデータシートが少ないため、学生は実装の詳細をすぐに把握できます。アイデアに関連するさまざまな構成オプションを検討するために何十ページものページを苦労して読む必要はありません。目的は、アイデアを明確にし、実用的なソリューションを実装することで学習することです。

推奨オプション: 小さくてシンプルな方が良いです。さて、私は6ピンPIC10にまで戻るつもりはありません。むしろ、より単純なPIC16ファミリ、8051、またはATtinyが適切な場合があります。

技術的なヒント: このセクションを終える前に、8051について詳しく見てみましょう。私の意見では、8051にはコンテキストスイッチングのための最も洗練されたソリューションの1つが備わっています。PICには単一の作業レジスタ(W)があり、AVRにはALUに密接に関連付けられた32個の8ビットレジスタがあることを思い出してください。8051にも32個の8ビットレジスタがありますが、一度にアクセスできるのは8個のレジスタのみです。2つのバンク選択ビットにより、どのオクテットが使用可能かが決まります。これにより、プログラマはシングルサイクル命令でさまざまなタスク間でコンテキストを切り替えることができます。このスマートなソリューションは、フォアグランドとバックグランドの処理などの状況に有利です。

コスト

最近の世界情勢により、多くの大学で電子工学実験の実施方法が変わりました。オンラインまたはハイブリッド授業が標準です。多くの場合、学生は独自のコンポーネントとテスト機器を購入する必要があります。したがって、マイクロコントローラだけでなく、サポートするハードウェアのコストも慎重に検討する必要があります。

これらの小型PCBの多くはプログラマを備えており、一部には統合されたインサーキットデバッガが備えられているため、評価キットは確かに先を行っています。前述したNucleo、Curiosity、Busy Beeなどが代表例です。これらは使いやすいですが、1回限りの製品です。

代わりに、学生はフル機能の外部デバッガを購入することもできます。 評価ボード2~3枚分のおおよそのコストで、デバッガと予備のマイクロコントローラをいくつか購入できます。 例としては、SiLabsの「USB Debug Adapter」やMPLAB SNAPなどがあります。どちらのデバイスも同様のコストと機能を備えています。Microchipの製品には、PICデバイスとAVRデバイスの両方をプログラムできるという利点があるかもしれません。

教育の観点から見ると、マイクロコントローラをデバッガに物理的に直接接続する学生に対して伝えたいことがあります。デバッガを使用することにより、関連するプログラミングI/Oピンが他のデバイスとどのように共有されるのか、または共有されないのかをより深く理解できるようになります。これは、マイクロコントローラへの電力供給にも適用されます。学んだ知識を総合すると、学生はマイクロコントローラ、デバッガ用のヘッダ、および適切な電源を備えたPCBをスクラッチビルド(ゼロから自作)できるようになります。

推奨オプション: 変更はありません。依然として小型のPIC16ファミリ、8051、およびATtinyに偏っています。

技術的なヒント:Attinyの一部は、プログラマにArduinoを使用してプログラムできます。これはコストの観点からは望ましいことですが、システムにはインサーキットデバッグ機能がありません。

テキストとフォーラムのリソース

本稿は、8051および小型のPICおよびAVRファミリのマイクロコントローラの使用をサポートします。これらのデバイスは新しいものではありません。8051とその派生製品は1980年に遡り、PICは1976年に遡ります。AVRは比較的新しい製品で1996年です。おそらく、これらのデバイスはあなたの生まれる前からあり、ほぼ間違いなくあなたの生徒が生まれる前からあるものでしょう。これはこの状況をどう見るかによって良いニュースにもなりますし、悪いニュースにもなります。

まず、これらの8ビットマイクロコントローラが極めて長寿であることを認識する必要があります。これらは何十年にもわたって私たちと共にあり、そしておそらくこれからも共にあるでしょう。これは、それらが依然として関連性があり、研究する価値があると言い換えることができます。8051について考えてみましょう。Keilプロセッサのサポート対象デバイスのページにアクセスすると、いつも感銘を受けます。Keilがサポートするチップのリストは、List of Chips Supported by Keilで見ることができます。8051派生製品のリストは、新しく到着するたびに太字のNew! が表示されて増えていきます。

次に、何十年にもわたって豊富な関連資料が生成されてきたことを認識する必要があります。その多くは今日の8ビット製品にも当てはまります。20年以上活動しているAVRFreaksなど、さまざまなフォーラムがあります。関連フォーラムの短いリストを次に示します。

悪いニュースがあります。その一部は、実践と原則を分離するという問題に起因しています。

マイクロコントローラ教育のソリューションが、古いアーキテクチャと制限された機能しか無い50年前の部品にあると言うにはリスクがあります。この議論には説得力があると信じたいのですが、一般的な解決策ではありません。むしろ、Arduinoなどのプラットフォームや、32ビットARM、RTOS、Pythonなどの高性能ソリューションに大きな注目が集まっていると思います。このため、教科書選びは非常に困難になります。しかし、ちょっと検索してみると、出版日が10~20年前であっても、多くは利用可能なことがわかります。

リソースの1つであるMicrochip Universityのように、メーカーによってテキストの入手可能性が緩和されることがよくあります。さまざまな技術フォーラムについてはすでに述べました。動画もありますし、多くは知識豊富な教授による高品質の作品です。そして、学生が注意深く、真剣に学習に取り組んでいるのであれば、AIは有用なツールとなり得ます。

最後に

本稿の最後にお願いがあります。ぜひ、このトピックについてあなたの考えを共有してください。50年近く前のマイクロコントローラのアーキテクチャが、高度なトピックの基礎であることに同意しますか?ハンズオン、プロトタイピングのバランスは適切ですか?もっと良い方法はありますか?私たちは何を見落としてきたのでしょうか?

幸運をお祈りしています。

APDahlen




Kristof_2649 DigiKey Employee

学生レベルでは、現在の状況を考えると、デバッガを別途購入することはあまりお勧めできません。

TI LaunchpadSTMicro NucleoMicrochipのATMEGA328P XPLAINED MINIのようなエントリレベルのプラットフォームには、デバッガが内蔵されており、どこかのレストランでディナーを食べる値段よりも安いです。




APDahlen Applications Engineer

こんにちは @Kristof_2649

はい、ほとんどのメーカーはブレッドボードに適した開発ボードを提供しています。CuriosityやNucleoなどのデバイスは確かに便利で使いやすいです。

外部デバッガの価格は、開発ボードのコストに比べればそれほど高くありません。また、マイクロコントローラを2~3個以上使用する場合には、良い投資となる可能性があります。

餅は餅屋

私は最近、独自のPCBを構築している人と話をしました。プログラミングヘッダを統合し、I/Oピンを多重化することは、特にプロジェクトのコストを最適化したい場合に、学んでいると有益なスキルです。 外部デバッガを使用することで強化されるスキルとなります。

よろしく

Aaron




オリジナル・ソース(English)

1 Like