ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

mbed の NeoPixel ライブラリ、不具合の正体見えた!

2014年04月29日 02時09分01秒 | mbed
mbed の NeoPixel ライブラリがおかしい件、
やはり波形を細かく見てみないとダメだと言うことで、
ズームアップしてみました。

特におかしなところは無さそうに見えます。

こちらがArduino UNO の波形です。

比較しても、違いが有るようには見えません。

しょうがないので、表示がおかしくなっているところの波形を見てみます。
このLEDは自分の分(24ビット)を取り込むと、それ以降を後段にスルーします。
だから、後ろの方になるとデータが少なくなります。

なんじゃこら!
明らかにLの時間が長いところがあります。
元は有ったパルスが消えているようです。
だから表示がおかしくなったと言うわけです。

改めてmbed直後の信号波形を見てみると、

長いパルスが連続するとLの時間がだんだん短くなっているみたいです。

測ってみると

330nsしかありません。

その直前のLの時間は

440nsあります。

WS2812のスペックでは
T1L = 600 ± 150 ns なので、アウトですが、
WS2812Bのスペックでは
T1L = 450 ± 150 ns なので、OKなはずです。
実際、私の基板はWS2812Bです。

いやいや、そもそもデータシートの書き方が違うだけで
デバイスの正味のスレッショルドは600nsあたりにあることが分かっています。

では、なぜビットが抜ける現象が起こったのでしょうか。

改めて、ビット周期を測ってみます。

ビットが抜けたところは2.4μsになっています。
これは2ビット分なので、ビット周期は1.2μsです。
800kbpsだと1.25μsなので、少し短いのです。

そこで、改めてArduinoの波形と比べてみると、
mbedの方が、見て分かるくらいジッタが大きいです。
どうもジッタのせいで周期が短くなった時にビット抜けが
発生したようです。

やはり、このライブラリは素性が良くありません。
波形発生の処理方法に問題がありそうです。

mbed の NeoPixel ライブラリ、やっぱりなんかおかしい その2

2014年04月28日 02時06分50秒 | mbed
NeoPixel と mbed でググってみると他にも見つかりました。
たとえば、
PololuLedStrip のLedStripRainbowをインポートしてみると

ちゃんと動きました。

やっぱりNeoPixel のライブラリがおかしい。

mbed祭り2014 @春の大阪でもらったもの当たったもの

2014年04月27日 23時09分40秒 | mbed
mbed祭り2014 @春の大阪でもらったノベルティがこれです。


それと、こちら。

左が、もらったものでmbedではなくなぜかCYPRESSの無線ものと、
右が抽選で当たったノルディックのものです。



CYPRESSのものの中身がこれです。

CY3630Mと言うWirelessUSBのモジュールらしいです。

ググってみると、サイプレスのサイトには無くて、
このブログこのブログこちらのブログが見つかりました。

これを見ると、トラ技の2008年2月号の記事が参考になりそうですが、
手元には無く、記事の一部がここに有りました。
せめてコネクタのピン配置が分かれば良いのですが。

それとこれ技適無いので、ここの説明のように改造が必要だとか。
このようにC1を外せば微弱電波になるのでOKですが、数cmしか飛ばないようです。orz




ノルディックの方はnRF51822というmbedです。

わーい、無線mbedだー!
でも、こちらも技適ががが


mbed の NeoPixel ライブラリ、やっぱりなんかおかしい

2014年04月27日 21時15分16秒 | mbed
mbed祭りで、WS2812Bの信号レベルが5Vでないとうまくいかないと聞いたので、
5Vフルスイングに変換してみました。
結果は何も変わらず不安定のまま。


オシロで波形を観測して、Arduinoと比べてみましたが
大きな違いは無さそうでした。むー、謎じゃ。

波形をズームアップして一個一個見るしかないのかなぁ。