ページ 11

複数のタイマ割り込み

Posted: 2017年7月21日(金) 21:41
by 助けてくださーい(´;ω;`)
コンペアマッチを用いた割り込みについて質問です。

500usec LED点灯
300usecLED消灯
100usecLED点灯
50 usecLED消灯

を1つのLEDで表示させます。


最初に500、と300を1度だけ起動させて50と100を起動させて50が10回起動したらまた500と300を起動させることを繰り返します。

どのようなプログラムとなりますか?

Re: 複数のタイマ割り込み

Posted: 2017年7月21日(金) 22:17
by shira211
すいません 質問の意味が全く理解できません、、、
500とか50usなどの時間とLEDの動作の関係、あるいは時間の経過に伴ってLEDがどう動くのかをもっと詳しく説明できますか?

Re: 複数のタイマ割り込み

Posted: 2017年7月21日(金) 22:30
by みけCAT
よく理解できていませんが、
助けてくださーい(´;ω;`) さんが書きました:複数のタイマ割り込み
助けてくださーい(´;ω;`) さんが書きました: 最初に500、と300を1度だけ起動させて50と100を起動させて50が10回起動したらまた500と300を起動させることを繰り返します。
という複雑な処理はしないといけないのですか?
助けてくださーい(´;ω;`) さんが書きました: 500usec LED点灯
300usecLED消灯
100usecLED点灯
50 usecLED消灯

を1つのLEDで表示させます。
というのが、LEDをこの順番でシーケンシャルに制御するということであれば、

コード:

// 初期化
状態 = 0
カウンタ = 1 // 1で初期化することで、最初の割り込みで0になって処理が進む

50usec周期のタイマー割り込み {
  カウンタ = カウンタ - 1
  if (カウンタ == 0) {
    if (状態 == 0) {
      LED点灯
      カウンタ = 10
      状態 = 1
    } else if (状態 == 1) {
      LED消灯
      カウンタ = 6
      状態 = 2
    } else if (状態 == 2) {
      LED点灯
      カウンタ = 2
      状態 = 3
    } else {
      LED消灯
      カウンタ = 1
      状態 = 0
    }
  }
}
という1個のタイマ割り込みでできると思うのですが。

Re: 複数のタイマ割り込み

Posted: 2017年7月22日(土) 21:45
by 助けてくださーい(´;ω;`)
ありがとうございます