ESP32のArduino互換ボードを、Arduino-IDEから扱うこと
が出来るようになったので、あらためてLチカをやって
みることに。ただし、タイマ割り込みを使って正確な
間隔で点滅させてみるという作戦。
ESP32のタイマ割り込みについては、
https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
こちらのサイトで詳しく解説されていたので、しばし
じっくり読んでみた。大体理解できたところで、早速
理解を元に組んでみたスケッチがこれ。
/* global variables */
volatile int interruptCounter;
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
#define LED 2
/* interrupt proccess */
void IRAM_ATTR onTimer() { /* this function must be placed in IRAM */
/* we will do it inside a critical section ,
these marcos use portMUX_TYPE variable */
portENTER_CRITICAL_ISR(&timerMux);
interruptCounter++;
portEXIT_CRITICAL_ISR(&timerMux);
/* other handling code if needed */
}
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
/* set prescaler 80 -> tick every 1us (80MHz / 80) */
timer = timerBegin(0, 80, true);
/* set the function name to call when interruption occured */
timerAttachInterrupt(timer, &onTimer, true);
/* set timer-interruption-interval to 1000000 counts -> every 1s */
timerAlarmWrite(timer, 1000000, true);
/* enable timer */
timerAlarmEnable(timer);
}
void loop() {
static int light = LOW;
static int cnt = 0;
if (interruptCounter > 0) {
/* This will be done inside a critical section */
portENTER_CRITICAL(&timerMux);
interruptCounter--;
portEXIT_CRITICAL(&timerMux);
light = ~ light;
cnt++;
digitalWrite(LED, light);
Serial.print(light);
Serial.print(" ");
Serial.println(cnt);
}
}
いくつかのポイントを押さえれば、なんとなく自由自在に
タイマ割り込み処理をいじれるようになった。
プリスケーラの設定とか、カウンタマッチの値設定とか、
カウンタ値の読み取り方法や更新方法のクリティカル
なんとかっていうマクロを使うところとかを押さえれば、
まぁイイカンジに使えるみたいだな。
そうそう、あともうひとつ。割り込み発生時に呼ばれる
関数の定義で、「IRAM_ATTR」属性っていうのをつけておく
必要があるみたい。割り込みで呼ばれる関数のコード部分
が、IRAM領域におかれている必要があるみたい。
今日は、詳しい解説はちょっと置いておいて、また明日か
明後日にでもあらためて。
実行すると、LEDが1秒ごとに点滅して、シリアルモニタに
カウンタ値とLEDの点灯/消燈が表示されるだけの仕組み。
https://www.youtube.com/watch?v=sT0O1EClP8w
ノートPCのトップに、カーボンシートを貼る動画。
この人の動画、時々見させてもらっているんだけど、
いつも思うんだけど、説明の会話のしかたとか、動画の
編集とか、とにかくわかりやすいんだよな。なんか、
コツがありそうな感じがするんだよな。
単に、「ゆっくり目に話す」とか「字幕を付ける」
なんていう単純な話だけじゃなくて、色々と、もっと
科学的なデータとかがあるような気がする。
https://twitter.com/hashtag/54%E5%AD%97%E3%81%AE%E7%89%A9%E8%AA%9E?src=hash
54字の物語。おもしろいな。
https://twitter.com/JOKERSnaKeijiji/status/1014130463927963650
これけっこう好き。
https://twitter.com/metatetsu/status/1013400855289065472
窓をなくしちゃう話。わからないでもないんだけど、
この手の話って、こち亀でネタにされていたような。
窓がなくなったら、本当に幸せかっていうと…ねぇ。
窓開かないんだよ…。そんなクルマに閉じ込められて
何時間も走るの、やだな。
そういえば、新幹線はそれに近いんだよな。外の空気
が全然吸えない。
あと、カメラとかモニター画面とかって、ダイナミック
レンジが人間の目よりずっと狭いから、それも嫌な感じ
だな。やっぱ、オイラみたいなアナログ人間は、モノを
目で見て、手足で操作して走りたい。
https://twitter.com/8go8/status/1013051996687831040
オイラ、空を飛ぶお船のが欲しい!
https://twitter.com/Wu_Niang/status/1013929797716570114
ケッテンクラート症候群。
https://twitter.com/uchujin17/status/1013864759752417282
ケッテンクラート症候群。
https://twitter.com/uta_31/status/1013569912046931969
ハネカクシが翅を隠す動画。すごい。
これは…あれだ。宇宙開発に使おう!!!
https://twitter.com/matsu000000/status/1012317467635404800
九州。
https://page.auctions.yahoo.co.jp/jp/auction/p616176856
88MAの極上品だ!!
というか、すごく実用品なのに美品だ。
https://join.biglobe.ne.jp/mobile/device/moto_e5.html
オイラ的には、こんなスマホでも多分十二分なん
だけど、通話SIMじゃなくて十分なんだよな。
SMSだけ対応しててくれれば。
…ストレージが16GBっていうのがちょっとあれか…
https://join.biglobe.ne.jp/mobile/device/zenfone_4_max_zc520kl.html
ZenFone4Maxがなかなか惹かれるんだよな。
思うんだけど、やっぱあれだな。Androidの気に入らない
ところって、メーカーなりGoogleなりが、パッチを
サクサク提供しない、もしくは、提供してもさくさく
取り込めないところなんだよな。
Windowsも、普通のPC用Linuxも、サクッと入るのに、
なんでAndroidは駄目なんだろう?
そういえば、Firefox OSのスマホ、こけちゃったけど、
あれがもしそれなりに普及してたら、セキュリティー
パッチって、サクサクあたるようになってたのかなぁ?
https://www.gizmodo.jp/2018/06/russian-lazer-space-debris.html
トールハンマーだ!!!
https://twitter.com/manna2010able/status/1013443124780150784
https://twitter.com/kannamitsuta/status/1013028777822076928
残念なことに、これが現在の日本だな。
サッカーでまた美談が有ったみたいだけど、でも、
実際はこんなもんだ。