編集履歴一覧に戻る
TentoBugのアイコン画像

TentoBug が 2025年01月26日17時41分34秒 に編集

初版

タイトルの変更

+

SPRESENSEで割り込みの実験をしました。

タグの変更

+

SPRESENSE

記事種類の変更

+

セットアップや使用方法

Lチカの変更

Lチカが設定されました

本文の変更

+

# はじめに タイマーの間隔より作業することが長い時の動作が気になり試してみました。 さらに割込みが入ると、どんな動きになるのかと思い実験しました。 ![回路図](https://camo.elchika.com/bb78a0c520c2b5e480343cd855fe841e8eda6f93/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32376136643031662d356135312d346338322d616134302d3338313839323334376536342f30653031323037332d643564302d343137362d383932382d323832633965326662343465/) ```arduino:Lチカ #include <time.h> #include <stdio.h> unsigned int timer1(void){ digitalWrite(PIN_D22, HIGH); delay(500); //ms digitalWrite(PIN_D22, LOW); delay(500); return 500; } unsigned int photosensor(void){ digitalWrite(PIN_D23, HIGH); delay(1000); digitalWrite(PIN_D23, LOW); return 1; } void setup() { /* ポートの設定 */ pinMode(PIN_D02, OUTPUT); pinMode(PIN_D22, OUTPUT); pinMode(PIN_D23, OUTPUT); pinMode(PIN_D21, INPUT_PULLDOWN); pinMode(PIN_D16, INPUT_PULLDOWN); pinMode(PIN_D17, INPUT_PULLDOWN); /* シリアル通信設定 */ Serial.begin(115200); sleep(3); attachInterrupt(PIN_D21, photosensor, RISING); attachTimerInterrupt(timer1,500);//us /* Set serial baudrate. */ Serial.begin(115200); } long long l=0; void loop() { char Buffer[256]; sprintf(Buffer, "%ld\r\n\0", l ); Serial.print(Buffer); l++; } ``` # 結果 ![キャプションを入力できます](https://camo.elchika.com/32feefba9aa428cc3c2caa40f8d52a8cfb7060b5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32376136643031662d356135312d346338322d616134302d3338313839323334376536342f36653066653561662d623838302d346136652d613666612d616136373563373463623533/) こんなイメージのような感じがしました。私がこんな感じに仕事させられたら、もーとなりそうです。あっちたてこっちたてとしているうちに真っ白になりそうです。なんかうまく処理するのだな。 # 今後の課題 - 優先順位とかあるのだろうか。 - マルチコアの機能を使うとタイマーの内容をずらさずに点灯さすことができるのかな?