はじめまして。 最近、H8 のメーリングリストに入会しました とやまと申します。 よろしくお願いします。 AKI-H8/3048 + QVGA LCD コンパイラ:GCC Developer Lite (内蔵 FLASH にプログラムを書き込み) AKI-H8/3048 の CPU 基板とマザーボードを QVGA LCD (240*320) に接続し、いろいろと試している所です。 ソースファイルは最後に記しますが、 GDL でコンパイルして QVGA LCD への書き込みパルス (WRB) を オシロで測定すると、周期が 8.12us (123.152 KHz) と かなり遅く感じます。 もっとパフォーマンスが高いと思っていたのですが、 これぐらいなのでしょうか。 240*400= 96000 → 96KHz となるので、今の状態ですと 1 秒に 1.3 画面ぐらいしか 書き込みができません。 今は簡単なパターンを LCD に表示していますが、将来的には FLASH メモリと接続し、VGA (640*480) に 60Hz の動画を 表示したいと考えております。(つまり静止画 60 枚を 1 秒間に 送信する) また、コンパイラの最適化オプションも試したのですが ・最適化なし (-O0) → デフォルト。WRB は 8.12us。100% boot できる ・レベル1 (-O1) → WRB は 5.24us。 QVGA LCD が boot できない時が有る また boot できても表示がくずれる ・レベル2 (-O2) → WRB は 5.12us。boot できず ・レベル3 (-O3) → WRB は 1.75us。boot できず と言う具合でした。 ○ 質問 ・最適化無しで書き込みパルス (WRB) が 8.12us と言うのは 何かコンパイルの仕方が間違っているなど、原因が有るのでしょうか。 それともこれぐらいなのでしょうか。 ・将来的には VGA (640*480) に 60Hz の動画 を目標としていますが a. コンパイラを変える b. 言語を変える (C → アセンブラ) c. マイコンを変える (SH-2 or SH-3) のどれが一番良い選択か、意見をお聞かせ下さい。 a. は gcc ではなく、どこかの Web ページでルネサスの純正コンパイラが 一番パフォーマンスが良い、と書かれているのを見ましたので。 b. は開発期間を考えると難しく c. が一番現実的かな、と思っています。 http://www.apnet.co.jp/product/superh/lineup.html を見ると AP-SH3-1A (SH7709A) 128MHz 44,000円 AP-SH3-2A (SH7709S) 192MHz 46,000円 などを選択すれば VGA 60Hz が可能なのかな、と思っています。 以上、長文となってしまいましたがアドバイスの方、どうか よろしくお願いします。 -------------------------------------------- // AKI-H8/3048 + QVGA LCD #include <3048.h> void waitus (unsigned int us) { while(us > 0) us = us - 1; } void write_ir(int reg) // 16bit (not 18bit) // INDEX REGISTER (RSB=L) { P4.DR.BYTE = 0x00; // RSB=L, WRB=L PB.DR.BYTE = reg >> 8; PA.DR.BYTE = reg; P4.DR.BYTE = 0x01; // RSB=L, WRB=H } void write_cr(int reg) // 16bit // CONTROL REGISTER & GRAM (RSB=H) { P4.DR.BYTE = 0x02; // RSB=H, WRB=L PB.DR.BYTE = reg >> 8; PA.DR.BYTE = reg; P4.DR.BYTE = 0x03; // RSB=H, WRB=H } int main(void) { int i, x, y; P4.DDR = 0xff; // ポート4 出力 P5.DDR = 0xff; // ポート5 出力 (LED) PA.DDR = 0xff; // ポートA 出力 PB.DDR = 0xff; // ポートB 出力 P5.DR.BYTE = 0xff; // 点灯 // P5.DR.BYTE = 0x00; // 消灯 waitus(65535); waitus(65535); waitus(65535); waitus(65535); // --- PowerOnSequence1 --- (省略) // --- PowerOnSequence2 --- (省略) // --- Display On Sequence --- (省略) // Address setting write_ir(0x400); write_cr(0x0031); write_ir(0x401); write_cr(0x0001); write_ir(0x402); write_cr(0x0000); write_ir(0x403); write_cr(0x018F); P5.DR.BYTE = 0x00; // 消灯 write_ir(0x202); for(i = 0; i < 1000; i++){ for(y = 0; y < 320; y++) for(x = 0; x < 240; x++) write_cr(x); P5.DR.BYTE = 0x00; // 消灯 for(y = 0; y < 320; y++) for(x = 0; x < 240; x++) write_cr(y); P5.DR.BYTE = 0xff; // 点灯 } }