ファイル転送をバイナリーモードにしていなかった。ファイルをもう一度、バイナリーモードで転送し直す。これでANKフォントは入ったようだ。これまでと全く変わりなくGLCDの表示が出来た。日本語ファイルを入れる。時間はかかるが正常終了。よーし、これで(5)はクリアした。(4)の日本語フォント表示関数も、そろそろ完成に近づいた。残りは、懸案の(3)のSRAMのやりくりである。GLCDのVRAMに既に1KB以上取られている上、フラッシュ上にコンスタントを移せていないのでちょっとのことでは空きが出来そうにない。これまで構想はあったが、実装をためらっていた方策をやはり実行するしかないようだ。UARTバッファーとフラッシュのデータエリアをUNION(共同体)で流用する方法である。フォントデータをファイル転送するために、UARTはダブルバッファーで100バイト以上をとっている。転送してしまえば、UARTにこんな大きなバッファーはいらない。ここにフォントデータブロックのエリアを割り当てる。エリアを共用するので、プログラムの構成を良く考えておかないと、予測不能なバグが出る可能性がある。やりたくない方法である。背に腹は代えられない。変数名が長くならないように、共用体(union)の名前をなるべく短くして(uとか、tr)プログラムを書き直す。これでやっと全部のプログラムのSRAMを、2KB(2031バイト)内に納めることが出来た。フラッシュメモリのエラーが直った(3/25/2013)ソフトはおおよそ出来上がったが、実はまだ解決しなければならない大きな問題が残っている。SPIフラッシュM25P40のreadエラーがとれないのである。単独では全くエラーが出ないのに、グラフィック液晶(SPIインターフェース)とSPIを共用するとデータエラーが頻発していた。当初は、フラッシュにパスコンを入れたり、接触不良を直したりしてエラーが出なくなっていたのだが、今度の漢字フォントのような大容量データを読み出すと再びエラーが起き始めた。漢字ブロックデータはアドレスなので1ビットでも間違いが起きれば、フォントのようにドットが欠けるくらいではすまない。エラーの出方がおかしい。単なるノイズでビットが時々乱れるのではなく、発生するときは、ある時点から連続的におかしくなる。止まっているはずのGLCDが時々動いてエラーを出しているような感じである。マスターのSPIから見れば、GLCDへは送信(MOSI)だけであり、フラッシュは殆ど受信(MISO)だけである。お互いに干渉しないはずなのにおかしい。GLCDそのものの結線をはずせば、全くエラーがなくなるので、GLCDによっておかしくなっていることは明白である。試しにGLCDの電源ラインを切ってみると、かえってエラーが増える。液晶面には、電源を切っているのに、画像が出ている!GLCDのコントローラーは動いているのだ。謎は深まるばかりである。そこで、さらにCLK線をはずしてみた。おお、これでGLCDそのものをはずした時と同じようにエラーが出なくなった。GLCDの方も完全に止まっている。GLCDのクロックラインがフラッシュのSPIのクロックに悪さをしているようだ。両者の間に300Ωばかりのダンプ抵抗を入れてみる。ふむ、GLCDはこれでも動くが、フラッシュのエラーは改善されない。えーい、こんどはダイオードだ。小電力用のダイオードを入れる。GLCDが動かなくなる。これは0.7V近く電圧降下するからか。SBD(ショットキーバリヤーダイオード)ではどうか。SBD(1S4)を入れてGLCDからの信号を遮断すると、GLCDは正常に動き、しかもフラッシュのエラーはきれいになくなった。何十回フォントデータを読み出してもエラーは起きない。いやあ、これで2バイトコードのデコード関数開発に心置きなく専念できる。これまでこのエラーが気がかりで中々先に進めなかったのだ。日本語フォントの描画に成功(3/27/2013)長かったSTM8Sのプロジェクトが大詰めに近づいてきた。当面の目標であるグラフィック液晶への漢字表示である。2バイト日本語フォント表示関数が完成したのでテストに入る。漢字コードや、フラッシュのエントリーアドレスなどをUARTに表示するテストステートメントをびっしり入れたお陰で順調にバグがとれ、画面にそれらしい漢字データがあらわれた。あのデータブロックの計算はうまく行っているようだ。この部分は一発で通った。指定どおりの漢字が出る。嬉しくて何枚も記念撮影する。一字づつ16進コードを入れて漢字をひとつ表示するだけだが、表示の度にキーボードの前で何度もガッツポーズを作る。時間がかかっているのだ。ブログの記事によれば、STM8Sを触り始めたのが、去年の11月、グラフィック液晶をつないだのが、2ヶ月前の1月、かれこれ5ヶ月近くこれにかかわっている。STM8SがAVRに比べて有利な点を持っているわけではない。情報も少ないし、余りメリットはないのだが、日本語が出るまでと意地になっていた。コードを追加して、エンドレスに漢字が表示されるようにする。おやあ、途中で文字が化けてしまう。ファイル転送は、PCにおけるデータ数と同じ転送バイト数を示しているのでデータエラーは考えられない。うーむ、今までの高揚した気分が一気に落ち込む。文字化けし始める漢字コードを探し当てる。8C49「栗」というコードからおかしい。ふーむ、この文字のポインター(ファイルのエントリーからの)と、ひとつ前の8C48「粂」の違いは?あ、あ、あ、わかった。セクター消去を3セクターまでしかやっていない。「栗」からは4セクターに入るんだ。ダンプリストを作っておいて良かった。アドレスの違いが一目でわかった。あわてて、フラッシュメモリを7セクターまで消去し、フォントファイルを入れ直す。第二水準の一番最後の文字まで画面に出ることを確認した。STM8Sの日本語フォント表示プロジェクトは大団円となったようである。次のテーマも良いが、長い間の付き合いでこのSTM8SとGLCDに妙に愛着が出てきた。ブレッドボードのバラックではなくて、ちゃんとした基板に実装してあげようか。ここに作りかけのソースコードですが、以上の漢字が出力されるプログラムをSTVDプロジェクトの形で固めたものを置きます(フォントは入っています)。以前同様、ライブラリは入っていません。容量の関係で、ビルドは最初からやってください。連続して漢字が表示されます。中断はスペースキー、終了はリターンキーです。半年ぶりのブログ更新に漕ぎつけた(2019.09.19)研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)ドングルのHFコンバーターでJJY標準電波は見えたか(2018.12.12)JJY電波を見るため、RF(高周波)の世界に踏み込む(2018.10.31)ESP8266のJJY電波時計のスケッチ公開(2018.10.02)「STM8S」カテゴリの記事STM8Sでグラフィック液晶に漢字をスクロール表示する(2013.04.26)STM8Sとモノクログラフィック液晶を基板に実装する(2013.04.14)STM8Sでグラフィック液晶に日本語文字が表示できた(2013.03.30)リニアPCMプレーヤーのデバッグで電子工作に戻る(2013.03.17)STM8Sでグラフィック液晶に文字を表示することに成功(2013.02.14)コメントひなたぼっこさん、ブログを見ていただきありがとうございます。>質問1.STM8Sの意味が解りませんが、このブログの左側にある検索の欄に、「このブログ内で検索」の条件で検索してみてください。具体的に理解できるでしょう。>質問2.JCG12864_330.ZIPファイルについてこれはソースリストだけです。回路図は、この記事の2つ前の「STM8Sでグラフィック液晶に文字を表示することに成功」にPNGファイルで掲載しています。初心者の方には難しいかもしれませんね。申し訳ありませんが、当面AVRでの開発予定はありません。AVRでの日本語表示例は数多く見かけますので、根気よく探してみてください。ソースが見つかると思いますよ。12時50分はじめまして。私、atmega88などで、秋月電商で売られてます、グフィック液晶LCDを使用して、漢字表示の勉強をしたいと思っています。質問1.STM8Sの意味が解りませんが、これは特殊なCPU名でしょうか。atmega88などを使用して、設計、製作されて、居られる事を、希望致します。望まれると思いますが、いかがですか。18時32分がた老さん、毎度です。経験からすると、ケースに入れると道具として実用品になるように思います。今回作った大気圧計もケースを作って活躍して貰う予定です。がた老さんも、アクリル板曲げ器をお持ちなので、いちどケースを作られてらいかがですか!図面を書いてケースを作るのは、これはこれで楽しいですょ。22時16分ばんとさん、お久しぶりです。嬉しいものですよ(ガイガーカウンターは貰われていったし、プレーヤーはユーザーがいるし)。いうことにならないよう、「実用」というのを最大の条件にして、手段が目的にならぬようにしてるわけです。「解けたクイズ」ってのは言い当ててますね。