どちらかというと自分用のメモ的なエントリです。
でも誰かの役に立つかも?とも思うのでまとめておきます。
とはいえまとめるも何もここに載ってるんですけどね。
Arduino UNO、nano、pro miniなど、「ATMEGA328P」を使ってある電源電圧5VのArduinoについて、setupの中で次の内容を記述します。
Digital5/6ピン(Timer0に対応)
1 2 3 4 5 | TCCR0B = (TCCR0B & 0b11111000) | 0x01; //62.5kHz TCCR0B = (TCCR0B & 0b11111000) | 0x02; // 7.825kHz TCCR0B = (TCCR0B & 0b11111000) | 0x03; // 977Hz TCCR0B = (TCCR0B & 0b11111000) | 0x04; // 244Hz TCCR0B = (TCCR0B & 0b11111000) | 0x05; // 61Hz |
何も記述しなければ977Hzがデフォルトで使用されます。
Digital5/6ピンのPWM波形生成に使用するTimer0はArduinoのdelayやdelayMicroseconds、millisの制御にも使われているのでこれらの命令が通常通りに使えなくなります。
極力Digital5/6ピンのPWM周波数は変えずに使うのが得策でしょう。
Digital9/10ピン(Timer1に対応)
1 2 3 4 5 | TCCR1B = (TCCR1B & 0b11111000) | 0x01; //31.373kHz TCCR1B = (TCCR1B & 0b11111000) | 0x02; // 3.921kHz TCCR1B = (TCCR1B & 0b11111000) | 0x03; // 490.2Hz TCCR1B = (TCCR1B & 0b11111000) | 0x04; // 122.6Hz TCCR1B = (TCCR1B & 0b11111000) | 0x05; // 30.6kHz |
何も記述しなければ490Hzがデフォルトで使用されます。
Digital3/11ピン(Timer2に対応)
1 2 3 4 5 6 7 | TCCR2B = (TCCR2B & 0b11111000) | 0x01; //31.373kHz TCCR2B = (TCCR2B & 0b11111000) | 0x02; // 3.921kHz TCCR2B = (TCCR2B & 0b11111000) | 0x03; // 980.4Hz TCCR2B = (TCCR2B & 0b11111000) | 0x04; // 490.2Hz TCCR2B = (TCCR2B & 0b11111000) | 0x05; // 245.1Hz TCCR2B = (TCCR2B & 0b11111000) | 0x06; // 122.6Hz TCCR2B = (TCCR2B & 0b11111000) | 0x07; // 30.6Hz |
何も記述しなければ490Hzがデフォルトで使用されます。
以上、何か役に立てば幸いです。
コメント