シリーズの最初のビデオでは、設計プログラミング ソフトウェア、Cypress SemiconductorのCY8CKIT-042-BLE開発ボードの仕様、コードを記述せずにピンを駆動してLEDに電力を供給する方法について説明します。
組み込みプログラミングは最も難しいタスクの1つです。実際、いくつかのレベルの知識が必要です。いくつか例を挙げると:
- 型が非常に重要で、メモリセーフではない言語であるCまたはC++。ポインタの拡張使用は初心者を困惑させる可能性があります
- マイクロコントローラのハードウェアとアーキテクチャの理解
- コードを最適化するために、アセンブリ言語をCプログラムに組み込むことができます
- コンパイラのさまざまなレベルの最適化 (速度とスペースのトレードオフ)
幸いなことに、マイクロコントローラのベンダーは、プログラムの記述方法を大幅に簡素化する一連のツール(ヘッダー ファイル、ミドルウェア、GUIプログラミング、ミドルウェア、API… の自動生成)を作成しました。
このチュートリアルの目的は、最初のプロジェクトを作成するために必要な基本的な知識のみを示すことです。このプロジェクトは、物体と近接センサー間の距離に応じて、ステッピング モーターをさまざまな速度で回転させることから構成されます。以下のコンポーネントが使用されます。
- CypressのPSOC 4200 BLE
- STMicroelectronicsのL6474ステッピング モーター ドライバー
- STMicroelectronicsのVL6180x : 近接センサー
プログラムを作成するために、PSOC Creatorは無料のIDEとGUIを統合した優れたツールであり、初心者にとって組み込みプログラミングの世界への最初のステップを簡素化します。
評価ボードは、市場で非常に一般的なARM M0コアを統合したPSOC BLEを搭載したCY8CKIT-BLEです。L6474が選択されたのは、減衰タイミングの自動計算が統合されており、コード サイズが大幅に削減されるためです。最後に、VL6180xは飛行時間技術に基づいており、単純なオン/オフ近接センサーの代わりに距離計算を可能にします。
私たちのプロジェクトには4つの主要なブロックが必要です。
- ピンを駆動する方法
- PWM (パルス幅変調) とタイマーを使用する方法
- 割り込みを処理する方法
- I2CおよびSPIバスで通信する方法
これら4つの基本ブロックを個別に学習した後、最終プロジェクトの準備が整います。
ピンを駆動してLEDのオン/オフを切り替える方法
新しいプログラミング言語を学習する場合、最初のプログラムは常に「hello world」と呼ばれ、この文字列をモニターに表示するだけです。たとえば、そのシンプルさから多くの人に評価されている人気のプログラミング言語であるPythonでは、print "hello world" と1行書くだけで最初のプログラムを作成できます。組み込みプログラミングにおけるhello Worldプログラムに相当するのは、LEDをオンにすることです。
Cypress IDEのプロジェクトには、Cコード用のウィンドウ、マイクロコントローラのピン出力やクロックなどのその他の内部構成を表示するウィンドウ、そして最後にプログラムするコンポーネントを表示する設計/回路図ウィンドウの3つのメイン ウィンドウがあります。 PSOCではコンポーネント間のハードウェア接続が可能なので、プッシュ ボタンの入力に基づいてLEDをオン/オフするのにCコードは必要ありません。 評価ボードには、ポート2のピン6の赤、ポート3のピン6の緑、ポート3のピン7の青に接続されたRGB LEDが付属しています。ポート2のピン7にはプッシュ ボタンもあります。このセクションでは、赤色LEDとプッシュ ボタンを使用します。
最初のプロジェクトを構築してみましょう。コンポーネント カタログから、デジタル出力ピンを回路図ウィンドウにドラッグします。コンポーネントをダブルクリックすると、ピン全体を構成できるGUIがポップアップ表示されます。たとえば、ドライブ モード、初期ドライブ状態、ピンの名前を設定できます。また、プッシュ ボタンが接続されるため、このケースではハードウェア接続を確認する必要があります。[適用] と [OK] をクリックします。
同様に、プッシュ ボタンの場合、抵抗プルアップ ドライブ モードとして構成され、HW接続がチェックされた入力ボタンをドラッグする必要があります。ピン配置ウィンドウで、赤色LEDがポート2ピン6にあるピンとポート2ピン7にある入力スイッチによって駆動されるようにプログラムします。その後、プログラムをビルドできます。2つの新しいフォルダー (REDファイルとSWファイル) が生成されます。それは非常に便利で、コードが自動的に記述されます。
プログラムはマイクロコントローラにフラッシュすることができます。プッシュボタンを押すと赤色のLEDが点灯します。この最初のプロジェクトは、コードを1行も書かずに作成しました。赤色のLEDではなく緑色のLEDをオンにしたい場合は、ピン配置をすばやく変更するだけで済みます。 LEDはファームウェアによって駆動することもできます。赤色LEDを1ヘルツの周波数でオン/オフする基本的なプログラムを記述してみましょう。この2番目のプロジェクトでは、必要なコンポーネントは、強力モードで駆動される出力ピンのみです。ピンはファームウェアによって駆動され、別のコンポーネントによって駆動されないため、HW接続のチェックを外す必要があります。
コンポーネント データシートでは、利用可能なAPIについて説明します。Pin_Write関数は、出力ピンをハイまたはローに駆動するために物理ポートに値を書き込みます。Cメイン プログラムを見てみましょう。ピンの名前はREDなので、関数はRED_Writeです。ピンをローに駆動するには、この関数に0を渡します。LEDがオンになります。CyDelay(500)は500msの遅延を与えます。次に、RED_Write(1)は500msの新しい遅延の前にピンをハイに駆動します。CyDelayは、PSOC作成者によって生成された標準ライブラリの一部です。このプログラムをコンパイルしてマイクロコントローラにフラッシュすると、LEDが1ヘルツで点滅します。