

下記の使い方がわかりません。  
サンプル例、ご教示頂けないでしょうか？

[code]

    void attachTimerInterrupt(unsigned int (*isr)(void), unsigned int us);
    
[/code]


CC BY-SA 4.0
2019-01-12T10:00:22.540
51916
2019-01-15T15:43:36.120
2019-01-12T10:10:04.850
3060
31768
question
arduino spresense
spresense Arduino IDE タイマー割込み


お疲れ様です。  
あまりネット上にサンプルがころがっていない感じですね。  
attachInterrupt  
ならば、たくさんあるので、それを参考にして下さい。  
おそらく、ISRとかお詳しくないんですよね。


CC BY-SA 4.0
2019-01-12T21:19:05.067
51927
2019-01-12T21:19:05.067
31548
51916
answer


Spresense の Arduino ライブラリのヘッダファイルを見てみたら、以下のように定義されていました。

[code]

    void attachTimerInterrupt(unsigned int (*isr)(void), unsigned int us);
    // Parameter:
    //   isr: the function to call when the timer interrupt occurs.
    //        This function must return the next timer period [microseconds].
    //        If this function returns 0, the timer stops and it behaves as oneshot timer.
    //   us: microseconds.
    //       The maximum value is about 26 seconds and if it exceeds, an error occurs.
    // Note:
    //   This can not be used at the same time with tone().
    
[/code]

コールバック関数の戻り値の扱いが少し分かりにくいですが、以下のようなコードを書いてみたら、なんとなく動きました。

[code]

    #define INTERVAL 100
    
    static unsigned long counter = 0;
    
    unsigned int callback_func() {
      Serial.print("callback_func called ");
      Serial.print(++counter);
      Serial.println(" times");
      return INTERVAL;
    }
    
    void setup() {
      Serial.begin(115200);
      attachTimerInterrupt(callback_func, INTERVAL);
    }
    
    void loop() {
    
    }
    
[/code]

以上、ご参考になれば。


CC BY-SA 4.0
2019-01-15T15:34:52.243
51995
2019-01-15T15:43:36.120
2019-01-15T15:43:36.120
27334
27334
51916
answer