| ファイル名 | 説明 |
|---|---|
| ezusb/ | EZ-USB用 |
| test_rtos/ | リアルタイムOS動作確認 |
| Makefile | メイクファイル |
| config.h | コンフィグファイル |
| test.c | テストソースファイル |
| flash_writer/ | フラッシュライター |
| Makefile | メイクファイル |
| config.h | コンフィグファイル |
| cmd.h | USBコマンド定義ヘッダファイル |
| cmd_tsk.c | USBコマンドタスクソースファイル |
| usb_dscr.c | USBディスクリプタ定義ファイル |
| ezusb_fx2/ | EZ-USB FX2LP用 |
| test_rtos/ | リアルタイムOS動作確認 |
| Makefile | メイクファイル |
| config.h | コンフィグファイル |
| test.c | テストソースファイル |
| font_aqm0802.c | AQM0802フォントパターンファイル |
| test_sdc/ | SDCカードドライバ動作確認 |
| Makefile | メイクファイル |
| config.h | コンフィグファイル |
| test.c | テストソースファイル |
| flash_writer/ | フラッシュライター |
| Makefile | メイクファイル |
| config.h | コンフィグファイル |
| cmd.h | USBコマンド定義ヘッダファイル |
| cmd_tsk.c | USBコマンドタスクソースファイル |
| usb_dscr.c | USBディスクリプタ定義ファイル |
| en29f002.c | EN29f002ドライバソースファイル |
| en29f002.h | EN29f002ドライバヘッダファイル |
| convroller/ | コントローラUSB変換 |
| Makefile | メイクファイル |
| convroller_tsk.c | 変換タスクソースファイル |
| config.h | コンフィグファイル |
| usb_dscr.c | USBディスクリプタ定義ファイル |
PLCCのフラッシュメモリEN29F002Tのライターが必要になったので、EZ-USB FX2LP(CY7C68013A-56)用のファームとWindowsアプリを作成しました。
ついでなのでI2Cの24C系のEEPROMと、Microwireの93C系もサポートしています。
一応 EZ-USB(AN2131SC)用も作成してありますが、I2Cの24C系のEEPROMと、Microwireの93C系のみサポートしたファームとなっています(ピン数が足りない為だが、SPIやI2CのI/Oエキスパンダを使用すれば対応可能)。
EZ-USB用は、"mcs51/ez-usb/flash_writer"、EZ-USB FX2LP用は、"mcs51/ez-usb_fx2/flash_writer" をビルドしファームを生成します。
上記ビルドで生成したファームを書き込み後、Windowsアプリ(FlashWriter.exe)をダウンロード・実行し、読み書き・消去を行います。
※ハード側は全くの素人なので、とりあえず動いているのでOKとしています。
詳しい方からの指摘を頂けると非常に助かります。
| インタフェース | 型番 |
|---|---|
| PLCC | EN29F002T |
| I2C | 24LC64 |
| I2C | 24LC128 |
| I2C | 24LC256 |
| I2C | 24LC512 |
| I2C | 24LC1025 |
| I2C | AT24C256 |
| I2C | AT24C256B |
| I2C | AT24C1024B |
| Microwire | AT93C46(8bit) |
| Microwire | AT93C56(8bit) |
| Microwire | AT93C86(8bit) |
以前、EZ-USBで作成したことのあるメガドライブ、ファミコンのコントローラUSB変換を、EZ-USB FX2LPのrtosで動作するように移植しました。
対応しているのはEZ-USB FX2LPのみで、"mcs51/ez-usb_fx2/convroller" をビルドしファームを生成します。
上記でビルドで生成したファームを書き込むことでHIDデバイスとして認識します。
また、EZ-USB FX2LPを使用しているため、RAMと処理速度には余裕がありますので、いくつかの機能を追加してあります。
※ハード側は全くの素人なので、とりあえず動いているのでOKとしています。
詳しい方からの指摘を頂けると非常に助かります。
| 部品 | 数 |
|---|---|
| MCP3002 | 1 |
| タクトスイッチ | 2 |
| LED | 2 |
| D-SUB 9Pと変換基板 | 2 |
| 2x5のピンソケット | 2 |
| 1x4のピンソケット(シリアルコンソール用) | 1 |
| DIPSW-2(I2Cのスレーブアドレス変更用) | 1 |
コントローラ
タスク1がコンソールに'#'、タスク2がコンソールに'-'を出し続けている状態で、周期ハンドラでタスクを切り替える簡単なテストアプリ。
ADCタスクでA/D変換、結果を描画タスクでLCDのF12864G25412P1701へ電圧の波形で描画、気圧変換タスクで気圧を取得しながらAQM0802Aへ結果を表示するテストアプリ。
1秒毎にSDCカードから画像を読み込みながら、LCD Driver ILI9325のスクロール機能を使用してLCD LM024C9325へ描画するテストアプリ。
SDCCはフリーと言うのはうれしいのですが、バグ(仕様?)が多いです。
MCS-51の場合、ドキュメントに書かれているアセンブラの疑似命令をサポートしていなかったり、最新のバージョンだからと言って何もバグが改善されていないのでMCS-51はメンテされていないのでしょうね。
今回使用していて発生した問題(仕様?)をメモっておきます。
他にもあったと思いますが忘れました。
MCS-51でこのコンパイラを使用したい場合、アセンブリ言語の知識が100%必要、また、KEILで開発する時に比べ10倍以上の時間が掛かると考えた方が良いです。
EZ-USB以外のMCS-51を採用しているデバイスは分かりませんが、いまさらEZ-USBで開発することはほとんどないと思いますので、開発するならKEILを使用することを推奨します。