Playground

BLE nano(nRF51822)によるタイマー割り込み

Playground
この記事は約3分で読めます。
スポンサーリンク

色々あってBLE nanoを使っています。

Timer割り込みどうするんだ?ということで調べていたら出てきたので記述します。(サンプルにあったなんていえない・・・)

普段使っているArduino Uno(こっちはAVRマイコン)と違い仕様が全く異なるため、手探り状態という感じです。

BLEnanoをArduino化した前提で記述します。

 

プログラム↓

Ticker ticker1, ticker2;

void m_ticker1_handle(void) {
  Serial.println("Task1");
}

void m_ticker2_handle(void) {
  Serial.println("Task2");
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Ticker Task Test ");
  // creat two task, one 1s and the other 2s
  ticker1.attach_us(m_ticker1_handle, 1000000); //1秒
  ticker2.attach(m_ticker2_handle, 2); //2秒
}

void loop() {
}

 

このサンプルプログラム読む前は、下のプログラム(重要なところのみ掲載)のように丁寧に作っていました。

//タイマーのセット
void init_timer(){
    NRF_TIMER0->TASKS_STOP = 1;
    // Create an Event-Task shortcut to clear TIMER0 on COMPARE[0] event
    NRF_TIMER0->MODE        = TIMER_MODE_MODE_Timer;
    NRF_TIMER0->TASKS_CLEAR = 1;               // clear the task first to be usable for later
    NRF_TIMER0->PRESCALER   = 0;  // 1us resolution
    NRF_TIMER0->BITMODE     = TIMER_BITMODE_BITMODE_16Bit;

    NRF_TIMER0->CC[0] = TIMEOUT1 * 1000;

    NRF_TIMER0->INTENSET    = (TIMER_INTENSET_COMPARE0_Enabled << TIMER_INTENSET_COMPARE0_Pos);

    NRF_TIMER0->SHORTS      = (TIMER_SHORTS_COMPARE1_CLEAR_Enabled << TIMER_SHORTS_COMPARE1_CLEAR_Pos);

    // enable IRQ
    NVIC_EnableIRQ(TIMER0_IRQn);
    
    NRF_TIMER0->TASKS_START = 1;
}

 

ちゃんと見るべきでした・・・

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-16-23-46-02

 

ちなみにボタン割り込みや、シリアル通信での文字入力のサンプルもあります。

まさに灯台下暗し・・・

コメント

タイトルとURLをコピーしました