「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



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

残念なことに、これが現在の日本だな。

サッカーでまた美談が有ったみたいだけど、でも、
実際はこんなもんだ。



コメント ( 0 )