スキップしてメイン コンテンツに移動

PCA9956Bを光らせたい-その2(MODE1/MODE2)

PCA9956Bを光らせたい-その1の続きです

んで結線は出来たのでデータシートを見てみます
さて・・・

序盤を読んでいくと
I2C-busを使用し、24チャンネルの電流コントロールが出来て
57mAの出力が出来、解像度は8bit(256ステップ)である・・・と言うような事が書いてあります


Each LED output can be off, on (no PWM control), set at its individual PWM controller
value or at both individual and group PWM controller values. The PCA9956B operates
with a supply voltage range of 3 V to 5.5 V and the constant current sink LED outputs
allow up to 20 V for the LED supply. The output peak current is adjustable with an 8-bit
linear DAC from 225 μA to 57 mA.

 ・・・まあ、225μA毎に制御していってPWM出力を使用して57mAまで出力できますよと


後気になるのは1Mhzより高い周波数で動作するとか
(OE)ピンで動作中の変化を制御できますとか・・・そんな感じかな

なんか、読んでるとショートやオーバーヒートの検知も出来ますみたいな事を書いてあるけどそこまでは検知しなくていいかな

電源電圧は3V-5.5Vまでとかソフトリセットとか、まあ後回しで

それと、I2C-busのslave adressの設定方法が色々書いてあるけど、このボードは0x7E(arduinoは右に1ビットずらして0x3f)で設定されているので今はいいや

そして、電文設定見ると、最初はMODE1から始まる

 

図があちこち飛んで行ってしまうけど、MODE1とMODE2は7.2 Control Registerの初っぱなに出てくる

そして、MODE1の先頭ビットはTable6まで戻る・・・・
面倒だなぁ・・・
AIF-AI0までこの辺色々悩んで検索してたら、スイッチサイエンスに似たような事例があった

ちなみに、Arduinoのwireライブラリは内部で自動的にプルアップするので、プルアップ抵抗不要だそうで・・・

助かるわぁ
同じくNXPから発売されているPCA9622DRのサンプルだし、内容がちょっと違うのだけどね

これと比較しながら読んでいて、
Table 13. PWM0 to PWM23 - PWM registers 0 to 23 (address 0Ah to 21h) bit description
Table 14. IREF0 to IREF23 - LED output gain control registers (address 22h to 39h)

と言う当たりを読んでいたら大体わかった(つもりになった)

そうすると、Table13はLEDの明るさをPWMで制御する電文
Table14はLEDへ供給する電流の事である事がわかった

んで、
Table 10. LEDOUT0 to LEDOUT5 - LED driver output state registers (address 02h to 07h)bit description

がLEDを点灯・点滅・PWM、さらにグループでの制御をすると・・・(読む順番が違うだろという突っ込みは無しで・・・)
そして、このLEDOUT0-LEDOUT5のデフォルト値が[10]となってる
最初からPWM前提じゃーーーん

そして、IREF0-IREF23のデフォルト値が0・・・これだと電流は流れないこっちはいじらないとダメなのか

PWM0-PWM23はまあデフォルト0だから消灯状態だよねと・・

その結果

MODE1はIREF全部いじれる 11000000
MODE2はエラーなんか全部無視の 00000000
で決定(インクリメントモードなんて無視しても良さそうだから本当はMODE1も00000000で良さそうだけど)

 

続く


コメント

このブログの人気の投稿

RAM DISKを使ってみた(使ったのはImDisk)

GWだし、まあちょっとラムディスクを入れてみました うちのPCはWindows11 使ったのはImDiskというRAM Disk。 まあ、この辺のインストールとかはあちこちで解説してる人がいるので適当にぐぐってくださいな で、とりあえずベンチマーク なかなかいいスピードだ で、大抵の人はブラウザのキャッシュをRAMディスクにするといいよ・・・と言うけど そもそもメインドライブがNVMeのSSDを使っている状態で、体感速度なんか上がらない(使い終わったキャッシュを再起動したら綺麗さっぱり捨て去ってくれるという利点はある)  うちで一番効果があるのは Adobe Audition というアプリ これが結構高速化する(キャッシュをちゃんとRAMディスクにしたら・・・だけど) ハイレゾ音源だと、1時間の音源が何かする度に4GBのファイルを作られてしまう なので、RAM DISKにすると、結構編集時間を短縮できる Premiere Rushも出力先をRam Diskにしておいて終わったら、SSDにコピーすると言う事をやるとかなりスピードアップになる 実はうちのPCは普段は99%のパワーで動作していて、CPUのターボブーストが掛からないようになっている 大体3.6GHz当たりで安定してるのだけど、これを100%にするとターボブースト機能がONになって一部のコアが4.5とか4.8GHzまで上がる まあ、毎回電源オプションをいじる事になるのだけどさ・・・ そうしてベンチを取ると こんな感じ とは言え、ブーストしてるからと行ってRam Diskのスピードの差を体感する事はさすがに無理 ・・・と言うかフォトショでもRAM DISKにしてよかった・・・と言うほど変わらない SSDの性能が上がってきたしもし次にPCを買い換えたらRAM DISKよりSSDの方が速いかもね  

.NET MAUI BLE(Bluetooth Low Energy)も上手く行った

2023/10/11更新 ↓こちらの記事で更新しれました。 .NET MAUI PLUGIN BLEがWindows(10/11)に対応してた Windows対応 イヤッッホォォォオオォオウ Bluetooth LE plugin for Xamarin & MAUI がWindowsに対応してた~ nugetでver3.00をみんな早速ゲットだ。   ちなみにこちらはAndroid版のサンプルアプリ   GitHub...   [ブログカード風リンクタグ作成] ------------------------------------------------------------------------------ 昔、スマホとESP32の接続確認用に作ったプログラムをXamarinからMAUIに移植したら動いちゃった   まあ、ESP32からスマホへの一方通行なアプリなんだけど 面倒くさいので github に公開した 下手くそなコード書きやがってとか思われそう 「間違ってるぞこのやろう」というのを見つけたら教えてくれると嬉しいです 要素技術の調査はこれで完了かな

.NET MAUIでスプラッシュスクリーン Android12で地獄を見る

まずは起動するところから・・・・  スプラッシュスクリーンだぬ マイクロソフトのサイト 見てると簡単そう(実際簡単で細かい事を気にしなければsvgファイルを用意して1行だけ書き換えておしまい)   なんかプロジェクトファイルに自動で記述されるらしい よし、プロジェクト作った                     つーか、もうスプラッシュがあるんだけど・・・・ そして自作のsvgファイル くうっ・・・デザインセンスない・・・・   それはともかく、このSVGファイルを Resources\Images にドラッグ&ドラッグ プロジェクトを右クリックして「プロジェクトファイルの編集」 して、編集できるようになったプロジェクトファイルを 自分のプロジェクトファイルに書き換える <MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="168,168" /> ↓ <MauiSplashScreen Include="Resources\Splash\ splashtestmaui .svg" Color="#512BD4" BaseSize="168,168" />   とりあえずAndroidで実行 お、おう・・・・ まあ最初はこんなもんよね 最初に紹介したマイクロソフトのサイトでもBaseSizeを書き換えてくださいって言ってるし 言われたとおりに <MauiSplashScreen Include="Resources\Splash\splashtestmaui.svg" Color="#512BD4" BaseSize=" 320,600 " /> 書き換えてみると いい感じじゃーん じゃあアンドロイドのバージョン毎に試してみよう   Android 7 Android 11 Android 12 Android 13