一つ前の記事では、割込みも何も使わない最もシンプルな方法でGPIOを操作して、LEDをブリンクさせた。これは、単にLPC810へのプログラムの書き込みが出来ることを確認したに過ぎないので、もう少し高度なLEDブリンクを行なって、当面の目標(LPC810で作ってみたい、ある回路)に少しでも近づけたいと思う。Timer)が面白い。自分としては、是非これを使えるようにしておきたい。genaratorの設定は前と同じにした。maxcount=6000000とし、0.5秒に一度割り込みが起きる設定にしてある。割り込みでソフト的にGPIOの出力をトグルして、ブリンクすることを試みた(注:正確な周期を生み出すには、5999999とするべきであろう)。main.cは、以下の通り。2つの手続きが必要なようである。割込みをSCT用に許可するようにしておく必要があった(いずれも、main()関数の冒頭)。割込み用の関数内では、LPC_SCT->EVFLAGの値を読み込んで、もう一度LPC_SCT->EVFLAGに入れ直す(?)必要があるようだ。この操作に何の意味があるのか、あとで調べておこう。いずれにしろ、このソースコードで、1秒おきのLEDブリンクが動いた。これで、SCTを用いた定期的な割込みのレッスンは、終了。次に、普通のPWMを試してみる。定期的にトグルするモード。Machineを書き換える。1"が、GPIOの0_1と勘違いしており(LPC810のDIP-8の5番ピン)、「ん?動かない?」と思ったが、どうやら違うらしい。Matrixという機構で、任意のピンに割り当てられるようである。Matrixの設定を、main()関数の冒頭部分に書き加えた。これで、トグルモードも、レッスン修了。次に、普通のPWMのモード。様々なデューティー比を取れるようにしてみる。今度は、MATCH0/MATCH1という、2つのマッチを設定し、それぞれタイマー値がmaxcountもしくはmaxcount/2になる場合と設定した。MATCH0では出力をLに、MATCH1では出力をHにする設定。MATCH1でマッチする値を書き換えれば、デューティー比を変更することが出来る。main.cは、上記と同じ物。これもうまく動いたので、LPC810で無事にPWMを使えるようになったようだ。最後に、普通のPWMでは出来ない、応用編を。タイマーの1サイクルの間に、LHLHと、2回ブリンクする様にしてみた。Hと出力を切換えるようにした。これも無事に動作確認できた。LPC810、面白いね。ここに書いた方法で、NTSCビデオのsyncシグナル部分を作成する予定。うまく行けば、32x24文字出力・PS/2キーボード入力のコンソールが、DIP-8の石一つで出来そうだ。