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