2015年3月30日月曜日

FON2405EのGPIOでキャラクタ液晶を制御する

先週からGPIOの出力が一部間延びしてしまうことで、行き詰っていた。
気分を変えて、同期シリアル通信でキャラクタ液晶を制御したいと考えた。

結論から書くと、以下の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 件のコメント:

コメントを投稿