色々あって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;
}
ちゃんと見るべきでした・・・
ちなみにボタン割り込みや、シリアル通信での文字入力のサンプルもあります。
まさに灯台下暗し・・・