レトロ電子工作

電子工作はじめました!
基本的な所からゆっくりゆっくり進めていきます

MSP430 開発 その4・・・CCSで最初のプログラム:Lチカ

2024年11月28日 18時27分48秒 | 電子工作
プログラムを作成する場合のモットー、できるだけ自分でキーボードを叩かない・・・  それには、

 → コピペで前に使ったコードを持ってくる ・・・ もしくは、
 → サンプル・プログラムを探してきて、それを改造する。

これが 一番楽な方法でしょう。 自らキーボードで文字を打ち込む場所は、コメントの部分だけにして、ここだけは時間をかけてでも できるだけ分かりやすい文章にすべき、力を入れるべき所です。
 よって、ハードウェアにおける「Hello world」プログラムともいえる 「LED点滅」=俗にいう「Lチカ」も サンプルプログラムを見つけてきて、実行し 自分では できるだけ文字を打たなくて済むように工夫しましょう。


1) まずは、資料集めから

 MSP430の開発キット LaunchPad : MSP-EXP430G2 のデータシート、ユーザーズマニュアル等、PDFファイルの資料をインターネットから探しまくり、ダウンロードしました。  どのポートにLEDが繋がっていて、どのポートにスイッチが繋がっているのか?分からないことには プログラムの作りようがありません。 入手した簡単な(日本語の)回路図が こちら ↓ 


 ポート1のゼロ・ビット目=P1.0 に 赤のLEDが接続されているのが分かります。 (これが LED1)
 もう1つ、ポート1の6ビット目=P1.6 に 緑のLEDが接続されてます。 (これが LED2) 
両方のLEDとも、Hi = '1' を出力すると、LEDが点灯します。
 そして、ポート1の3ビット=P1.3 に 押しボタンスイッチ(S2)がつながっています。 つまり、ここは入力ポートにしないといけません。
 スイッチを押した時に、Low = '0' が読みだされ、押されていない時はHi = '1' が読みだされます。(プルアップ抵抗がMCUの中にあり、設定で接続することができる)


2)プロジェクトの作成
 新たに、”BuildLED” という名称でプロジェクトを作成しましょう。 今度は最初からちゃんと MCUのターゲットは MSP430G2553 にセットして作成していきます。 (これは一度セットすると、次に変更するまでは同じターゲットのままでいるようで、しばらくは G2553のまま 再入力しなくても良いでしょう)
 CCSを起動し、メインメニュー:Gettting Started画面で 「New Project」を実行、その画面内で ① ターゲットのDevice=MSP430G2553にセット
 ② プロジェクト名を入力 ( 例: blinkLED )
 ③ BASIC Examplesで 「Blink The LED」を クリックしてから、
 ④ [Finish] ボタンを押す。


 すると、 blink.c というファイル名で サンプル・プログラムが入ったファイルが自動で作成されます。 ↓ 

 このサンプルプログラムは、LED1(赤)を 激しく点滅させる(LEDをチカチカさせる)だけのプログラムです。


3)実行してみる
 何ひとつソースの文字を打ち込むことなく、プログラムが完成してしまいました。 F11キーを押して Debugを開始すると、ビルトも自動でやってくれます。 実行コードがLaunchPadに書き込まれ、しばらくすると main()関数の先頭の { カッコの所で 実行が一時停止した状態まで進みます。 (8行目の緑の矢印の所で停止している)
 F8キーで プログラムの続きを 実行させると・・・

 赤いLEDが激しく点滅します。

 上の状態から F5キーで 1行づつ 確認しながら ステップ実行させることもできます。 

 例えば、 10行目 P1DIRに1を書き込むと P1=ポート1のビット0が出力ポートになり、初期状態でHiが出力されます→ LED1がいきなり点灯するのが分かります。
 次に 16行目の P1OUT ^= 0x01; を 実行すると、ビット0の状態が  ^= XOR命令で反転するので LED1は消灯します(=Lowが出力された)

 その後の forループで 変数 i が 1万から1づつ引かれ、ゼロになるまで繰り返され・・・ これでしばらく時間待ちになります。=LEDの点灯or消灯時間。
そして、点灯/消灯を繰り返します。
 どこのタイミングでも良いので F8キーを押すと、ずっと実行されるので(実行開始)LED1 が 点滅したままの状態になります。 このプログラムがMCUに実際に書き込まれたので、次に CCSから実行しなくとも 基板に電源をつなぐだけで、赤いLEDの点滅は実行されたままになります。

 つまり、このLaunchPadはプログラム・ライターとしても機能するということです。




 プログラムの中で volatile という あまり見かけない命令が出てきますが、これが宣言されている 変数は、「最適化」を行わないようにするための指定です。 ここでは 変数i が最適化から外れて、(レジスタ変数では無く)必ずメモリ上の変数がアクセスされます。
つまり、レジスタ変数等に割り振られて超高速に動作し、不要な命令が実行されなくなってしまうのを防ぐことができます。 (時間を待たせるための空ループもちゃんと実行されます)




最新の画像もっと見る

コメントを投稿