AVRでのタイマとPWMの使い方 | うしこlog (nomaki.jp) も参考に
#include <avr/io.h> // なくてもうごいたが
void setup(){
TCCR1A=0b10100001; // 8ビット高速PWM動作
TCCR1B=0b00001011; // clkI/O/64 (64分周)
// 7,11ピンの49
OCR1A=0; // 初期化
OCR1B=0;
pinMode(12,OUTPUT); //
pinMode(13,OUTPUT);
}
// analogWrite()を使うときは、pinMode()を
void loop() {
analogWrite(11,127); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=127; // timer1 A デューティ比 50%(0~255)
OCR1B=0;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=0;
OCR1B=0;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,127); // timer0 B
OCR1A=0;
OCR1B=127;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=0;
OCR1B=0;
delay(500);
}
以下ATtinyCoreより抜粋。
PWM周波数
F_CPU:8MHz F_PWM TC0:8/64/256= 488Hz F_PWM TC1:8/64/256= 488Hz
TC0 は常に高速 PWM モードで実行されます。 ミリ秒には TC0 を使用しますが、位相補正モードはミリ秒タイマーでは使用できま
トーンサポート
Tone() は Timer1 を使用します。最良の結果を得るには、ピン PB3 (12) または PB4 (13) を使用します。これは、割り込みを使用する代わりにハードウェア
このコードは確かArduinoで書くとタイマ1が動かないとい
そこでタイマ0はArduino、タイマ1はレジスタを直接制御
つまりデューティー比50%ならOCR1A=127; またはOCR1A=0b01111111;(OCR1AL=0b
「TCCR1Aはtimer0 8bit」はタイマ1高速PWM8ビットの事かと思います。
うまく説明できたかどうか、よろしくお願いします。
0 件のコメント:
コメントを投稿