どのカテゴリにも属していない投稿[869件](53ページ目)
LEDドライバの回路図を書いてみました。
秋月さんの1000mA 可変定電流パワーLEDドライバーキットを参考にしています。
違いは電源の入力部とADJに対する回路です。
電源の入力部は電源が15vより高い場合に突入電圧が大きくなるらしいので、バリスタやツェナーダイオードを入れて対策しています。
ADJは、解放(Hi-Z)だと電流センス抵抗(R4)で定義される電流を出力し、0.4v未満になると消灯するそうです。100%で点灯させるだけならPWM回路を省いてADJを開放にすればOKです。
この回路はPWMが負論理動作になりますから、Lowにしてトランジスタを閉じれば点灯、HiにしてトランジスタでADJをGNDに落とせば消灯します。トランジスタは2SC1815に特性が近い表面実装タイプの2SC2712です。増幅率は在庫にGRグレードがあるので200倍くらいを見てますが、ICEは5vなら150mA、3.3vなら100mA程度です。IADJは1uAとのことですから十分に飽和しているので大丈夫でしょう。・・・トランジスタをもう1個入れて正論理にするか思案中。
回路図上のR4は1個ですが、パターンとしては2個書いてセンシング抵抗を調整しやすくするつもりです。世の中に0.1Ωや0.14Ωの抵抗はありますが、単品で0.286Ωの抵抗などありませんので2個使って近しい値にするのです。世の中のパワーLEDは350mAの物が多いので、対応できるようにしておけば遊べるかなと。
まずはCL6807単体でのドライバ回路を習得しますが、CL6807のLXはオープンドレインなので、パワーMOS-FETを外付けすれば電流値を上げられるハズです。
電源電圧を28v以上にするとCL6807では物足りなくなると思いますが・・・。
#電子工作 #LED
秋月さんの1000mA 可変定電流パワーLEDドライバーキットを参考にしています。
違いは電源の入力部とADJに対する回路です。
電源の入力部は電源が15vより高い場合に突入電圧が大きくなるらしいので、バリスタやツェナーダイオードを入れて対策しています。
ADJは、解放(Hi-Z)だと電流センス抵抗(R4)で定義される電流を出力し、0.4v未満になると消灯するそうです。100%で点灯させるだけならPWM回路を省いてADJを開放にすればOKです。
この回路はPWMが負論理動作になりますから、Lowにしてトランジスタを閉じれば点灯、HiにしてトランジスタでADJをGNDに落とせば消灯します。トランジスタは2SC1815に特性が近い表面実装タイプの2SC2712です。増幅率は在庫にGRグレードがあるので200倍くらいを見てますが、ICEは5vなら150mA、3.3vなら100mA程度です。IADJは1uAとのことですから十分に飽和しているので大丈夫でしょう。・・・トランジスタをもう1個入れて正論理にするか思案中。
回路図上のR4は1個ですが、パターンとしては2個書いてセンシング抵抗を調整しやすくするつもりです。世の中に0.1Ωや0.14Ωの抵抗はありますが、単品で0.286Ωの抵抗などありませんので2個使って近しい値にするのです。世の中のパワーLEDは350mAの物が多いので、対応できるようにしておけば遊べるかなと。
まずはCL6807単体でのドライバ回路を習得しますが、CL6807のLXはオープンドレインなので、パワーMOS-FETを外付けすれば電流値を上げられるハズです。
電源電圧を28v以上にするとCL6807では物足りなくなると思いますが・・・。
#電子工作 #LED
オーダーした基板が出荷されたそうです。先日のオーダーはロックダウンの渦中で時間がかかりましたが、今回は3営業日で出荷です。
後は輸送次第ですが、こればかりはその時によります。経路のハブの地域がコロナ等で混乱していれば時間がかかります。
今回は速い。輸送状況を確認しますと中国から航空便に乗せるための通関手続き中とのこと。すんなり航空便に乗れば明日には日本国内に到着すると思われます。
日本国内の輸送は通関と配送で通常2日間くらいです。どの国際空港に降ろされるかによって1-2日違いますが、今週中には届くでしょう。
#お買い物
後は輸送次第ですが、こればかりはその時によります。経路のハブの地域がコロナ等で混乱していれば時間がかかります。
今回は速い。輸送状況を確認しますと中国から航空便に乗せるための通関手続き中とのこと。すんなり航空便に乗れば明日には日本国内に到着すると思われます。
日本国内の輸送は通関と配送で通常2日間くらいです。どの国際空港に降ろされるかによって1-2日違いますが、今週中には届くでしょう。
#お買い物
LEDフットライトのLEDモジュール基板を発注しましたので、KiCADの3D画を揚げてみました。
KiCADは回路図から基板を作れて3Dまで出るので便利です。
LEDの3DキーはFusion360で描いたものをSTEP形式で出力してKiCADに読ませています。
逆に、KiCADで描いた基板の3DもSTEP形式で出力すればFusion360に読ませられます。配線パターンまでは表現されませんが、基板の外形に部品が乗った状態のものが出力されます。
改めて描くことなく部品が乗った基板をFusion360の部品としても使えるので便利です。
今回は最大4.0vのLEDをDC24v電源のCL6807で駆動させますので5発です。LEDを直列で使いますので、電源電圧はLEDの総電圧+3~5v程度になります。
LED1発分くらいはドライバ回路で消費となります。
価格は20枚で$81(USD・送料別)です。消費税は後請求か着払い扱いになるようです。
為替レートを今日現在の135.5円/USDとすると10975.5円です。1枚あたり548.8円程度。アルミ基板がこの価格は安いと思います。
ドライバ基板はLEDの動作や照度を確認してからにしますが、基板の価格はサイズよりも枚数に左右されるので1枚の基板に2回路入れましょう。電源モジュールも2回路で1台ですから丁度いい。
#電子工作
再度LEDの照度を計ってみましたが270Lx出ています。
必ずしも芯に照度計を置ける訳ではないので5%くらいの違いはアリアリですが、最初の計測値が妙に低かったのは何故でしょう。
原因はわかりませんが、大事な時にこの現象が起きないことを祈ります。
基板を設計するにあたり照度をあたり直してみます。
目指す製品は2.4m離れて1200~1500Lx出す物です。
現在の計測条件は距離2.2mですので設定値より1割ほど近い。距離の差分で照度は85%くらいになりますので、現在値を260Lxとすると期待値は220Lxです。
製品は幅1.2mにLEDが30発並んだ構成を想定しています。現在の有効照射面は直径1.0m程ですから照射面の1点には製品1台の83%が当たることになります。
現在は5発で実験していますので1発あたり44Lx。30発の83%なら24.9発見当。単純計算では1097Lxになるハズです。
設計値より低いので、仮に製品幅を1.0mにすると照射面の1点には100%当たることになり1320Lxです。
この値なら十分ですが、現実には経年劣化等によりこの値よりも落ちると思います。10%減として1188Lxですが、この値ならかろうじて目標値。
仮に製品幅を0.9mにすると1467Lxで10%減でも1319Lx。放熱はいけそうなので、部品類が収まるならこの幅かな?
通風口やらケーブル口を考慮し、LEDを27.5mmピッチで取り付ければ30発でも0.9mに収まります。
#LED #照明器具
必ずしも芯に照度計を置ける訳ではないので5%くらいの違いはアリアリですが、最初の計測値が妙に低かったのは何故でしょう。
原因はわかりませんが、大事な時にこの現象が起きないことを祈ります。
基板を設計するにあたり照度をあたり直してみます。
目指す製品は2.4m離れて1200~1500Lx出す物です。
現在の計測条件は距離2.2mですので設定値より1割ほど近い。距離の差分で照度は85%くらいになりますので、現在値を260Lxとすると期待値は220Lxです。
製品は幅1.2mにLEDが30発並んだ構成を想定しています。現在の有効照射面は直径1.0m程ですから照射面の1点には製品1台の83%が当たることになります。
現在は5発で実験していますので1発あたり44Lx。30発の83%なら24.9発見当。単純計算では1097Lxになるハズです。
設計値より低いので、仮に製品幅を1.0mにすると照射面の1点には100%当たることになり1320Lxです。
この値なら十分ですが、現実には経年劣化等によりこの値よりも落ちると思います。10%減として1188Lxですが、この値ならかろうじて目標値。
仮に製品幅を0.9mにすると1467Lxで10%減でも1319Lx。放熱はいけそうなので、部品類が収まるならこの幅かな?
通風口やらケーブル口を考慮し、LEDを27.5mmピッチで取り付ければ30発でも0.9mに収まります。
#LED #照明器具
パワーLEDに先が見えてきたところですが、LHQの代替機材も作れんぢゃね?
今回はφ8mmの単色3wLEDにφ13mmのレンズを被せています。出来るだけ薄い筐体で必要なナマ明かりを確保することが優先課題なので大柄になりがちなフルカラーLEDやリフレクタータイプのレンズを避けただけですが、この延長線でマーブルタイプのカラーミックスLEDバー作ったらLHQの代わりになるんぢゃないかと。発光部を見せないならマーブルタイプでも同じことだし、発熱点が集中しないので作りやすい。
今回のレンズは収差によって半減角の周囲に色温度の低いエリアが出来てしまいますが、4in1などのフルカラーLEDでよくあるエッジの色ムラと比べたら特筆する支障でもありません。それに、LHQの代替にするにはどんなレンズを使っても拡散フィルタやバウンサーを使ってエッジの減光変化を柔らかくしなければなりませんので、発光部を細く作れる今回のφ13mmレンズは悪くないと思うのです。何と言っても安いし軽いし。
また、薄く作れるならカマチに並べるフットライトとしても私好みです。
まずは今の製品を完成させるべきですが、これらのことも考えながら進めるべきでしょう。
#LED #照明器具
今回はφ8mmの単色3wLEDにφ13mmのレンズを被せています。出来るだけ薄い筐体で必要なナマ明かりを確保することが優先課題なので大柄になりがちなフルカラーLEDやリフレクタータイプのレンズを避けただけですが、この延長線でマーブルタイプのカラーミックスLEDバー作ったらLHQの代わりになるんぢゃないかと。発光部を見せないならマーブルタイプでも同じことだし、発熱点が集中しないので作りやすい。
今回のレンズは収差によって半減角の周囲に色温度の低いエリアが出来てしまいますが、4in1などのフルカラーLEDでよくあるエッジの色ムラと比べたら特筆する支障でもありません。それに、LHQの代替にするにはどんなレンズを使っても拡散フィルタやバウンサーを使ってエッジの減光変化を柔らかくしなければなりませんので、発光部を細く作れる今回のφ13mmレンズは悪くないと思うのです。何と言っても安いし軽いし。
また、薄く作れるならカマチに並べるフットライトとしても私好みです。
まずは今の製品を完成させるべきですが、これらのことも考えながら進めるべきでしょう。
#LED #照明器具
パワーLEDをリフローして秋月さんのドライバ基板で点灯させました。
単色の3w品はかなり明るく、LEDの樹脂部品の変形もありませんので思ったよりも良好な照射をしています。
30度のレンズを取り付けた5発が2m離れた位置で中心150Lx。期待値は200Lxだったので足りませんが、電流値を調整すれば180Lxくらいまで上げられそうな気もします。
課題は明るさを増して個体ムラを軽減することです。実作業はLEDに送り込む電流値の調整となります。半導体は付加電圧に入力電流が単純比例しないために半導体と呼ばれますがLEDもその部類です。LEDの明るさは主に入力電流に比例しますが、電圧特性が個体によってバラつきがあるくせに入力電流は付加電圧によって増減します。制御回路は電流を計測してフィードバック制御してはいますが、電流の計測も結局は電圧の計測なので累積誤差は決して少なくありません。設計値のままの部品で回路を組んでもある程度の範囲には収まるのですが10%くらいの照度差は発生するようです(抵抗やコンデンサの誤差は5%程度あるので当たり前?)。なので、最後は人の手で計測して調整できるようにしなければなりません。
さて、どうしよう!?
追記
気になったので再計測。
同条件で260Lx出ている・・・十分に期待値なのでホッとしましたが、なんで100Lxもアップ?
考えられるのは温度。
昨日のチェックはリフローの熱が完全に抜ける前に実施したと言ってもいい。アルミアングルをヒートシンクにしているけど冷却不足かも。制御回路には気になる発熱が無いので無関係だと思う。
しばらく点灯して十分に熱を持たせて再計測します。
追記・・・30分後
ヒートシンクが十分に温まったところで計測。
照度258Lx。
わずかに下がったけれど計測の誤差レベルでしょう。十分に期待値が出ているので細かい調整は考えないことにします。
アルミアングルは温まっても素手で握っていられる程度なので、筐体放熱だけで足りそうな気がします。触った感じ、昨日よりも低い気がしなくもないけど・・・
これなら実試作を始めてもいいので、基板を設計して中国に発注しますかね。
LED基板も制御基板もアルミの片面基板にしましょう。短絡を避けるために基板の周囲にパターンの余白を大きめにとる必要がありますが、基板を筐体やヒートシンクに直付け出来るなど、クーリングの処理にメリットがあります。それに、国内でアルミ基板を作ると樹脂基板の数倍の価格になるのに対し中国ではほんの数割しか違いません。クーリングの機構が簡単になるならアルミ基板を用いた方が全体としては安く仕上がります。
#電子工作 #LED
単色の3w品はかなり明るく、LEDの樹脂部品の変形もありませんので思ったよりも良好な照射をしています。
30度のレンズを取り付けた5発が2m離れた位置で中心150Lx。期待値は200Lxだったので足りませんが、電流値を調整すれば180Lxくらいまで上げられそうな気もします。
課題は明るさを増して個体ムラを軽減することです。実作業はLEDに送り込む電流値の調整となります。半導体は付加電圧に入力電流が単純比例しないために半導体と呼ばれますがLEDもその部類です。LEDの明るさは主に入力電流に比例しますが、電圧特性が個体によってバラつきがあるくせに入力電流は付加電圧によって増減します。制御回路は電流を計測してフィードバック制御してはいますが、電流の計測も結局は電圧の計測なので累積誤差は決して少なくありません。設計値のままの部品で回路を組んでもある程度の範囲には収まるのですが10%くらいの照度差は発生するようです(抵抗やコンデンサの誤差は5%程度あるので当たり前?)。なので、最後は人の手で計測して調整できるようにしなければなりません。
さて、どうしよう!?
追記
気になったので再計測。
同条件で260Lx出ている・・・十分に期待値なのでホッとしましたが、なんで100Lxもアップ?
考えられるのは温度。
昨日のチェックはリフローの熱が完全に抜ける前に実施したと言ってもいい。アルミアングルをヒートシンクにしているけど冷却不足かも。制御回路には気になる発熱が無いので無関係だと思う。
しばらく点灯して十分に熱を持たせて再計測します。
追記・・・30分後
ヒートシンクが十分に温まったところで計測。
照度258Lx。
わずかに下がったけれど計測の誤差レベルでしょう。十分に期待値が出ているので細かい調整は考えないことにします。
アルミアングルは温まっても素手で握っていられる程度なので、筐体放熱だけで足りそうな気がします。触った感じ、昨日よりも低い気がしなくもないけど・・・
これなら実試作を始めてもいいので、基板を設計して中国に発注しますかね。
LED基板も制御基板もアルミの片面基板にしましょう。短絡を避けるために基板の周囲にパターンの余白を大きめにとる必要がありますが、基板を筐体やヒートシンクに直付け出来るなど、クーリングの処理にメリットがあります。それに、国内でアルミ基板を作ると樹脂基板の数倍の価格になるのに対し中国ではほんの数割しか違いません。クーリングの機構が簡単になるならアルミ基板を用いた方が全体としては安く仕上がります。
#電子工作 #LED
リフローは基本が見えたので、棚上げになっていたSPI-DMXの組み上げも可能になりました。
これは表面実装部品を多用しているのでリフローの条件が整わないとどうにもならなかったのです。
リフローでこれに付ける部品はチップ抵抗とチップコンデンサですから温度条件は比較的緩い。185度のソルダーペーストでも部品は持つと思いますので、138度のを使えば比較的簡単に出来そうです。
このSPI-DMXはRaspberryPiからレガシーDMXを出力するためのインターフェースです。PICのファームウェアを書かなければなりませんし、トリッキーな処理の検証もあるので完成まで時間がかかりますが、最終的にはArt-Netデコーダになるので速やかに進めたいですね。LCDディスプレイモジュールをI2C化するのもこれに使いたいからだったりしますが・・・。
#電子工作
これは表面実装部品を多用しているのでリフローの条件が整わないとどうにもならなかったのです。
リフローでこれに付ける部品はチップ抵抗とチップコンデンサですから温度条件は比較的緩い。185度のソルダーペーストでも部品は持つと思いますので、138度のを使えば比較的簡単に出来そうです。
このSPI-DMXはRaspberryPiからレガシーDMXを出力するためのインターフェースです。PICのファームウェアを書かなければなりませんし、トリッキーな処理の検証もあるので完成まで時間がかかりますが、最終的にはArt-Netデコーダになるので速やかに進めたいですね。LCDディスプレイモジュールをI2C化するのもこれに使いたいからだったりしますが・・・。
#電子工作
ようやくですが、138度の低融点ソルダーペーストでリフローを試してみました。
熱電対温度計で計測しながらの作業です。
まず100度設定でオーブン自体の予熱。外装が暖かくなるまで行い、庫内温度が85度くらいになるようにする。
物を入れてダイヤルを140度にし、庫内温度が100度になるまで待つ。
庫内温度が100度になったらダイヤルを100度にし90秒計測開始。この間、庫内温度が100~110度を維持する様に操作する。
90秒経ったらダイヤルを180度にし、ソルダーペーストを観察。
庫内温度が150度近くになるとソルダーペーストが熔け始めるのがわかる。
庫内温度が160度になったらダイヤルを100度まで下げ20秒計測開始。この時間ならヒーターの残熱で庫内温度が上がるくらいですが、160~170度を維持するように操作。180度は越えない方がいい。
20秒経ったら(30秒を越えない様に注意)オーブンの電源を落としフタを開いて冷却。
素手で触れるくらいに冷めたら完成。
ハンダの溶ける様が分かりやすいので思ったより簡単で、前回の様にLEDの樹脂が変形することなく綺麗にハンダが付きました。
185度のソルダーペーストと違い部品の耐熱温度に対して十分に余裕のある温度ですから、高すぎず長すぎずに注意しながらも十分に余熱をし、160~170度20秒間をキッチリやればよいようです。予熱後から最高温度までの過程はオーブンの成り行きに任せてOK。部品を100度以上の環境にさらす時間は3分以内ってイメージも大事かもしれません。
#ガチ工作 #電子工作
熱電対温度計で計測しながらの作業です。
まず100度設定でオーブン自体の予熱。外装が暖かくなるまで行い、庫内温度が85度くらいになるようにする。
物を入れてダイヤルを140度にし、庫内温度が100度になるまで待つ。
庫内温度が100度になったらダイヤルを100度にし90秒計測開始。この間、庫内温度が100~110度を維持する様に操作する。
90秒経ったらダイヤルを180度にし、ソルダーペーストを観察。
庫内温度が150度近くになるとソルダーペーストが熔け始めるのがわかる。
庫内温度が160度になったらダイヤルを100度まで下げ20秒計測開始。この時間ならヒーターの残熱で庫内温度が上がるくらいですが、160~170度を維持するように操作。180度は越えない方がいい。
20秒経ったら(30秒を越えない様に注意)オーブンの電源を落としフタを開いて冷却。
素手で触れるくらいに冷めたら完成。
ハンダの溶ける様が分かりやすいので思ったより簡単で、前回の様にLEDの樹脂が変形することなく綺麗にハンダが付きました。
185度のソルダーペーストと違い部品の耐熱温度に対して十分に余裕のある温度ですから、高すぎず長すぎずに注意しながらも十分に余熱をし、160~170度20秒間をキッチリやればよいようです。予熱後から最高温度までの過程はオーブンの成り行きに任せてOK。部品を100度以上の環境にさらす時間は3分以内ってイメージも大事かもしれません。
#ガチ工作 #電子工作
RaspberryPiのハードウェアI2Cをマスタにしてどうにかならないかと考えてみました。
BFで送受信の終了を監視し、SSPIF(ACKの終了)を監視してCKPをセットすれば良いっちゃ良いのだけど、不可能ではないけど面倒くさい処理の典型と化します。
クロックストレッチングを使わなくても(ACKの直後に次の送受信が始まっても)動く様にしておけばよいのはわかっていますが、PICのI2Cはクロックストレッチングが前提の構成(特にスレーブ送信)だし、RaspberryPiに限った問題なのでi2c-gpioを使ってクロックストレッチングを用いた方が素直な気がします。i2c-gpioが凄い足かせになるワケでもないようですし。
追記
どうにもモヤモヤするのでクロックストレッチングを使わない方法を考え続けてみました。帰りの車中は考え事に最適です。
条件を整理します。RaspberryPiのI2CがクロックストレッチングをしてくれないのですからPIC側の条件です。
タイミングチャートを読みますと、ACKのクロック(ワードの9クロック目)の立下りで割り込みフラグSSPIFがアクティブになった後、次のワードの最初のクロックの立ち上がりまでに送受信のコンディションを整えられれば何事もなく次のワードが扱えるようです。これはSSPIFで割り込みが発生してから半クロック分の時間が使えるとも言えます。I2Cのビットレートは一意ではありませんが、標準的なビットレートである100kbpsに限って考えるなら半クロックは5usec。32MHz動作のPICなら40命令ステップに相当する時間です。
PICは割り込みの入りと出にパイプラインロスが発生するのでそれぞれ1命令ステップが消費され、I2CのクロックとPICの動作クロックは同期していないし信号の立ち上がり立下り時間もあるので2命令ステップくらいの誤差は起こりえます。となると実処理のために使える命令ステップ数は最大で36程度です。
ザックリと考えるならSSPIFで割り込みに入ってから30命令ステップ以内に送受信コンディションを整えて割り込みから抜ければよいのでは?となる。
30命令ステップあれば書き込み(RaspberryPi→PIC)は間に合いそうです。
I2Cは1フェーズ内では読み出しか書き込みかどちらかしか出来ませんので、Pythonの読み出しコマンド(PIC→RaspberryPi)はI2Cにおいて2フェーズ(1つ目のフェーズでコマンドや読み出すアドレスを書き込み、2つ目のフェーズでデータを読み出す)で実行されます。すなわち、PICが受け取ったワードをキーに処理して次のワードで即応する必要はありません。受け取るだけ受け取ってから処理をし、次の返信フェーズに備えればいいのです。もし鬼連続でコールされても2つ目の読み出しフェーズでデバイスアドレスを送受信する時間は返信データを作るのに使えます。1ワードは9bit分ですから100kbpsなら720usecです。足りる足りないではなくこの時間で済むように作ればいいのです。つか、PICにとっては5,760命令ステップに相当する時間です。私はPIC16をアセンブラで書きますが、5000ステップ以上の処理など書きたくもない・・・。
割り込みベクタが一つしかないPIC16系で多重割り込みをするとI2Cのタイミングを外す可能性があります。他の処理はポーリングとなりますが、DMX512の送受信や位相制御のトリガー処理もポーリングで十分間に合っているので問題ないっしょ。むしろPIC1個にそんな沢山の仕事させるなってね(笑
あれ?クロックストレッチングを使わないで組めそうな気がしてきた。
なんのことやらオレメモ暴走独り言ですみません。
#RaspberryPi #電子工作
BFで送受信の終了を監視し、SSPIF(ACKの終了)を監視してCKPをセットすれば良いっちゃ良いのだけど、不可能ではないけど面倒くさい処理の典型と化します。
クロックストレッチングを使わなくても(ACKの直後に次の送受信が始まっても)動く様にしておけばよいのはわかっていますが、PICのI2Cはクロックストレッチングが前提の構成(特にスレーブ送信)だし、RaspberryPiに限った問題なのでi2c-gpioを使ってクロックストレッチングを用いた方が素直な気がします。i2c-gpioが凄い足かせになるワケでもないようですし。
追記
どうにもモヤモヤするのでクロックストレッチングを使わない方法を考え続けてみました。帰りの車中は考え事に最適です。
条件を整理します。RaspberryPiのI2CがクロックストレッチングをしてくれないのですからPIC側の条件です。
タイミングチャートを読みますと、ACKのクロック(ワードの9クロック目)の立下りで割り込みフラグSSPIFがアクティブになった後、次のワードの最初のクロックの立ち上がりまでに送受信のコンディションを整えられれば何事もなく次のワードが扱えるようです。これはSSPIFで割り込みが発生してから半クロック分の時間が使えるとも言えます。I2Cのビットレートは一意ではありませんが、標準的なビットレートである100kbpsに限って考えるなら半クロックは5usec。32MHz動作のPICなら40命令ステップに相当する時間です。
PICは割り込みの入りと出にパイプラインロスが発生するのでそれぞれ1命令ステップが消費され、I2CのクロックとPICの動作クロックは同期していないし信号の立ち上がり立下り時間もあるので2命令ステップくらいの誤差は起こりえます。となると実処理のために使える命令ステップ数は最大で36程度です。
ザックリと考えるならSSPIFで割り込みに入ってから30命令ステップ以内に送受信コンディションを整えて割り込みから抜ければよいのでは?となる。
30命令ステップあれば書き込み(RaspberryPi→PIC)は間に合いそうです。
I2Cは1フェーズ内では読み出しか書き込みかどちらかしか出来ませんので、Pythonの読み出しコマンド(PIC→RaspberryPi)はI2Cにおいて2フェーズ(1つ目のフェーズでコマンドや読み出すアドレスを書き込み、2つ目のフェーズでデータを読み出す)で実行されます。すなわち、PICが受け取ったワードをキーに処理して次のワードで即応する必要はありません。受け取るだけ受け取ってから処理をし、次の返信フェーズに備えればいいのです。もし鬼連続でコールされても2つ目の読み出しフェーズでデバイスアドレスを送受信する時間は返信データを作るのに使えます。1ワードは9bit分ですから100kbpsなら720usecです。足りる足りないではなくこの時間で済むように作ればいいのです。つか、PICにとっては5,760命令ステップに相当する時間です。私はPIC16をアセンブラで書きますが、5000ステップ以上の処理など書きたくもない・・・。
割り込みベクタが一つしかないPIC16系で多重割り込みをするとI2Cのタイミングを外す可能性があります。他の処理はポーリングとなりますが、DMX512の送受信や位相制御のトリガー処理もポーリングで十分間に合っているので問題ないっしょ。むしろPIC1個にそんな沢山の仕事させるなってね(笑
あれ?クロックストレッチングを使わないで組めそうな気がしてきた。
なんのことやらオレメモ暴走独り言ですみません。
#RaspberryPi #電子工作