dsPIC/PIC24ライブラリ
- 2009-02-28 初版
- 2010-09-15 第2版
■ソフトウェア解説の必要性
トランジスタ技術2007年9月号の特集記事執筆から1年以上経ちました。
新風を吹き込み、大きな反響をもたらしたと思いますが、時間の経過とともに、
ソフトウェア、特にライブラリ(関数の集まり)の汎用化(隠蔽)と解説が重要と感じています。
dsPIC/PIC24はハードウェアとソフトウェアの両面を理解してその能力を発揮させることができます。
なかなかソフトウェアに特化した解説を見かけません。
そこでソフトウェア、特にC言語に特化して解説をしていきたいと思います。
ここで紹介する、汎用化したライブラリはきっとみなさんのお役に立つものと思います。
■プログラムの本質
さてdsPIC/PIC24用にプリミティブな(原始的な)ライブラリは Microchip 社から提供されていますが、
実用レベルで使い回しの効く、真の意味でのライブラリが整っていません。
ライブラリは使い回してこそ価値があります。つまり再利用できるかが重要です。
例えば、dsPICではコンフィグレーションの設定など、さまざまな細かい手続きが必要で
(これをプログラマーの世界では通称「おまじない」と呼びます)、
なかなか本来やりたいことにたどり着きません。たくさんの「おまじない」を記述しなければなりません。
つまりプログラムの本質的ではないところに時間と労力を費やすことになります。
ここで提唱する汎用化方式と従来方式を比較してみましょう。
従来方式 | 汎用化方式 |
| |
どちらの方式がプログラムとして読みやすく、再利用しやすいかは一目瞭然です。
些細な違いではありますが、後々大きな差になります。
■プログラムの生産性向上
従来のままではプログラムの生産性が上がらず、非常に不便であり、初心者の方にも障壁が高く
dsPIC/PIC24の普及につながりません。
C言語の基本構造は関数の集まりです。
ちょうど積み木のように機能をブロック化して積み重ねていくことで、複雑な処理も簡単に
プログラムしていくことができます。main関数を中心にした関数の組み合わせで構成されています。
関数という単位で分割統治することにより、管理しやすくします。
問題の修正や改良は関数単位で行えばよく、インターフェース(引数、戻り値)のみ気をつけておけば他に気をとられることはありません。
その関数の閉じた世界で考えればよく、集中することができます。
そしてある目的を持った関数の集合をライブラリと呼びます。
C言語は先人の知恵をライブラリという形で使い回すことで開発効率を飛躍的に向上させることができます。
つまりC言語はより使いやすいように関数を汎用化することで、下層の複雑な手続きを隠蔽することができます。
おまじないを隠蔽することで、本質的ではないことから大幅に解放されます。
■汎用化
dsPIC30F2012に特化した部分もありますが、PIC24, dsPIC33などでも利用できるように汎用化を目指します。
例えそのまま利用できないにしても、ライブラリを少し修正すれば有効活用できるはずです。
掲載方針としてはいきなりすべてを解説することは時間的に無理ですので、徐々にライブラリを追加していくこととします。
動作確認は以下のバージョンで行います(C30のバージョンによってバグが異なるためです)。
- MPLAB IDE 8.10
- MPLAB C30 3.11
- トランジスタ技術2007年8月号付録、dsPIC30F2012モジュール
- トランジスタ技術2007年9月号付録、トレーニングボード
■著作権と免責事項
- プログラム、ライブラリの著作権は、法律で保護されています。
- 個人利用に限定され、著作権者の許可なく商用利用できません。
- 無保証、無担保です。バグがあってもその修正義務を負いません。問い合わせによる回答義務も負いません。
- 直接間接に関わらず、使用によって生じたいかなる損害も著作権者は責任を負いません。
- 仕様は予告なく変更されることがあります。
■ライブラリの予定
- ライブラリ(CONFIG)
- ライブラリ(WAIT)
- ライブラリ(LED)
- ライブラリ(SW)
- ライブラリ(FLASH)
- ライブラリ(EEPROM)
- ライブラリ(LCD)
- ライブラリ(ADC)
- ライブラリ(TIMER)
- ライブラリ(RS232C)
- ライブラリ(PORT)
- ライブラリ(INTERRUPT)
- ライブラリ(CAPTURE)
- ライブラリ(COMPARE/PWM)
- ライブラリ(SPI)
- ライブラリ(I2C)
- ライブラリ(SYSTEM)
- ライブラリ(FILTER)
- ライブラリ(FFT)
- ライブラリ(OSCCON)
(C)2009 All rights reserved by Einstein.