You are here

AVR-GAME-2Sのプログラミング

IOポート初期化手順

IOの初期化は、基本的にピンの割付表にしたがって行うだけなので、簡単に行えます。

入出力デバイス利用コードサンプル

プログラムの作成条件

  • チップのヒューズは一切変更していません。
  • 動作周波数は、内蔵発信器を利用した1MHzです。
  • AVR Studioのプロジェクト設定で、Frequencyを1000000(1MHz)に設定しています。これにより、F_CPUには、1000000が設定されています。
  • Optimizationには、基本的な最適化を行う-O1を設定しています。これが-O0(最適化なし)だとコードが膨れ上がります。
  • これは必ずしも必要ないのですが、Generate List Fileをオンにして、アセンブラのコードも出力されるようにして、C言語に対応して生成されたアセンブラコードを見て楽しんでいます。 :-)

音の出力

コードのエッセンスですのでいろいろと制約はありますが、内蔵のタイマを効果的に利用すると、こんな簡単なコードで、音を出すことが出来ます。

LEDの点灯

これは簡単ですね。出力のオン・オフを切り替えるだけです。

タクトスイッチの入力

タクトスイッチで音を変えたり消したり、LEDを点けたり消したりするコードです。このような処理では、チャタリングに配慮する必要がないので、簡単な処理を示します。

ドットマトリックスLEDへの描画

ドットマトリックスLEDをクリアしたり点を出力する処理です。

dml_plotの第一引数Xは横軸、第二引数Yは縦軸の座標値です。座標の原点は、ドットマトリックスLEDの左下で、(0, 0)となります。第三引数は、色を指定します。

ドットマトリックスLEDのダイナミック点灯

ドットマトリックスLEDをダイナミック点灯させる処理です。

ドットマトリックスLEDのデータを、シフトレジスタに出力していきます。

全部まとめて

AVR-GAME-2Sの入出力機能は、これで全てつかえるようになりました。

これらをまとめて、ドットマトリックスLED上で、点を走らせて見ましょう。

このプログラムは、mainのforループで、_delay_ms(1)を利用して、1ms無駄に捨てては、本命の処理をささっとして。。。という処理を繰り返して、プロセッサのほとんどの時間を捨てているのでちょっともったいないですが。。。全ての性能を使い切るとどれほどの処理が出来るのかどきどきしますね。

これだけの処理で、まだ930バイトのフラッシュと、20バイトのSRAMしか使っていません。まだまだメモリはたくさん使えますので、ゲームでも何でもドンドン書けそうですね。

まずは、これだけのコードがあれば、AVRチップのことをあまり知らなくても、C言語でいろいろなことを試すことが出来ます。また、AVRチップの勉強をすれば、生のハードウェアをどんどんたたいて、さらにいろいろな可能性を試すことが出来ますね。

この赤く小さな基板の上に、皆さんのアイディアを形にしていってください。

タイマ割り込みを利用したモニター機能などは、また別の機会に。。。。

AVR-GAME-2Sのご購入はこちら

開発ソフト: 
チップファミリー: 
MCUチップ: