脱公務員電子回路設計エンジニア

マルチレートタイマの二重奏

回路図

回路図を示します。書き込み(ISPモード)の状態とを切り替えるSW1につながる5番端子に2個目のスピーカが接続です。スピーカーの内部抵抗が大きいとふんでモード気鋭替えのスイッチと並列に接続しています。本では、なるべく離れた位置にスピ―カーを配置したく、元々あったスピ―カーを4番ピンから一番ピンに変更しているようです。私の方でもそれに従いました。

プログラムが難しい

まず初めに、プログラムが難しい。自分で作成することは無理でした。プログラムやMRTの設定周りの理解を理解しなければいけないのもさることながら、音符の読み方というか音楽に関することが少し出てくるところが、余計に複合的に理解しにくくなっている。この本に書かれている見本のプログラムを の意味を理解するのに時間がかかります。
 まず確認で、MRTを使用するにはLPC810のマニュアルを読むと、

リピート割り込みモード

各種定義

#define MRT_INT_ENA (0x1«0)
#define MRT_REPEATED_MODE (0x00«1)
#define MRT_STAT_IRQ_FLAG (0x1«0)
これは、すべてMRTのSTATレジスタに関連する定数が定義されいる。
#define MRT_INT_ENA (0x1«0) により、STATUSレジスタの割り混みフラグを0にリセット用の定数の定義。

#define MRT_REPEATED_MODE (0x00«1) により、MRTのCTRLレジスタのリピートモード設定用の定数定義。
#define MRT_STAT_IRQ_FLAG (0x1«0) は、割り込みが発生しているかを調べるための定数の定義。

init_mrtについて

LPC_SYSCON ->SYSAHBCLKCTRL |= (0x1 << 10);  
LPC_SYSCON ->PRESETCTRL &= ~(0x1 << 7);  
LPC_SYSCON ->PRESETCTRL |= (0x1 << 7);

 1行目はMRTの設定において、マニュアル通り。2行目から3行目がMRTをリセットをクリアするという設定。kのリセットをクリアするという表現がいまだに違和感がある・・・。