気分を変えて、同期シリアル通信でキャラクタ液晶を制御したいと考えた。
結論から書くと、以下の2点の課題から、表示速度はすこぶる遅い。
1.仲介役のPICマイコンの動作速度は4MHz(内臓のオシレーターを使ったため)
2.やっぱりGPIO出力が間延びするから1クロック4msのディレーを入れた
16文字のデータを送るのに、現状1.3秒かかる。
いざまとめるとこんなものなのだけど、なかなか時間がかかったし、
間延び問題が気になる・・・。
ハード
FON2405EのGPIO---CLK,DATA---PICマイコン---キャラクタ液晶
ソフト
1.gpioのドライバ
2.gpioのアプリ
3.PICマイコンのファーム
1.gpioのドライバ
標準のものから変更なし
RALINK_GPIO_WRITE_BYTEを使用。
今までの試行錯誤は何だったんだ・・・・。
2.gpioのアプリ
変更点
オプション[s]を追加
s <gpio clk> <gpio data> <delaytime> <char>
これを指定するとgptio_test_write_srを呼ぶようにした。
usleepを使うと4ms以下にはならないようだし、
ドライバの方で、udelayを使って短くしても、
前回の間延び問題のように不安定になってしまう。
なので、CLKの変化のタイミングだけusleepを使って、
DATAのセット部分はディレーなしにした。
多少は速くなった。
3.PICマイコンのファーム
変更点
1ms毎にタイマー割り込みを行って、
CLKがH→L(立ち下がり)のタイミングを探す。
更に1ms経過してもLの状態だったら、DATAを読み込む。
main.c
rcv_lib.c
0 件のコメント:
コメントを投稿