Arduinoのタイマー管理はFlexiTimer2にしてみた

最近はUnoとLeonard両方使うようになってきてて、両方で動かすときにコードを変更するのがしんどくなってきたので、タイマー系を綺麗にラップしてくれてる FlexiTimer2 を使う事にした。

https://github.com/wimleers/flexitimer2

使い方とかはだいたい Arduinoのタイマー割り込みライブラリの調査 – Qiita に書いてある。

なんで タイマー実装を Uno を Leonard で変更する必要があるかというと、 Uno が使ってる 328P-PU と Leonard が使ってる 32u4 ではタイマーの仕様が根本的に違うから。そもそも 32u4系にタイマー2が存在しない。存在しないので分岐処理が必要になる。

以前は以下の様なリストをメモしていた。

TCNT2  = TCNT0
COM2A0 = COM0A0
COM2B1 = COM0B1
WGM21  = WGM01
WGM20  = WGM00
WGM22  = WGM02
CS21   = CS01
TCCR2A = TCCR0A
TCCR2B = TCCR0B
TCCR2A = TCCR0A
TCCR2B = TCCR0B
TCCR2A = TCCR0A
TCCR2B = TCCR0B
OCR2A  = OCR0A
OCR2B  = OCR0B

この辺の処理が全部隠蔽されるようになるので「こんな簡単に動いちゃって本当に大丈夫なのか?」という気持ち。

投稿者: halt

PHPプログラマ。

コメントを残す

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

ねこ認証:9つのパネルの中からねこを3匹選んでください