top of page
  • ahedgehogchase

Lesson 8. 組み込みプログラミング §16. 3つのプログラムを選んで改変しよう

3つの手順

さて、ここで基板に話を戻そう。 この基板にはプロセッサがあり、インサーキットプログラミングのためのヘッダがある。そして、FTDI、そしてISPが搭載されている。ひとつは抵抗器をリセットし、プロセッサを起動させるコンポーネントが2つある。つまり、それが動作することでプログラマは命令を実行し始める。フィルタ、キャパシタ、そしてこのバージョンでは外部の共鳴器を追加している。 そして、プログラムを基板に読み込ませて実行するには3つの手順がある。 (画面が見えにくいので、)拡大してみよう。

 

●STEP 1. hex fileへの変換 ここには、僕の書いたプログラムがある。 まず最初のステップで、僕はC言語をプログラムからhexコードに変換してやる必要がある。また、外部の水晶振動子を使うのであれば、ヒューズをセットアップしなくちゃならない。外部の水晶振動子と通信するためにはプロセッサに信号を送らなきゃならない。 ●STEP 2. プログラムのロード 次のステップでは、プログラムをロードする。

●STEP 3. プログラムの実行 ロードが完了したのち、最終ステップとして 君たちはプログラムを実行する。 このケースでは、僕は文字を打って、これはその文字を僕に返してくる。 そして、これらが、この基板をプログラミングするステップの全てだ。

 

1からコードを書く必要はない 僕は3つのバージョンのプログラムを持っている。そして、それらのそれぞれについて、ここに種となるプログラムがある。僕を含めて、ここにいる全ての人たちが、これらを一から書くわけではない。 君たちがやることは、君たちがやりたいことに関係するプログラムを選んで、改変するんだ。そういう訳で、僕は君たちにこれらの全ての行を書いてもらおうなんて思っていない。 プログラムを選ぶんだ。そして、変更を加えてくれたまえ。 今回ではないが、今学期を通して君たちはプログラムを理解する前に、多くのことをやらなきゃならない。 だから、今の時点で全てを理解しようと、心配しなくても良い。

 

3つのプログラム

●1つ目のプログラム

さて、これを見て欲しいんだけれども、1つ目は、ループになっていて、これによって僕の基板は文字を読み込み、メッセージを返す。そしてらこれがその核となる部分だ。 プログラム全体としては、最初に定義があって、そこにはマクロと呼ばれるものがあり、いくつかのルーティンを定義してある。 ここでは、プロセッサのピンに名前をつけていてそして、ライブラリのルーティンもいくつかある。君たちはここに何が書かれてあるのか心配しなくてもいい。いずれにしても、僕が名付けたルーティンがあるんだ。 そして、メインのプログラムにおいて、僕はこのクラスのために設定した変数を定義している。僕の基板のピンの数を数えて設定して、ループを開始する。 もう一度言うが、僕は君たちに全てを理解して欲しいと思っているわけじゃない。コンパイルして、ロードして少しの改変を行ってくれるだけでいい。 そして、これらはC言語で書かれたバージョンだ。 さて、関連する事項としてmakefileの話をしよう。makefileはコンパイラに、どのようにC言語で書かれたプログラムをhex fileに変換するのかを伝達し、それを内部にロードする。 ●2つ目のプログラム ここに、2つ目のバージョンがある。このバージョンはふざけているように見える。なぜならば、メインループでは何も起こらないからだ。本当に何にも起こらないんだ! なぜこんな事をやっているのだろう。それは妨害を用いているんだ。僕が言う妨害というのは、こういうことだ。例えば、処理を止めて、他の処理に移るときに、メッセージが来た場合、それは妨害ハンドラと呼ばれるものを得る。 そして、ここで、プロセッサと通信した時、部品にジャンプする。 なぜならば、それらはそのイベントに妨害されたからだ。そんなわけで、これはそれはプロセッサのアテンションを管理するのに良い方法だ。 ●3つ目のプログラム そして、アセンブリ言語で書かれた3つ目のバージョンだ。 これは類似したもののように見えるが、これははるかに低レベルのもので、君たちはこれをコンパイルしない。これは基本的にダイレクトにhex codeなる。 そして、これはロードすると言う動作をする同じプログラムを3つの異なる方法で記述したものだ。

つづく 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。

閲覧数:2回0件のコメント

最新記事

すべて表示

Lesson 13. 出力デバイス §4. LEDマトリックス

●LEDマトリックス 次に紹介するのはLEDマトリックスだ。 動作しているのを見てみると、ディスプレイの一部分が表示されているのが見えるだろ? 僕はディスプレイの一部分を用いてラスタリング(画像を色のついた格子状のドットで表現すること)を行なっているんだ。 ●Charlieplexing これは便利な技で、Charlieplexingと呼ばれる。 このLEDは大量購入すると6セント

Lesson 13. 出力デバイス §3. 調光LED

●調光LED さあ、ここから僕は多くのデバイスを紹介していこう。 最初に紹介するのは、色調を変化させることのできるLEDだ。色を周期的に変えることができるんだ。 これが、その部品だ。 この部品には赤と緑の、青のLEDが1つのパッケージに含まれている。大量購入すれば、40セントで買うことができる。これらはスタジアムとかにある巨大なディスプレイに用いられていて、これがスタジアムでは1ピク

Lesson 13. 出力デバイス §2. 電源

●電源 今回の課題のゴールはたくさんのバッテリーを使うことじゃない。モバイルにしなくちゃならない場合を除いてバッテリーを使うのはお勧めしない。一般的には各Labは各種電源を取り揃えているはずだ。 今から紹介するベンダーMARLIN P. JONES & ASSOC. INC.は数多くのベンチサプライ(電源)を取り扱っている。 きっと諸君はこれらの各種電源をプロジェクトに用いることになるだ

bottom of page