Ticker - 繰り返しタイマー割込み

Ticker - 繰り返しタイマー割込み

Information

本ページは私家版のため、誤り等あればご指摘ください。
最新の情報は公式のドキュメントをご参照ください。 http://mbed.org/handbook/Ticker

タイマーで一定時間ごとに繰り返し割込みを発生させることができます。
一定間隔の処理を行うときに使います。

初期化

Ticker name;

name: 名前(自由に決めて良い)

割込み開始

name.attach(fptr, time);

fptr: 割込み処理関数のポインター
time: タイマー時間(秒)

タイマー割込みを開始します。

マイクロ秒単位の attach_us() もあります。

割込み停止

name.detach();

タイマー割込みを停止します。

LED2を割込みで点滅させます(LED1はウェイトを使って点滅)

#include "mbed.h"

Ticker flipper;
DigitalOut led1(LED1);
DigitalOut led2(LED2);

void flip() {
    led2 = !led2;
}

int main() {
    led2 = 1;
    flipper.attach(&flip, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds)

    // spin in a main loop. flipper will interrupt it to call flip
    while(1) {
        led1 = !led1;
        wait(0.2);
    }
}

LPCXpresso コード

タイマー比較一致割込み(一致リセット)

LED(P1.18)点滅

#include "LPC17xx.h"

#ifdef __cplusplus 
extern "C" { 
  void TIMER0_IRQHandler ();
} 
#endif

void TIMER0_IRQHandler () {
    static volatile int n = 0;

    n ++;
    if (n & 1) {
        LPC_GPIO1->FIOSET = (1 << 18); // high
    } else {
        LPC_GPIO1->FIOCLR = (1 << 18); // low
    }
    LPC_TIM0->IR = 0xff; // reset MR0 flag
}

int main() {

    LPC_PINCON->PINSEL3 &= ~(3 << 4); // GPIO (00)
    LPC_GPIO1->FIODIR |= (1 << 18);  // output

    LPC_SC->PCLKSEL0 &= ~(3 << 2); // PCLK_TIMER0 ck/4 (00)
    LPC_SC->PCONP |= (1 << 1); // PCTIM0

    LPC_TIM0->TCR = (1 << 1); // reset
    LPC_TIM0->PR = SystemCoreClock / 4 / 1000 - 1; // prescale 1kHz
    LPC_TIM0->MR0 = 500 - 1; // mutch 2Hz
    LPC_TIM0->CTCR = 0;
    LPC_TIM0->MCR |= (1 << 1)|(1 << 0); // MR0R, MR0I
    LPC_TIM0->IR = 0xff;
    NVIC_EnableIRQ(TIMER0_IRQn);
    LPC_TIM0->TCR = (1 << 0); // enable
    __enable_irq();
    
    while(1);
}

戻る (back)


4 comments on Ticker - 繰り返しタイマー割込み:

17 Oct 2013

ミリ秒単位の attach_ms()は現在使用できないみたいですね。

-deleted-
05 Jul 2014

割り込みを停止ってできないんですか?

-deleted-
05 Jul 2014

-deleted- wrote:

よく見たらありました。ごめんなさい。

26 Dec 2014

LPC1114FN28を使ってTimer割り込みさせています。 約2000回の割り込みでプログラムが停止します。 原因と対処法はありませんか。

よくよく調査したらSDFileSystemの問題でした。 済みませんでした。

Please log in to post comments.