http://strawberry-linux.com/catalog/items?code=27021
まずはArduinoで動作確認
Arduinoのすすめさんが公開されているI2CLiquidCrystalライブラリを使った
http://n.mtng.org/ele/arduino/i2c.html
使ったサンプルスケッチ(Hello World)ではLCDを5V駆動させるようになっているようだ
ライブラリの中は見ていないが、このLCDに使われているコントローラーのST7032iでは
Bonというパラメーターで5V、3.3V駆動を切り替えられるようだ
http://strawberry-linux.com/support/27021/1176395
初期化後の波形は
7c:00:38 7c:00:39
7C:00:14 7c:00:74
でStrawberryLinuxさんのドキュメント(i2c_lcd-an003.pdf)とほとんど同じ(^q^/
3e → 7cはAddress表記の7bitと8bitの違い
最後の70 → 74はコントラストの設定値の違いだ
PSoC 4 Pioneer Kitで動かしてみる
PSoC Creatorでプロジェクトを作って動作チェック
ACKがこない(^q^;
PullUp用のRを5.6Ωから3.3kΩに下げてみる
波形は多少きれいになったがやはりACKが来ない(^q^;
何度か動かしてみるとACKがくるときもあったのでLCDのRESET PINも制御してみることにした
最初にやったAruduinoの例ではRESET PINは制御していない(VDDに直結)
ACK来た!GJ(^q^/
が、ACKは来たものの、そのあとのコマンドが続かない(@q@;
ソースをいじってLED点灯をステップごとに入れたりしてあれこれ試行錯誤しているうちに気づいた!
グローバル割込みを許可する前にLCDの初期化コマンドを流していた(^q^;;;;
ソースの中のグローバル割込みを許可するCyGlobalIntEnableを先頭に持ってきて
GJ(^q^/
気づいたこととか
Arduinoはやっぱり頼りになる
今までの積み重ねの層の厚さはさすが!
いろいろな方が試されているのでWebで検索すれば何らかのヒントが見つかることが多い
困ったときはArduinoである
PSoC 4 Pioneer KitのRGB LEDはデバッグに便利
3bitあるのでデジタル出力で8つの状態が表現できる
TopDesignでcy_pinをDrag&DropしてConfigureで多少設定してやればすぐ使えるし
LED3個ではなくRGB LEDなので考えなくても直感的に(赤・青・緑・黄・紫などで)把握できる
今回のテストプロジェクトはGitHubで公開しています
https://github.com/ryood/PSoC-I2C-LCD-Test
0 件のコメント:
コメントを投稿