編集履歴一覧に戻る
Pinus0079のアイコン画像

Pinus0079 が 2021年12月19日21時27分40秒 に編集

初版

タイトルの変更

+

Arduinoタイマレジスタ設定表

タグの変更

+

Arduino

+

PWM制御

記事種類の変更

+

セットアップや使用方法

本文の変更

+

**概要** Arduinoのタイマレジスタ設定についてまとめました。詳しい説明(プログラムの書き方など)については省略します。 **Timer0** ![キャプションを入力できます](https://camo.elchika.com/2191335d394acf1c3ca72b13420fafd596d3be9a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f61363435346338652d353462312d346638382d616234662d306463643230373337636561/) ※PC PWM = Phase Correct PWM **Timer1** ![キャプションを入力できます](https://camo.elchika.com/b95276956c4358933f5b4178a626788ed3868d29/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f39326538643264632d613662622d343761612d393536662d613732636135646166363933/) ※PC PWM = Phase Correct PWM ※PFC PWM = Phase and Frequency Correct PWM **Timer2** ![キャプションを入力できます](https://camo.elchika.com/f8d1a832053484e13946ae6769f6c0ad05841718/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f61366264353061362d623532322d343934322d383235612d6430323435393539653030312f38623665333936622d653163372d346536642d396237302d663739373066343631616635/) ※PC PWM = Phase Correct 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出力ピンの対応関係** ![キャプションを入力できます](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