Pinus0079 が 2021年12月19日21時30分02秒 に編集
コメント無し
本文の変更
**概要**
概要 ====
Arduinoのタイマレジスタ設定についてまとめました。詳しい説明(プログラムの書き方など)については省略します。
**Timer0**
Timer0 ====
![キャプションを入力できます](https://camo.elchika.com/2191335d394acf1c3ca72b13420fafd596d3be9a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f61363435346338652d353462312d346638382d616234662d306463643230373337636561/) ※PC PWM = Phase Correct PWM
**Timer1**
Timer1 ====
![キャプションを入力できます](https://camo.elchika.com/b95276956c4358933f5b4178a626788ed3868d29/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f39326538643264632d613662622d343761612d393536662d613732636135646166363933/) ※PC PWM = Phase Correct PWM ※PFC PWM = Phase and Frequency Correct PWM
**Timer2**
Timer2 ====
![キャプションを入力できます](https://camo.elchika.com/f8d1a832053484e13946ae6769f6c0ad05841718/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f38623665333936622d653163372d346536642d396237302d663739373066343631616635/) ※PC PWM = Phase Correct PWM
**PWM出力設定**
PWM出力設定 ====
![キャプションを入力できます](https://camo.elchika.com/d13093d169fe889581f11c4b6390e1e14e29d054/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f31306564333333622d633263332d346433382d386336322d333430396630396534326337/) ※n = タイマ番号
**分周比**
分周比 ====
![キャプションを入力できます](https://camo.elchika.com/962e823422a312a463c7c5206c9db22f6c53c853/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f32653338646363622d333634312d343265302d396339382d303130653033373732656661/) ※n = タイマ番号
**周波数の計算式**
周波数の計算式 ====
![キャプションを入力できます](https://camo.elchika.com/91d5e432ab19f12b5dd0b9867e428b20c7712195/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f35363130363163632d303037362d346165362d393064362d643764653236383837613761/) ※n = タイマ番号 ※fclk = クロック周波数(Arduino UNO:16MHz)
**PWM出力ピンの対応関係**
PWM出力ピンの対応関係 ====
![キャプションを入力できます](https://camo.elchika.com/b46b65f4aa5ec1789ad24c47dda31addcc8d8e55/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f38363333363033302d396232312d346231622d386362332d613061656166306639666334/)
**プログラム例**
プログラム例 ====
```arduino:PWM出力設定例 void setup() { pinMode(10,OUTPUT); //OC1B pinMode(9,OUTPUT); //OC1A /*タイマ1初期化*/ TCCR1A = 0; TCCR1B = 0; /* OC1A,OC1B 40kHz出力 * PWMモード:Fast PWM * 分周比:1 * TOP:ICR1 = 400 - 1 * OCR1A:コンペアマッチLOW * OCR1B:コンペアマッチLOW */ TCCR1A |= (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1); TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS10); ICR1 = 400 - 1; } void loop() { /*OC1A duty比0%出力*/ OCR1A = 0; /*OC1B duty比50%出力*/ OCR1B = 200 - 1; } ```
**最後に**
最後に ====
タイマ0はdelay関数などで使用されているので、delay関数を使う場合は変更しない方が良いです。 もし間違った箇所があればコメントで教えて頂けるとありがたいです。
**参考文献**
参考文献 ====
https://usicolog.nomaki.jp/engineering/avr/avrPWM.html https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf