秋月I2C接続キャラクタLCDモジュールをリカバリーできるファーム公開 ― 2012/07/11 23:59:02
コメント
_ ききょうや ― 2012/07/13 09:58:29
_ air_variable ― 2012/07/13 14:17:37
将来的には、アイコン表示対応は外ピンへシフトレジスタを繋げられるようにして出せれば面白いかもしれないです。
http://strawberry-linux.com/pub/i2c_lcd-an001.pdf
I2CのアドレスはPICのEEPROMに書くのは良いアイディアですね。次バージョンで書き換えておきます。
0x50(0xa0)のアドレスが一般的な24C04などのEEPROMのアドレスと被っているということで、確かに被ってます。もう少しユニークな番号にしてもらえると良かったですね。
_ nobcha ― 2012/07/16 11:24:17
この間デジットさんでサンライク社のSCG002Bと言う2.4Vでも表示が出るというi2c液晶を買い求め、格闘しました。その中で知りえたのは。NXPのPCF2119xというイシがi2c液晶制御ICのデファクトSTDみたいということです。ストリナのイシはそれを若干もじっています。
RSに1バイトささげるとか、連続実行ビットとか、拡張コマンドビットなんかがその流れのようです。
それでこのイシはチャージポンプ方式の電圧発生回路が内蔵されていて、LCD駆動用に供与されているとのこと。
蛇足情報ですが、このあたりの流れを利用するとこの成果が使いまわせるのではないかと思って、乱入、失礼しました。
_ air_variable ― 2012/07/16 16:48:16
PICの種類によってハードウェアでのI2Cマスター未対応品や、16F877の様な100KHzと400KHzのスルーレート調整するタイプなど、色々なものがあることが分かって勉強になりました。
デジットで扱っているLCDは
http://eleshop.jp/shop/g/gB3A41L/
これですか。なにかストリナの大型I2C LCDに良く似ています。
NXPのデバイスが使われているんですね。NXPはフィリップス時代からI2C策定していましたから、I2C製品がでて納得します。
個人的にはCGRAM増量タイプが出てくれると嬉しいです。
_ じじい ― 2013/09/08 20:31:52
買ってから、そのままでは使えない事に気がつきもしやと思い、SB1602B/SB1602E互換ファームウェア1.40を書き込んでみましたが、結果は同じで、Linuxコマンドi2cdetect/i2cgetでI2Cバスごと固まってしまいました。
ソースを見させて頂きますと、停止の原因はWriteコマンドを受けた時にACKを返さないが原因と思います。
このチップはSSPBUFが空きだとACKを返さないので、バッファが空のままタイムアウト(=アービトレーションエラー)になっているようです。
main.cの75行目付近に、SSPSTATbit.R_nW == 1 の時にSSPBUFに書込み処理を追加すると固まらなくなります。
--75行目付近
} else { // SSPSTATbit.R_nW == 1
temp = SSPBUF ;
SSPBUF = temp ; dummy Write
SSPIF = 0 ;
SSPCONbits.CKP = 1 ;
}
--
この修正だけでは、マスターからの複数のパターンの読出しには対応しきれていないので、「デバイス内のアドレスを指定したデータの読出し」には対応していないので、その後の液晶表示の動作がおかしくなる事があります。
そこは禁止コマンドって事で。
_ air_variable ― 2013/09/09 00:03:57
arduinoや簡単なデバッグだけで済ませていましたので、
そのまま放置にしていました。
早速修正したファイルをホームページ上に置きました。
また何かありましたら宜しくお願いします。
http://www.ne.jp/asahi/air/variable/picmel/applications/ACM1602NI/index.html
_ yuki ― 2014/03/06 00:10:22
様々なLCDをI2Cインターフェース化できるので、とても便利に使わせてもらっています。
ただ、クロックを400kHzにあげると通信できなくなってしまいました。
純正のACM1602NIは100kHzが最大ですが、PIC16F687自体は400kHzは可能なのでできると思っていたのですが、そんな単純な話ではないのでしょうか?
やはり、システムクロックを16MHzや20MHzくらいまで上げないと安定しないのでしょうか?
システム上、出来る限り400kHzで通信したいので、
ご教授よろしくお願いします。
_ air_variable ― 2014/03/09 13:51:25
とりあえず動いたバージョンのまま公開しているので、400KHz動作はまだ試していません。
スレーブ動作なので行けそうな感じなのですが、あいにく検証する時間が取れないです。
400KHzにする場合は、プルアップ抵抗を2.2~1KΩと少し小さくするなどにしてみる等して様子をみる手はあります。
OSCCON動作クロックを上げた場合は、lcd.hのLCD_STROBEタイミングを手動で調整する場合があります。恐らく16MHzまでであれば問題はないと思いますが、実験してみては如何でしょう。
宜しくお願いします。
_ ARaHiSi ― 2015/03/10 22:50:43
_ air_variable ― 2015/03/15 23:06:09
お役に立てて光栄です。
この代替ファームウェアは、使い方によって動くのと動かないのとがあるのは、分かってはいたのですが、何分時間が取れずそのまま放置していました。
もし、修正部分をご指摘頂けるのであれば、是非宜しくお願い致します。修正して、ホームページ上にアップデートしたいと思います。
メールアドレスは、
air_variable_数字@yahoo.co.jp
です。数字は1215です。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。
最近のコメント