Microchip AVR8 用のライブラリを自作する。(GPIO)

久しぶりにATtiny202を使ってみたらプログラム領域が少ないため公開されているライブラリが使えずHW直接アクセスするコードを書かなければいけなかったりして何かと面倒なので手始めにGPIOライブラリを作ってみた。

関数引数に定数を指定したときが高速かつ最小なコードになるが、ビルドモードや関数引数が定数かどうかを判断し適切かつ最小なコードが生成されるようにしてみたことやピン変化によるHW割込み処理にも対応してみた。ちなみにHW割込み処理を使うと意外にコードが大きくなってしまうためHW割込み処理を使わずに同じことができるポーリング処理にも対応。単純な処理のみならポーリングでOKかも。

自作にあたって特に悩んだのはシフト演算を使うと巨大かつ遅いコードになりがちなこと。そのためシフト演算なしですむようGPIOピン定義にそのビット位置とビットマスク値を含めている。

【生成されるコードの例(疑似コード)】

【使い方】

【ライブラリ】
※余計な内容が入ってるが気にしないように!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください