酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

Lチカ沼

2023年12月09日 10時33分36秒 | マイコン(ESP32・Arduino等)

昨日部内勉強会でLチカの基礎を、単三電池でLED点灯するところから説明して、自分でもアレ?と思った。
確かにPin1にLEDを繋いで信号をHIGHにすれば点灯する。
digitalWrite(1 , HIGH );
2進数的には1を出力していることには間違いは無いし、説明的にも誤りはない・・・
だけど、何か腑に落ちない。

帰ってArduinoのアセンブラについて調べた。
まずはLチカをアセンブラで記述して詳細な解説をされておられるサイトを発見

こちらのサイト様から拝借

今まで何となく「CPUチップに生えた足に電圧を加えてるんだろうな」と思ってたけど・・・
(そういう仕組も出来ないことはないとは思うけど)
そもそもGPIOは入力もできるしアナログ値も出力できる、シリアル通信もハード的に可能。
となると、CPUの足の先には複雑な回路が繋がってないとそんな芸当はできるはずはないではないか。
そもそも、演算結果を格納したレジスタは微弱な電力で5V/0Vを保ってるだけ、だよなぁ

掘れば掘るほど・・・底なし沼
インターネットって素晴らしいことも再確認
昔なら知り合い伝手に専門家を探すか、県立図書館へ行ってそれっぽい本を探す、ぐらいしか調べ方はなかったんだけども。

マイコンのPin構成図を見て、漠然とあのブロック図がそのままだと思ってたなんてほんとアホですね。
簡単なプログラムを作ってヨシヨシなんて思ってちゃ低レベルから抜けられないということを再自覚

「CPUの作り方」は2/3まで読んで止まってるけど、まずはアレを完全理解から始めなくっちゃと、引っ張り出してIO部分を読んでみた。
うんうん・・・、安価なマイコンではレジスタに直接LED+ダイオードを付けて実装してるとな。ああ、やっぱり間違ってなかった。
PC用のCPUはメモリアドレスに向けて出力し外部チップがその信号であれこれ下請けIOを行う。
たしかに確かに。PC98ではシリアルチップが通信の下請けしてたな。BIOSのLIOルーチンを使ったことを思い出した。
半世紀前に出会ったコンピュータに感じた「なんで動くん?」という素朴な疑問、その原点に戻ってきてるようだ。

OracleとかApacheが・・・とかやってたけど、何にもわかっちゃいねぇ・今更ながらに恥じ入る次第です。
とはいえ、どの分野も専門化・細分化され、互いに実際の動作や構造なんて知る必要もないんだけどね。
スマホ使って儲けてる奴が量子力学知る必要もない。

あああ・・・昼から連続10時間以上の労働は体にこたえる。
朝から体がダルい。
くそっ、今日は夕方から飲み会。行きたくねぇ

この記事についてブログを書く
« Tiny:bit台座を試作 | トップ | micro:bitはちょっと”ヘン” »