AVR IO Library

概要

AVR用のIO定義のライブラリです。
このライブラリをincludeすることにより、H8のようにIOを定義できます。
構造体・共用体・ビットフィールドを利用していますので、bitにも簡単にアクセスが可能です。
現在AVRを使用している方では、「こんなライブラリは邪道だ!」とおっしゃる方もいるかもしれません。
ですが、初心者にもわかりやすくbitにも簡単にアクセスが可能なため製作した次第です。

使用方法

このavr_io.hをincludeする前に、必ずavr/io.hをincludeしておいてください。
ioフォルダ内にある、avr_io.hをincludeしてください。
avr_io.hをincludeすれば、自動的に現在使用しているデバイスに合ったヘッダファイルをincludeしてくれます。
サポートされているデバイスは、avr_io.h内に記述されています。
サポート外のデバイスでincludeした場合は、何も起こりません。
includeディレクトリの追加方法は、MAKE内のAVR LIBRARYのページをご覧ください。

使い方ですが、このライブラリは構造体を使って書かれているため、階層構造のようになっています。
階層構造を簡単に示しますと以下の図のようになります。
IO-LIBRARYの樹形図
@にはポート番号、#にはbit番号が入ります。
これらの階層は構造体なので、「.」をつけてつなげていくことになります。
では実際の使い方をポートBの設定と仮定して説明します。

DDR

まずDDRの設定を行ってみます。
DDRはバイトまたはビットでのアクセスが可能です。
公開初日版では、バイトアクセスのみでしたが、ビットアクセスも可能になりました。
ポートBのDDRに0xF0を代入するとすれば、

PB.DDR.BYTE = 0xF0;

というように代入することができます。
また、ビットごとにも代入してみましょう。
ポートBのDDRのビット0に1を代入したいときは、

PB.DDR.BIT.B0 = 1;

で代入が可能です。

PORT

次にPORTの設定を行いましょう。
PORTもバイトまたはビットでのアクセスが可能です。
ポートBのPORTに0x33を代入するとすれば、

PB.PORT.BYTE = 0x33;

というように代入することができます。
ビットごとにも代入してみましょう。
ポートBのPORTのビット1に1を代入したいときは、

PB.PORT.BIT.B1 = 1;

となるわけです。

PIN

最後にPINレジスタにアクセスしてみましょう。
PINもDDR・PORT同様にバイトまたはビットでのアクセスが可能です。
変数aにポートBのPINを代入するとすれば、

a = PB.PIN.BYTE;

というように代入することができます。
ビットごとにも代入してみましょう。
変数bにポートBのビット2を代入したいときは、

b = PB.PIN.BIT.B2;

のように代入することが可能です。

注意事項

このライブラリはフリーで配布しておりますが、無断で商用利用などへのご使用はお止めください。
このファイルで何らかの問題が生じた場合、私RAINは責任は負いません。自己責任でお願いいたします。
ファイルの著作権はRAINに帰属します。

Download

このライブラリはまだすべてのデバイスで動作試験が行われていません!
私の方で、ATtiny2313・ATtiny45・ATMEGA88・ATMEGA8515・ATMEGA128での動作は確認しています。
まだバグがある可能性がありますので、何か不都合が生じる可能性もあります。
すべては自己責任でお願いします。(デバイスを動作不能にすることはまずないですが。)
このライブラリを使用して、動作確認ができた場合や、
バグが発見された場合はメール又はBLOGへコメントしていただければ幸いです。

avr_io.zip

履歴

[09/03/11] : ATMEGA128でPFのPINレジスタにもアクセス可能になりました
[08/11/01] : DDRをビットでもアクセスを可能にしました
[08/10/31] : 掲載開始

inserted by FC2 system