- Webやスマホアプリのプログラミングはやったことあるけど、マイコンは初めてというエンジニアの方。
- IoTとかロボットに興味があるプログラミング初心者の方。
今日は、わたしのメインの仕事であるマイコンプログラミングについて書きます。
わたしはWindows向けのソフトからプログラミングを始め、そのあとにマイコン向けのプログラミングを習得しました。
そのときのわたしの電子工作の知識は0です。
まさに1からのスタートでした。
なまじプログラミングの知識があるから、ついついPC向けのアプリを作る感覚で作業してしまうんですよね。
ただ、この発想は危険です。
マイコンのプログラミングは、PCやスマホ向けのプログラミングと比べてデリケートなんです。
目次
ここが違う! PCやスマホとマイコンのプログラミング
PCやスマホ向けのプログラミングともっとも異なる点は、マイコンプログラミングはハードを作る過程そのものだということです。
PCやスマホは完成されたハードです。
ハードはMacOSやiOSにきっちりと管理されていて、変なコードは実行させてもらえません。
C言語で書いたプログラムをPC上で実行する場合、アクセスしてはいけないメモリの領域にアクセスしようとするとプログラムが止まってしまいます。
わたしも初心者のころによくやりました…
しかし、マイコンだとこのプログラムが動いてしまいます。
最近だとOSがのるマイコンも多いですが、ちょっと前の製品とかだとOSがなかったりします。
変なコードを実行しようとして、「おいおいちょっと待て!」と言ってくれるOSがいないわけですね。
なので、変なコードを書くとプログラムが暴走してとんでもないことになります。
マイコンプログラミングで気をつける4つのこと
とりあえず下の4つに気をつけましょう。
不正なメモリアクセスを前もってつぶす
上でも書きましたが、OSがない環境だとメモリの管理は自己責任です。
わたしも過去の開発で、PCとの通信で送るデータをうっかり照明の出力電圧に書き込んでしまい、まばゆい輝きを放ってLEDが焼き切れたことがありました。
いやー、あの時は恥ずかしかったな…
なので、プログラムを実行する前に問題がないかを確認しないといけません。
仕事でプログラムを書いている方なら、静的解析ツールを使うといいでしょう。
プログラムを実行せずに、ソースコードのおかしなところを教えてくれます。
火が出ても困らない場所で作業する
なんども言いますが、開発中のハードは未完成です。
ちゃんと動くとは限りません。
ちょいちょいあるのがコンデンサの破裂です。
「新しい基盤がとどいたからデバッグをするぞー!」と意気込んで作業していると突然、
パァン!!
と勢いよく破裂したりします。
スマホアプリの開発じゃ経験できない、マイコンプログラミングならではの楽しみですね。
なので、基本的に未完成のハードを信用してはいけません。
作業をするスペースは整理・整頓し、燃えやすいものを置かないようにしましょう。
消火設備も近くに置いておくと、万が一のときに被害を最小限にできます。
趣味で自宅でやる場合も気をつけてください。
電源が入った状態で基盤をさわらない
電源が入っている状態の基盤は、当然ですが電気が流れています。
マイコンボードだと5V〜12Vくらいだと思うので感電することはまずないですが、配線のショートによって火傷する可能性は十分にあります。
また、ショートしなくても通電している部品には高温になるものもあります。
電源が入った状態では、うかつに基盤をさわらないようにしましょう。
わたしも何度か「あっつっ!」ってなりましたね。
デバッガで長時間ブレークしたままにしない
プログラムの内部状態を確認するのに有効なデバッガですが、長時間のブレークは禁物です。
そこそこ高出力な光や熱を出す装置で長時間ブレークすると、ブレークした場所によっては火事になります。
なにかと火が出るんです。
ブレークをするとプログラムが止まりますが、その時に照明やモーターを動かしていると、その動かそうとする出力のまま止まってしまうのです。
なので、ブレークを解除しないと延々と電力が供給されつづけ、場合によっては火が出ることになります。
ブレーク時間は最小限にし、何かを動かしている時はブレークしないようにしましょう。
最後に それでもマイコンはたのしい!
こうやって書くと脅しているようにみえますが、要領がわかればこわくありません。
むしろ、マイコンプログラミングはハードそのものを操れる、すごくクリエイティブな仕事です。
危険なところを理解しつつ、ハードを自分の思い通りに動かす快感を味わってください!
メチャクチャ楽しいですよ!
どーも!現役の組込みソフトエンジニア石塚です!