« 2012年2月 | トップページ | 2012年4月 »

2012年3月の2件の記事

2012年3月25日 (日)

STマイクロのライブラリでSTM32F107のI2Cを動かす

 STM32F107とTFT液晶でグラフィック気圧計を作るプロジェクトは、ベースになるファイラーの使用文字を作者のねむいさんの支援で元の8ドット文字(美咲フォント)から少し大きい10ドット文字(M+フォント)に換えることに成功した。文字を見やすくするためと、グラフィックの勉強を兼ねた修正である。

 プロジェクトの目的は気圧計なので、そろそろ気圧センサーの実装を始めないといけないのだが、はやる気持ちを少しおさえて、さらにTFT液晶の画像処理の勉強を続ける。画面仕様はおおよそ出来ているが、どれだけのことがこの液晶コントローラーで出来るか見極めておかないと先の工作の効率に響くからである(昔の仕事時代を含めて何度も痛い目にあっている)。

S_p3254809

ファイラーを繰り返し動かすことに成功(3/13/2012)
 前にも書いたが、ねむいさんから頂いたTFT液晶のファイラーのソースは、大元はChaNさんのFatFSをSTM32に移植したMartin Thomas氏のソースがオリジナルで、ねむいさんが開発されたファイラーは、このThomas氏のFatFSブロックに間借りする形で入っている。escキーでこれを一旦抜けると、FatFSの機能テスト部に入ったままになり、ファイラーには戻ってこない仕様になっている。

 気圧計は、このファイラーを使うのか、全く独自に作り直すのかまだ決めていないが、このあたりをもう少し動かしてプログラム全体の解析を進めることにした。ファイラーを度々動かしたいので、とりあえずFatFSからファイラーに戻るようにしたが、そのままではファイラーはエラーを吐いてreusableになってくれない。このトラブルシューティングが先だ。

 ファイラーのFatFSあたりの処理を詳しく解析する。各種のサイズの液晶にコンパクトにファイル名やファイルサイズを表示し、ディレクトリ項目でのエンターキーでサブディレクトリに表示を換える手法、ファイルの数が画面を越えたときのスクロールなど、今度の気圧計にはこんな複雑なことはしないで良いのだが、読んでいるだけでとてもためになる。

 ファイラーが、最初は動いて2回目にエラーになる原因は見当がついている。ソースコードをさらに追う。その結果、当初の予想通り、ルートディレクトリを指示するデータエリアが汚れたまま最初に戻るのが原因であることがわかる。ファイラーを動かす前にディレクトリパスを収容するエリアに文字列の終端文字\0を

Line[0] = '\0';

で、クリアすると、ファイラーは何度でも繰り返し実行が可能になった。こんな感じで中味がわかって来ると、ソースの解析は楽しくなる。それぞれの関数が何をやっているのか明確になってくる。ちょうど濃い霧が晴れて周りが見え始めると、急に全体が見通せるようになるのと同じである。

 BMPファイルを読んで描画するところなどが特に参考になる。だいぶ理解が進んだので、グラフを描くための実際の関数の開発計画をたてて、気圧グラフ描画に必要な機能の組み合わせを考える。今のところ直線(縦横)と領域の薄い塗りつぶし、任意の位置での文字出力、画像の重複の処理(重ねるか、描き直すか)などの機能があれば大体思ったようなグラフは作れそうだ。

 直線は、1ラインのレクタングルで描くことになるが、性能的には直接GRAMに書き込む方法もありそうなので、色々調べる。気圧のグラフは、およそ2日間のデータを画面の上部に表示し、その下をテキストエリアにする予定である。更新は今のところ10分に一回で、動画的な要素は全く考える必要はない。しかし、まあ、そこは、凝り性の所長の習い性である。あれこれ調べるのが楽しい。

気圧センサーMPL115A2とI2CフラッシュROMを実装する(3/16/2012)
 グラフの描画に目処がついたので、いよいよハードウエアの実装を始めることにした。既に買ってあった気圧センサーMPL115を基板に取り付ける工作である。取り付ける場所は、2層目のSDカード基板である。

 グラフを出すための気圧データの蓄積はSDカードでも良いが、気圧センサーのインターフェースがI2Cなので、I2CフラッシュROMも実装して、そこにデータを入れることにした。I2CフラッシュROMは以前、フォトフレームの時に買って使っていないのが余っている。丁度良い機会である。

S_p3254818

 手持ちのI2CフラッシュROMは、いくつか種類がある。最初、千石でROHMの16KビットのBR24S16(¥100)を買い、その後、秋月でもっと安くて大容量のチップを見つけて入手した。マイクロチップの24FC256と、24FC1025である(256Kbitで¥90と1Mbit!で¥250)。今度の気圧計では300ドットくらいのグラフにする予定なので、16Kbit(2KB)は小さすぎ、256kbitの24FC256が適当だろう。

 次は気圧センサーである。部品箱に大事にしまってあったMPL115A2を取り出す。この石は、去年の11月、O-familyさんが掲示板で、メーカーのサンプルソースに疑問を投げかけられたときに、ちょっとコメントしたのが縁で、自分も欲しくなり、秋月で衝動買い(キット¥700)したまま4ヶ月以上放置されていたものである。

 気圧センサーとしては、市場にはこれより数段精度の高いBMP085というICがある。これはMPL115より、精度が2桁近く高い(MPL115が±1.5hPaに対し、±0.03hPa)。高度計としての利用を考えているようで、この精度だと1mの高度差まで測れる。

 スイッチサイエンスで基板つきで¥1990で売っている(現在売り切れ。共立エレショップが同価格で売っている)。digikeyでは単品が¥677で買える。ただし、パッケージが面実装のLCC8ピンなので、電極が外面に出ていない。まともに基板にハンダ付けしようと思うとクリーム半田またはホットガンが要る(裏返して実装すれば配線可能だが)。

 精度の高い石にも食指は動くが、こちらは高度を測るのではなく、長期の気圧変化を調べて、天気の予報をしようというのが目的である。ここまでの精度は不要である。当初の予定通りMPL115で実装を進める。

気圧センサーの実装は、この基板以外への移設を考慮してソケットをつける。秋月でおまけに付いているヘッダーピンは、少し長すぎて丸ピンソケットからはみ出るので、ニッパーでピンを短くする。I2CフラッシュROMも、8ピンのソケットにする。

 配線は、2線のI2Cなので簡単である。データとクロックラインに、気圧センサーとフラッシュROMに共通のプルアップ抵抗を入れる。STM32F107のI2Cは2つあり、I2C1につなぐ(PB6とPB7)。アートワークを描くまでもなかったが、念のため作っておいたので、実際の作業は、あっけなく終了した。ちょっと物足らないくらいである。電源のLPFなどはあとで様子を見ながら入れることにする。

グラフィック気圧計の仕様を考える(3/19/2012)
 気圧センサーMPL115を使った気圧計としては、既にO-FamilyさんがAVRを使って実装され、サイトには、ケースに入った立派な時計つき天気予報計が既に作品としてラインナップされている。基板、回路図、ファームまで全て公開されており、至れり尽くせりの措置だ。すんさんもこのセンサーを使ってグラフィック気圧計を作られている。

 当研究所の気圧計は、この二番煎じ、三番煎じということで特に目新しいところは何もない。しいてあげればSTM32を使っていることが違うだけである。高度計として使うのなら電池式や、可搬性を考えるところだが、2日間のデータをもとに出す天気予報計が動き回ることは通常考えられないから、電源は最初から、ACアダプター仕様と割り切ることにする。

 画面仕様は、TFT液晶の解像度240X320で、当面は開発ベースのファイラーと同じ、縦型として使い、グラフは上から下へ時系列として一番下部を最新データとする。

 時間が経過すれば、グラフがそっくり上へ移動して行き、2日間程度の気圧推移を常に表示する。電源を切って測定していない間のデータは出さないで、あるだけのデータが表示される。つまりグラフを表示する時は、現在時刻よりさかのぼってあるだけのデータのドットをグラフに表示する(歯抜けになっても、存在するデータは範囲内であれば表示する)。

 移動平均くらいは表示したいところだ。グラフの縦のドットは下に30ドット(3行)のテキストエリアをつけるとすると280ドット、2日間として1日あたり140ドット24時間とすると、1時間が6ドット足らず。つまり10分に1ドットで48時間で288ドット。テキストは、現在日時に1行、現在気圧の表示に1行、現在の予報に1行で計3行というところか。全体的な画面仕様は決まった。

 制御するところは余りない。データログはUARTから出せばよいだろう。電源を入れれば、10分ごとにデータを記録し蓄積していく。年月日時分単位にデータを蓄積してROMに入れていき、最大まで蓄積すれば、古いものから消していく。

STマイクロのI2Cライブラリを使う(3/22/2012)
 大まかな仕様はかたまった。細かいところは先の話として、次にやるべきことは、MPL115A2を動かすことである。MPL115A2のインターフェースはI2Cで(SPIのA1というのもある)、最初はねむいさんが開発された例の超小型LCD用のGPIOで構成した簡便な手作りソースコードを流用させて貰おうと思っていた。

 しかし、フラッシュROMをつけることもあるし、せっかくだから、STマイクロの提供するライブラリを使って、少し本格的なI2Cインターフェースを構築することにした。

 意外なことに、STマイクロのI2Cライブラリの応用例がウェブ上では余り見かけない。ただ、こちらには、恰好の参考資料がある。例の弁護士さんの書いた「STM32マイコン徹底入門」である。ここには、STマイクロの提供するI2Cライブラリを使った制作例が詳しく18ページかけて載っている。

 ただし、ウェブには、このSTマイクロのライブラリを疑問視するこんなサイトもある。http://www.yza.jp/blog/2010/03/stm32_i2c/ どうもエラー処理がまずいようだ。「徹底入門」もこのとおりにしないとうまく動かないと注意書きがある。

 まあ、ここは忠実に、作例にならってプログラムを組むことにした。長たらしい変数と関数を地道に書いた。ただ、「徹底入門」の提供するソースには初心者にとって致命的な問題がある。機種依存のハードウエアの設定部分が、すべて未定義エラーになる。

 こちらは、既にSTマイクロのライブラリを何種類か利用しているので、何を使えば良いか、すぐわかったが、これをどうするかは、本文のどこにも載っていない(こちらが調べた限り)。初心者は恐らくこのソースコードを忠実に写しても、この未定義変数をどうすれば良いのかで途方に暮れるだろう。

 テストはロジアナを積極的に活用した。まずFatFSの各種の機能を動かすメニューに、UARTのコマンドを追加して、スタートコンディションだけを出すプログラムを組む。それをロジアナでSDA,SCLの2ラインを監視して動作することを確かめる。いつも愛用させてもらっているkuman流の逐次開発手法である。

 次に、マスターWriteリクエストのデータ送信のところまで入れて、スレーブ(MPL115)からのACKが帰ってくることをロジアナで確かめる。ロジアナはI2Cプロトコルが見えるような設定にしておく。

Mpl115i2c おお、ちゃんとACKが帰ってきた。続いてMPL115の測定開始のコマンド、データの受け取りと少しづつコマンドを増やして、無事、気圧と温度データが送られてくるのを確認した。

 ここまで来ると、あとは楽だと思ったのが落とし穴だった。最後の12ヶの補正用の係数データの受信がどうもうまく動かない。最初のデータは来るが、あとはみんな0xFFばかりで、正しいデータを送ってきていないようだ。

 スタートコンディションを再発行(restart)したり、ACKのdisableコマンド(最後のデータ受信のときにNACKを返す)を出す位置を替えたりしているうち、突然、データが正しく送られてくるようになった。何が悪かったのか良くわからないというのがつらいところだが、うまく動くシーケンスになったことは間違いない。まあ、あまり深く追求するのはやめよう。

ここに、MPL115A2を動かす、STM32F107用のI2Cライブラリをzipファイルにして置きます。
I2C_1.cとI2C_1.hが、I2Cの汎用部、MPL115.cと、MPL115.hが、MPL115固有の関数です。
MPL115_Init(); MPL115_Start();で計測が始まり、MPL115_getdataとMPL115_getcoefで、データが
MPL115.hで定義した構造体に収容されます。


「I2Clibrary.zip」をダウンロード

 とりあえずは順調にMPL115A2からすべてのデータが送られてくるようになった。あとはあの膨大な係数で観測値の補正をすることだが、それにしてもこれだけ簡単に動くようになったのは、O-FamilyさんのMPL115の日本語マニュアルが助けになったことは間違いない。これがあったお陰で開発は迷うことなく一本道だった。あらためて感謝を申し上げておきたい。

Mpl115 マニュアルには、12個もある係数値による測定値の補正ロジックが紹介され、O-Familyさんは、律義にBASCOMで全部の係数の計算式を入れておられるようだが、どうもここまでやる必要があるか迷うところである。だいいち係数の最後の4つはいつ出力しても0になっているし、サンプルソースも小数点以下はすべて切り捨てているようだ。

 そもそもセンサーの測定誤差が、1.5hPaと小数点以上であり、ADコンバーター(10ビット)の分解能そのものが、0.635hPaとかなり大きいので、細かい小数点以下の補正をする意味が余りないような感じもする。すんさんが掲示板で書いていたように、サンプルを多数測定して平均をとる方が精度が高くなるような気もする。

 これらの補正や、フラッシュROMへの蓄積など、気圧計の完成までにはまだ道のりは長いが、気圧センサーからの測定値が出たところで、とりあえずブログに報告することにする。

| | コメント (1) | トラックバック (0)

2012年3月13日 (火)

STM32F107のTFT液晶のフォントを大きくする

 東日本大震災から1年が経った。かけがいのない人を失った方々をどうお慰めしてよいか言葉が見当たらない。せめて何かお役に立つことをしてあげたいという気持ちは当然のこととして、生きのびた我々の努めは、貴重な自分の命を、亡くなった人の分まで有意義に使うことだろう。

 そういう意味で、本来、生きている楽しみと喜びのためにやっている趣味の世界で、一部の心無い人のために、長年のみんなの交流の場であったkumanさんの掲示板が閉鎖された出来事は、残念でならない。

 昔の飲み屋には、人のやっていることが気になって何にでも首を突っ込みたがり、訳知り顔で見当はずれの講釈を得々と披露する常連の爺さんが一人や二人必ず居たもので、みんな適当にいなしたり、時には話を聞いてやり(右から左に聞き流すだけだけど)、愉快に一緒に飲んでいた。

 たまに話がこじれて危ない場面になると、さりげなく店のお姐さんが割り込んで、話題をそらし、その場をおさめる。場が荒れれば店の売り上げに響くからである。しかし、それでも言うことを聞かない客を追い出すときの姐さんの迫力は凄かった。なまじのチンピラなら震え上がるタンカを聞いて、姐さんを惚れ直したものである。

 全く対価も得ず単なる好意で開設している電子掲示板の管理人にここまで期待することは酷というものだろう。参加する人々全員が、自覚を持って場を盛り立てる意識を持たないと、結局みずからの楽しむ場所を失うことになる。

S_p3114789 それにしても、社会全体が、雰囲気として「不寛容」になっていることを感ずる。モンスターペアレントや、徹底した嫌煙、極端なまでの「臭い」に対する潔癖などの、最近の風潮は、昔の大人(おとな)の条件、「清濁併せ呑む度量と、悪に対する毅然とした個々の自律した行動力」が失われていることを物語る。

 それはともかく、ブログの更新が20日以上滞ってしまった。3月はいつものように多忙なシーズンで、例年通りの所属団体の全国集会の準備と、恒例のスキー行、確定申告などの、雑用、遊び、仕事のほかに、今年は、娘の嫁入り準備(え、いやアッシーを引き受けるくらいですが)に時間をとられて、電子工作にまとまった時間がとれない。

 TFT液晶でグラフを表示させる気圧計プロジェクトは、やっと液晶に画面が出たことで一気に肩の力が抜けてしまい、先に進む意欲を失った。そんなこともあって落穂ひろいのような工作を細々と続けている(3月12日 記)。

RTCの電池バックアップとリマップされたUART2を基板のRS232Cに接続する(2/20/2012) 
 Aitendoの生基板から作ったSTM32F107基板は、240X320ドットの2.4インチTFT液晶(YHY024006A)にSDカードのファイラーが動いてプロジェクトは一段落した。しかし動いたと言っても、単にネットから人さまの作ったソースコードをダウンロードしてきてビルドしたものが動いたというだけのレベルである。

 今回は、細かい計画を立てずにあてずっぽうでプロジェクトを進めているので進捗が悪い。まあ仕事ではないので、大げさに考えることはないのだが、こういう作業の進め方は確かに効率が良くない。今後の反省材料である。

S_p3124801 次のステップは、気圧の推移を表すグラフを画面上に表示することだが、このTFT液晶での描画ロジックはまだ全くわかっていない。コントローラーのデータシートは手に入れているが、ソースコードは何層にも階層化されており、ちょっと見ただけで修正が出来るレベルではない。ハードルが高い。それでもコードを少しづつ辿ってロジックを勉強しはじめる。それと一緒に気圧計を動かすための周辺のハード機能の整備も始めた。

 まず、気圧の表示では実際の年月日が必須なので、RTCをまともに動かしてやらねばならない。Vccと直結されているVbatをボタン電池でバックアップする工作を始めた。この工作は前に何度もやっている。手馴れた工作だ。

 CPUチップの背中にカプトンテープと瞬間接着剤で、ボタン電池フォルダーをつける。UEW線で基板のVbatパターンと接続する。問題なく動いた。これで電源を切っても、時刻を刻んでくれる。

 次は、リマップされたUART2まわりの整備である。リマップされたUART2のPD5,PD6は別のピンヘッダーを追加して、そこに出しているが、せっかくRS232Cインターフェースがついているのに(AN3202)、元のUART2ピン(PA2,3)が使えないのは無駄である。基板上で接続換えをする。

S_p3124803 基板上のパターンを切り、0.2mmのUEW線を裏に配線する。シリアルへのパターンを切られた元のPA2,PA3は基板上のソケットに出ているのでこれらのピンは汎用GPIOに使える。

 こういう細かい作業をしていると時間を忘れる。これも一種の中毒かも知れない。テストする。始め、動かなくて焦ったが、ハンダ不良がみつかり(例のUEW線のハンダ不良)、これも問題なく動いた。シリアルアダプターがひとつ減らせて机の上が少しすっきりした。

描画のロジックの分析を進める。だいぶわかってきた(2/24/2012) 
 ソースの解析を少しづつ進めている。このねむいさんのソースは、どうももともとはMartin Thomas氏のSTM32版のFatFSがオリジナルなようで、これが構造上残っている。そのため少し無駄な動きがある。mainループは2つの大きなプロセスをUARTからのコマンド入力でスイッチするようになっているが、調べた限りでは、もう一方の部分は動いていないようだ。

 TFT画面のコントロールは、filer()というモジュールにつめこまれている。その下の画面の操作関数は、ほぼ全てがts.cにある。filer()そのものは、FatFSのプロセスの最初に入っていて、一旦これを抜けると、それ以降はすべてUARTでの操作に限定されてしまい、元へ戻ることが出来ない。グラフィック気圧計に向けて大まかな制御をどうするかで頭を悩ます。

 そのうち、BMP(ビットマップ形式)ファイル表示のソース解析をしていて、キーボード入力で画像をずらして全体を表示できる機能を発見した。これは便利だ。いくつかのBMPファイルを入れて楽しむ。ただ、速度はこのコードでは余り速くない。BMPでの全画面の動画は無理なようだ。

S_p3104778 shuji009さんから画面の横向け表示をお願いされた。それもやりたいが、こちらの不満は、今の8ドットの美咲フォントが小さくて視認性が良くないことである(年をとると細かい字が苦手になる)。Makefileとソースを見ると、10ドット×10ドットのM+フォントが実装されているようなので、これを入れようとあれこれいじるが、これがどうもうまく動かない。

 やっとビルドが通ったと思ったら、フラッシュサイズオーバーフローで振り出しに戻る。FatFSをReadOnlyにしたり、不要と思われるファイラーのコマンドを減らしたりしてメモリを縮めるが、あと10KBが減らない。ChaNさんのコードはさすがである。コードの効率が高い。ロジックをなくしても、フラッシュは思った程減ってくれない。

 徐々にTFT液晶の描画ロジックがわかってきた。始めは、リニアーなVRAMアドレスを2バイトごとにアクセスしてなどと大層に考えていたが、コマンドで方形の描画領域(rectangle)を指定すれば、そのなかでのデータをピクセル単位に線形に送るだけで描画できることがわかった。

 しかも、このとき方向と始点を指定して描画が出来る。ひとつひとつビットマップデータを細工しなくても文字が縦横表示できる理屈だ。これは楽だ。グラフや、JPEGなどの行単位のデータは、細いレクタングルを指定すればよい。

本題の電子工作は一時お休みしてLM2735のDCDCコンバーターをつくる(2/26/2012)

 レクタングルで縦横の描画が出来ることまでつきとめると、また、すっかり安心してしまって、先に進まなくなった。いつもの悪い癖である。しかも、確定申告の日程がせまってきたり、次女の縁談の行事があったりして、気持ちが集中できない。こういうときは、何も考えずに手を動かす工作をしていると気が紛れる。

 これまでメインの工作とは別に、少しづつ準備していた工作を本式に開始した。リチウム電池を使った9Vの乾電池006Pの代替品を作る計画である。

S_p3114783 006P乾電池は、楽器のチューニングメーターや、このあいだ手に入れた秋月のDCM、ストロベリーリナックスのLCメーターなど、ちょっと古い電子機器では定番の電池だが、結構消耗が早く交換がばかにならない。これと同じ大きさで、リチウム充電池とDC-DCコンバーターで9Vをだす装置をつくろうというものである。

 リチウム電池は扱いが一般には極めて難しい。ゲーム機やデジカメのバッテリーとしては売られているが、部品の形で一般の市場に出回ることは殆どない。特にリード線の出た電子工作に使えるような汎用品が店頭に出ることは滅多にない。事故がこわいのだろう。

 もちろん全く売ってないわけではない。売ってはいるがべらぼうに高い。秋葉原あたりの大手の部品店にあるリチウムバッテリーは保護回路がついているらしく小さなものでも¥1000以上する。

 しかし、こちらはこれまでLPCMプレーヤーで、充電用のICを何種類か使用してノウハウが溜まっている。充電用のICで充電している限りはまず安心だ。去年、インドアプレーンの通販サイトで端子タブのついた手頃なリチウムバッテリーを見つけ3個ほど買ってあった。

S_p1074568 届いたリチウム電池の写真である。郵便で届いた。350mAhふたつと240mAhひとつ。この店では、それぞれ¥450と¥350。但し端子タブがでているだけで、リード線などは自分で付けなければならない。

 開封して中味を確かめる。おや、この端子、アルミではないかい。どういうつもりだろう。素人にいじらせたくないということか。実際に試してみる。フラックスを十分つけて慎重に半田ごてをあててみた。いやアルミではなかった。簡単にハンダが乗った。2つの電池にリード線をつける。カプトンテープで絶縁し、2Pのコネクターでリード線を出す。

 DC-DCコンバーターのICはLM2735である。CHANEYのガイガーカウンターキットの電源にこの前使った。元々は、ストロベリーリナックスで買った9~20VのDC-DCコンバーターで使われていたICである。フォトフレームの時にこれを使って調子が良いのでDigiKeyでICだけ入手した。

 今度もDigiKeyで、このあいだのDragonを買うときの送料のゲタに3つ買ってあった。これを006Pの電池サイズにリチウム電池と一緒に実装できる大きさの基板につめこまなければいけない。

 久しぶりにアートワークを真面目に作ってあれこれ検討する。楽しい。ガイガーカウンターのときのコンバーターと違って、リセットICを使った過放電防止回路まで内蔵させる。苦労の結果、前より大分小さくすることが出来た。006Pのスペースにコネクターごと入りそうだ。嬉々として実装に入る。こういう何も考えずに小さな部品を基板に詰め込む作業は理屈ぬきに面白い。

S_p3114786 出来上がった。気楽に通電する。この前は一発で動いたので軽く見ていたが、今度はピクリとも動かない。そのうち配線間違いを発見して(補償コンデンサーの位置まちがい)、修正したがなおも動かない。ストレス解消の工作が、かえってストレスを増加させる工作になってしまった。

 あちこち触った挙句、わかった原因はLM2735の不良だった。どこかで壊したのだろうか。補償コンデンサーの配線違いだけで壊れるのだろうか。いずれにしてもチップを取り替えたら、何の問題なく9Vが出た。逆電圧をかけたのかもしれないが、気分が悪い。

ねむいさんに助けられてフォント大型化に成功(3/11/2012)
 団体の全国集会(といっても大阪と名古屋だけだが)で出張先の京都から帰ってきた。そろそろ、TFT液晶のプロジェクトも再開しないといけない。過放電防止回路のついたLM2735の長期テスト(電圧低下のときのリセットICの振る舞いの確認)をやりながら、久しぶりに工作室にこもってEclipseを開き、TFT液晶の10ドットフォントの表示に挑戦する。

 グラフィック気圧計は画面仕様も確定していない。そうなると、やるべき方向が具体的に決まらず、散乱した調べ方になるので非常に効率が悪い。こういう開発をしてはいけないという典型的なパターンだが、もう今さら元へ戻るわけにもいかない。既定路線で行くしかない。

 そうこうするうち、問い合わせていた、ねむいさんから朗報が届いた。メモリリダクションの手順である。コンパイラー最適オプションは、オリジナルは速度重視で、フラッシュ節約重視ではなかったこと、FatFSの日本語ファイル名表示で必須と思われていたLFN(LongFileName)は、必ずしもそうではなく64KBのコードブックは省略できることなどを教えられた。

S_p3114800

 喜び勇んでMakefileを修正する。コンパイラーオプションは残しておいて、LFNだけ無効にする。祈る気持ちでビルド。おおー、通った。サイズは220KBばかり。そりゃそうだ、64KB丸々減ったのだから。

 テストする。よーし、10ドットのM+フォントが出た。うーむ、思ったほど大きくならないな。しかし、肉眼でファイル名は読める(8ドットでは虫眼鏡が必要なくらい小さい)。やれやれ、やっと懸案のひとつが片付いた。中途半端だけれど、このあたりでブログに報告することにする。

| | コメント (0) | トラックバック (0)

« 2012年2月 | トップページ | 2012年4月 »