<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=ATmega328_-_%E3%82%BF%E3%82%A4%E3%83%9E</id>
	<title>ATmega328 - タイマ - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=ATmega328_-_%E3%82%BF%E3%82%A4%E3%83%9E"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=ATmega328_-_%E3%82%BF%E3%82%A4%E3%83%9E&amp;action=history"/>
	<updated>2026-04-28T15:15:40Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=ATmega328_-_%E3%82%BF%E3%82%A4%E3%83%9E&amp;diff=9956&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 ==  &lt;br&gt;&lt;br&gt;  == タイマ1 == ==== タイマ1のコンペアマッチA割り込み ==== 以下の例では、1秒間隔でタイマ割り込みを行い、10回のタイマ割り込みでLEDをトグルしている。&lt;br&gt;  &lt;syntaxhighlight lang=&quot;c++&quot;&gt;  #include &lt;avr/io.h&gt;  #include &lt;avr/interrupt.h&gt;    #define LED_PIN PB5  // PB5ピンにLEDを接続    volatile uint8_t timer_count = 0;  // 割り込みハンドラ内でカウントアップ…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=ATmega328_-_%E3%82%BF%E3%82%A4%E3%83%9E&amp;diff=9956&amp;oldid=prev"/>
		<updated>2024-05-17T16:12:45Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 ==  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  == タイマ1 == ==== タイマ1のコンペアマッチA割り込み ==== 以下の例では、1秒間隔でタイマ割り込みを行い、10回のタイマ割り込みでLEDをトグルしている。&amp;lt;br&amp;gt;  &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;  #include &amp;lt;avr/io.h&amp;gt;  #include &amp;lt;avr/interrupt.h&amp;gt;    #define LED_PIN PB5  // PB5ピンにLEDを接続    volatile uint8_t timer_count = 0;  // 割り込みハンドラ内でカウントアップ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== タイマ1 ==&lt;br /&gt;
==== タイマ1のコンペアマッチA割り込み ====&lt;br /&gt;
以下の例では、1秒間隔でタイマ割り込みを行い、10回のタイマ割り込みでLEDをトグルしている。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define LED_PIN PB5  // PB5ピンにLEDを接続&lt;br /&gt;
 &lt;br /&gt;
 volatile uint8_t timer_count = 0;  // 割り込みハンドラ内でカウントアップ&lt;br /&gt;
                                    // 10秒ごとにリセット&lt;br /&gt;
 &lt;br /&gt;
 // タイマ1のコンペアマッチA割り込みハンドラ&lt;br /&gt;
 ISR(TIMER1_COMPA_vect)&lt;br /&gt;
 {&lt;br /&gt;
    timer_count++;  // この変数の値が10に達した場合にLEDの状態を反転&lt;br /&gt;
    if (timer_count &amp;gt;= 10) {&lt;br /&gt;
       PORTB ^= (1 &amp;lt;&amp;lt; LED_PIN); // LEDをトグル&lt;br /&gt;
       timer_count = 0;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main(void)&lt;br /&gt;
 {&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; LED_PIN);  // LEDピン(PB5)を出力に設定&lt;br /&gt;
 &lt;br /&gt;
    // タイマ1の設定&lt;br /&gt;
    TCCR1A = 0;&lt;br /&gt;
    TCCR1B = (1 &amp;lt;&amp;lt; WGM12) | (1 &amp;lt;&amp;lt; CS12) | (1 &amp;lt;&amp;lt; CS10); // CTCモード&lt;br /&gt;
    OCR1A = 15624;                                     // プリスケーラ(分周)を1024に設定&lt;br /&gt;
                                                       // 16[MHz]の場合の1秒間隔の値&lt;br /&gt;
    TIMSK1 |= (1 &amp;lt;&amp;lt; OCIE1A);                           // タイマ1のコンペアマッチA割り込みを有効化&lt;br /&gt;
 &lt;br /&gt;
    sei();  // グローバル割り込みを有効化&lt;br /&gt;
 &lt;br /&gt;
    while (1) {&lt;br /&gt;
       // メイン処理&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== タイマ1のコンペアマッチB割り込み ====&lt;br /&gt;
以下の例では、1秒間隔でタイマ割り込みを行い、10回のタイマ割り込みでLEDをトグルしている。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define LED_PIN PB5  // PB5ピンにLEDを接続&lt;br /&gt;
 &lt;br /&gt;
 volatile uint8_t timer_count = 0;  // 割り込みハンドラ内でカウントアップ&lt;br /&gt;
                                    // 10秒ごとにリセット&lt;br /&gt;
 &lt;br /&gt;
 ISR(TIMER1_COMPB_vect)&lt;br /&gt;
 {&lt;br /&gt;
    timer_count++;  // この変数の値が10に達した場合にLEDの状態を反転&lt;br /&gt;
    if (timer_count &amp;gt;= 10) {&lt;br /&gt;
       PORTB ^= (1 &amp;lt;&amp;lt; LED_PIN); // LEDをトグル&lt;br /&gt;
       timer_count = 0;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main(void)&lt;br /&gt;
 {&lt;br /&gt;
    DDRB |= (1 &amp;lt;&amp;lt; LED_PIN);  // LEDピン(PB5)を出力に設定&lt;br /&gt;
 &lt;br /&gt;
    // タイマ1の設定&lt;br /&gt;
    TCCR1A = 0;&lt;br /&gt;
    TCCR1B = (1 &amp;lt;&amp;lt; WGM12) | (1 &amp;lt;&amp;lt; CS12) | (1 &amp;lt;&amp;lt; CS10);  // CTCモード&lt;br /&gt;
    OCR1A = 15624;                                      // プリスケーラ(分周)を1024に設定&lt;br /&gt;
                                                        // 16[MHz]の場合の1秒間隔の値&lt;br /&gt;
    OCR1B = 15624;                                      // OCR1Bレジスタに、OCR1Aと同じ値を設定&lt;br /&gt;
    TIMSK1 |= (1 &amp;lt;&amp;lt; OCIE1B);                            // タイマのコンペアマッチB割り込みを有効化&lt;br /&gt;
&lt;br /&gt;
    sei();  // グローバル割り込みを有効化&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
        // メイン処理&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:AVR]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>