前へ 目次 目次
LEDを1秒ごとに、順番に点滅させる(タイマーA)
 

 ここでは、タイマーAの時計タイムベース機能を用いて、 LEDを1秒ごとに点滅させるプログラムを考えてみましょう。

P50に接続されているLEDを点滅させるものとします。

/*
  タイマーAの時計タイムベース機能を使ってLEDを1秒間隔で点滅(timera.c)
*/

#include"3664.h"

unsigned char onoff;     /* ON,OFF判定用 */

int main(void)
{
  
  IO.PCR5=0x01;           /* P50を出力に設定 */
  DI;                     /* 割り込み禁止 */
  TA.TMA.BYTE=0x18;       /* オーバーフロー周期1秒 */
  IRR1.BIT.IRRTA=0;       /* タイマーA割込みフラグのリセット */
  IENR1.BIT.IENTA=1;      /* タイマーA割込みを利用可能にする */
  
  onoff=0;
  EI;                     /* 割り込み許可 */
  while(1){
    ;
  }
  return(0);
}

void int_timera(void)     /* タイマーA割込み関数 */
{
  IRR1.BIT.IRRTA=0;
  if(onoff==1){
    IO.PDR5.BIT.B0=0;
    onoff=0;
  }else{
    IO.PDR5.BIT.B0=1;
    onoff=1;
  }
}

 
タイマーAの使い方
 

DI

3664.hの中で

#define DI  asm("orc.b #0xc0,ccr")

と定義されています。 割り込みを禁止するために使います。 今の場合、タイマーAオーバーフロー割込みを利用するので、 設定の際には必ず割り込みを禁止してから行います。


TA.TMA.BYTE=0x18

タイマーAには、インターバルタイマーと時計用タイムベースという二つの機能があります。 時計用タイムベースには32.768kHzの水晶発信器が必要ですが、 AKI-H8/3664 QFP版マイコンモジュールには、 この発信器が組み込まれており、 そのままで時計用タイムベース機能が利用できます。

時計タイムベースでは、 オーバーフロー周期として、1s、0.5s、0.25s、31.25msの4種類が利用できます。

時計タイムベースの設定は、 タイマーモードレジスタA(TMA)で行います。 以下に、時計タイムベースの場合のビットごとの機能を示しておきます。

ビット機能
0-2オーバーフロー周期を指定します。
000:1s
001:0.5s
010:0.25s
011:0.03125s
3時計タイムベースの場合、1を指定します。
4リザーブビットで、常に1です。
5-7今の場合、関係有りません。 全て0に設定しておきます。


IRR1.BIT.IRRTA=0

IRR1.BIT.IRRTAは、 タイマーA割込み要求フラグです。 タイマーAがオーバーフローしたときに、 1に設定されます。 0に初期化しておきます。


IENR1.BIT.IENTA=1

IENR1.BIT.IENTAは、 タイマーA割込み要求イネーブルです。 これを1に設定すると、タイマーAのオーバーフロー割込み要求が 利用可能になります。


EI

3664.hの中で

#define EI  asm("andc.b #0x3f,ccr")

と定義されています。 割り込みを許可するために使います。


int_timera

3664.hの中で

extern void int_timera (void) asm ("_int_timera") __attribute__((interrupt_handler));

と定義されています。 タイマーAのオーバーフロー割込みが起こった時に呼び出されます。 ここに、必要な処理をプログラムすることになります。

 
タイマーAの使い方(時計タイムベース)のまとめ
 
  • 割り込みを禁止する
  • オーバーフロー周期を設定する
  • タイマーA割込みフラグをリセット
  • タイマーA割込みを利用可能にする
  • 割り込みを許可する
オーバーフロー周期ごとに実行するべきことは、 関数void int_timera(void)に記述する。

 
やってみよう
 

  1. ポート5につないだ、LEDを0.5秒ごとに順番に点灯するように プログラムしてみましょう。
  2. 3つのLEDを用いて、3ビットで1秒ごとにカウントアップするプログラムを作りましょう。
    ●●●
    ●●○
    ●○●
    ●○○
    ○●●
    ○●○
    ○○●
    ○○○
    最初に戻る
    

 
2003/05/12(Mon)
AKI-H8/3664 QFP版のトップページへ
トップページへ
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送