アットウィキロゴ

SDカード


以前にやったSDカードのエンコードとBMPのエンコードを
OLEDにも移植しました。

苦労した点

OLED画面サイズ128*128に対してRAM領域132*132これを
しっかり初期化していなかったため、めんどくさいことに
なってしまいました。具体的にいうと表示領域が正確でな
かったために、1ピクセルづつずれた画像やRGBがうまく
定まっていない画像が表示され苦戦し続けました。

文字表示


文字データはSDから読めれば良いと考えていましたが、
最低でも英語が表示できないと苦しいことに気づき
英語の小文字のフォントのみ作りました。具体的には
SDカードが刺さっていませんという文字を表示したり
now loadingの表示に使うことになると思います。

文字表示用の関数をつくりこんな感じで使います。
draw_string(0,65,"hello thank you for seeing",26);
これは、写真の中心に表示されている文字列表示に使いました。
改行コードが来たり端まで進むと自動で改行するようにしてあります。

SRAMとの連結

画像データは48kバイトのため大きなSRAMなら
なんとか1枚分入ります。次に表示する画像を
SRAMに入れて行ければ、少しは高速な処理が可能
になるやもしれない。さらにBMPは、画像データが上下逆
に入っているためそのまま送ると逆さまに表示されてしまう。
これを回避するのにもSRAMが活躍できるのではないかと考えている。

高速化の話

DMAを使って高速にSRAM(OLEDの表示バッファ)とデータのやり取り
ができると良いと考えていましたが、この基板ではそれは、不可能
であることが判明しました。しかし、コマンドの転送速度
を計算したところ1画面文(128*128*3(色))を送るのに
53μsですむことがわかり、これを用いるだけでかなりの高速化
が期待できます。いままで、遅かったのは,

  1. 製作者のプログラムがひどい
    ビットシフトを多用するプログラムを書いていたため
    速度がかなり落ちた。
  2. PICの性能限界
    計算上はPICでもきれいなアニメーションが表示できるのでは、
    という話(ゼミ教授)もあるが、やはりPICは遅いと思われる。
    **不安要素 OLEDが内部で持っているオシレータが2MHzとそれほど早くないため
    OLED側の性能限界が結構早い段階で来る可能性がある。
    計算上は、53usなのでそれを信じるしかない!
最終更新:2009年06月04日 01:45
添付ファイル