いかがですか。これだけでもマイコン上で動作するプログラムがかなり軽減されていることが分かると思います。
プログラムが小さくなった一番の大きな要因は、main関数中にある「sprintf()」を省いたことです。「sprintf()」はかなりのボリュームを占めていましたので、これがなくなったのは一番大きいと思います。後は、細かく逆アセンブルした結果を見ていくと、修正前のような“時間稼ぎ”のループが減っていることが分かります。
最後に、変更したプログラムがきちんと動作しているかを確かめるために、今回は「秒」の部分だけを出力したプログラム(リスト2の98と99行目をコメントアウトしたもの)をコンパイルし、マイコンに書き込んでみましょう。
98 // P4DR.BYTE = 0x40 + hour ; 99 // P4DR.BYTE = 0x80 + minute ; 100 P4DR.BYTE = 0xC0 + sec ;
再度AKI−H8/3069Fの電源を入れる前に、「秒」の一番下のけたに相当する、ポート4の0ビット目(CN2の5番ピン)とGND(CN2の1番ピン)にLEDをつないでおきます。AKI−H8/3069Fの電源を入れ、接続したLEDが1秒ごとに点滅していれば、「秒」の一番下のビットが正しく動作しています。なお、ほかの「秒」のけたに関しても、LEDをつなぎ換えることによって動作を確認できます(ちょっとした簡易テスターですね)。表2にポート4とマザーボード上のピンの関係を示します。LEDでさらに動作の確認をしたい方は参考にしてください。
ポート4 | CN2のピン番号 |
---|---|
0ビット目 | 5 |
1ビット目 | 6 |
2ビット目 | 7 |
3ビット目 | 8 |
4ビット目 | 9 |
5ビット目 | 10 |
6ビット目 | 11(赤色のLED) |
7ビット目 | 12(緑色のLED) |
表2 ポート4とマザーボード上のCN2のピン番号との関係 |
また、ポート4の上位2ビットはマザーボード上の緑色と赤色のLEDにつながっているので、「秒」のときには識別コマンド「11」になっていることも確認できます(図3)。「時」「分」を別々に出力してマイコンに書き込めば、それに応じて2つのLEDの点灯の仕方が変わるので、識別コマンドが正しく出力されているかを確かめることができます。
システム的に許されるのであれば、LCDをコントロールする部分などはマイコン上(ソフトウェア)で行わずに、その部分を“ハードウェア”側に追い出してしまうというのが、ソフトウェアのハードウェア化の考え方です。こうすることで、ソフトウェア部分での処理が減り、その減った分で別の新たな処理を実現できます。
さて、次回はハードウェア側に追い出したソフトウェア部分を「どうやってハードウェア化するのか」「どうやってFPGAに肩代わりしてもらうのか」について具体的に見ていきます。FPGAボードの選定からツールの導入なども含めて取り上げる予定です。ご期待ください!(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.