2022年6月26日日曜日

NeoPixelの先にPICを繋いでデータを渡す実験

NeoPixel の先にPICを繋いで、1wireシリアルでデータを送るテストをしています。写真はNeoPixel RingのLED 0番目に緑点灯15番目に赤点灯16番目をPICにした様子です。PICは受信したデータの8ビット分をモニタするための青色LEDを8 個繋いでいます。


WS2812Bの1ビット分の0/1は以下のようになっていて、TH+TL=1.25μsecと短いサイクルです。これをPICのプログラムで受信するのはギリギリです。PICを仮に8MHzで動かしたときに1命令の実行に0.5μsecかかります。分岐があるとこの倍の1μsec。とても間に合いません。

そこで最大の32MHzで動かしてみました。それでも1命令は0.125μsecか0.25μsecで、WS2812Bの1サイクル中に5命令~10命令しか入りません。

実はまだタイミングが完全には合ってなくて、正しいデータが受信できないことがあります。でも追い込んでいけばなんとかなりそうな目途は付きました。今週の課題です。



RGB 24ビットは以下のようにGreen,Red,Blueの順番に並びます。PICに送り込みたいデータを色のbit列にして、指定のアドレス(LEDの番号)に送出すればデータを渡せます。



なお、PICからデータを送出することは今のところ考えていません。タイミングがギリギリ間に合うかどうか微妙です。気が向いたら試してみるかも。

0 件のコメント:

コメントを投稿