Arduino IDE アップデートしたらMsTimer2が使えなくなった・・・
※私が実行した対策方法はあとで示します。
「Arduino」の開発環境、「アップデートがあるよ」のメッセージが出たんでアップデートしたら、これまで使えていた「MsTimer2」(タイマー割り込み処理)が動かなくなってしまって、「なんで?」状態に。
動かなくなったのは「MEGA-2560」。
「Arduino-UNO」では大丈夫。
調べてみると「MsTimer2.cpp」内のチップ名称指定からMEGA2560が抜けていると。
対策として「MsTimer2.cppにパッチを当てよ」とのこと。
アップデート前はちゃんと動いていたんです。
アップデートでMsTimer2.cppが古いのに書き換わったんだろうなの想像。
こんなのイヤ!
こんなのイヤ!
~~~~~~~~~~~~~~~~~~~~~~~~~~
★私の対策方法
MsTimer2を使わず、タイマー2モジュールを直接制御して、
割り込みルーチンをベクトル設定から。
●setup内
●setup内
:
// タイマー2 割り込み有効に
TCCR2A = 0b00000010; // WGM21,20 CTCモード
TCCR2B = 0b00000100; // プリスケーラ1/64
OCR2A = 250-1; // 16MHz / 64 / 250 = 1kHz
TIMSK2 = 0b00000010; // OCIE2A コンペアマッチA割り込み有効
TCCR2A = 0b00000010; // WGM21,20 CTCモード
TCCR2B = 0b00000100; // プリスケーラ1/64
OCR2A = 250-1; // 16MHz / 64 / 250 = 1kHz
TIMSK2 = 0b00000010; // OCIE2A コンペアマッチA割り込み有効
:
●割り込み処理
/***** タイマー値 *****/
volatile byte tm_1ms; // 1msダウンカウントタイマー max 255ms
/***** タイマー値 *****/
volatile byte tm_1ms; // 1msダウンカウントタイマー max 255ms
/***** タイマー2 1mS割り込み *****/
// コンペアマッチA割り込み
ISR(TIMER2_COMPA_vect)
{
if(tm_1ms) tm_1ms--; // 1ms値ダウンカウント
}
// コンペアマッチA割り込み
ISR(TIMER2_COMPA_vect)
{
if(tm_1ms) tm_1ms--; // 1ms値ダウンカウント
}
~~~~~~~~~~~~~~~~~~~~~~~~~~
この手法、Arduino-UNOでチャートレコーダ(プリンターシールドの活用)で使っています。
MsTimer2の最小単位が1ms。
チャートレコーダーでは0.5msが欲しかったんで、割り込みを直接記述。
ただし、
AVRマイコンのCコンパイラ 具体的に ※volatileを忘れずに!
のように注意(word以上のデータをアクセスする時の割り込み禁止処理)が必要。
Arduino IDE、そういやこんな変更もあった・・・
| 固定リンク
「トラブル遭遇」カテゴリの記事
- 歯医者の残物:ヘッドランプ(2025.12.29)
- 24クリックのロータリーエンコーダ、調子が悪くなり交換(2025.11.20)
- MADE IN USAでも信じるな!(ミノムシクリップの話)(2025.11.11)
- 8文字×2行のI2C液晶表示器に注意(2025.10.21)
- ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい(2025.10.06)
「電子工作」カテゴリの記事
- ひさしぶりのイベントだったけど・・・「ピコピコ・スイッチ」破損(2021.12.13)
- 顕微鏡用LEDリングライトのLED、そろそろ交換か(2021.09.27)
- 可変抵抗器の「陽極酸化」(2021.09.22)
- 弾帯状になったQIコネクタのコンタクトピンを・・・(2021.08.27)
- AD620を使った計装アンプとシミュレーテッド・インダクタを使ったノッチフィルタ(2021.08.16)
「Arduino」カテゴリの記事
- ATtiny1614:タイマレジスタの初期設定を見る(2026.01.06)
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」#2(2025.09.15)
- ラジオペンチさんの「ダイソーのゆらゆらLEDキャンドルライト」(2025.09.11)
- ATtiny402サンプル:"Wire.h"を使わずI2Cで液晶表示 AQM1602だと(2025.09.09)
- ATtiny402サンプル:I2Cで液晶表示 SCL周波数を設定できるようにしたら(2025.09.09)


コメント