全年全月26日の投稿[42件](4ページ目)
2022年7月 この範囲を時系列順で読む この範囲をファイルに出力する
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 #電子工作
クロックストレッチングについて改めて調べましたが、最新のRaspberryPiで治っている情報はありません。
2022年7月現在、Broadcom社製のBCMシリーズを使ったRaspberryPiは総じてダメなようで、ソフトウェアデバイスであるi2c-gpioを使うのが有効な対策だと思います。
もちろん、ハードウェアデバイスに比べたらCPUに負担がかかるので、CPU負荷が多いシステムやI2Cメモリなどの扱うデータ量が多いデバイスでの使用は避けるべきかもしれません。
あくまで、扱いデータ量が比較的少なく多少の遅延が発生しても支障がない機内通信で使うのがよいと思われます(I2Cはそもそもそういうモノらしいですけど)。
今回はPICをインターフェースとして用い、パラレルバスのLCDキャラクタディスプレイ(SC1602やSC2004を用いた製品)をI2Cで接続しANSIエスケープシーケンスっぽいASCII文字列で制御できるシステムを目指します。
もちろん、UART(シリアル)でも動く様に考えます。8PのDIPスイッチを取り付け、1PでI2C/UARTを選択し、残りの7PでI2CのアドレスやUARTのビットレートを設定できる様にすれば汎用性が高まるでしょう。
#RaspberryPi #電子工作
2022年7月現在、Broadcom社製のBCMシリーズを使ったRaspberryPiは総じてダメなようで、ソフトウェアデバイスであるi2c-gpioを使うのが有効な対策だと思います。
もちろん、ハードウェアデバイスに比べたらCPUに負担がかかるので、CPU負荷が多いシステムやI2Cメモリなどの扱うデータ量が多いデバイスでの使用は避けるべきかもしれません。
あくまで、扱いデータ量が比較的少なく多少の遅延が発生しても支障がない機内通信で使うのがよいと思われます(I2Cはそもそもそういうモノらしいですけど)。
今回はPICをインターフェースとして用い、パラレルバスのLCDキャラクタディスプレイ(SC1602やSC2004を用いた製品)をI2Cで接続しANSIエスケープシーケンスっぽいASCII文字列で制御できるシステムを目指します。
もちろん、UART(シリアル)でも動く様に考えます。8PのDIPスイッチを取り付け、1PでI2C/UARTを選択し、残りの7PでI2CのアドレスやUARTのビットレートを設定できる様にすれば汎用性が高まるでしょう。
#RaspberryPi #電子工作
2022年6月 この範囲を時系列順で読む この範囲をファイルに出力する
ソフトウェアを書く時間はありませんが、Art-Netパッチのハードウェアの基本方針を考えています。必須事項はEtherNetが独立して2系統あることです。
RaspberryPiには1系統しかありませんので増設が必要です。USBで増設してもいいのですがスッキリしているとは言えません。
そういや、RaspberryPiCM4はPCIeX1を出しています。4BではUSB3.0のアダプタに接続されていて表に出ていませんが、CM4ではUSB3.0が無い代わりに出ています。これにEtherNetアダプタを取り付けたらいいかなと。
通常のPCIeX1コネクタでもいいし、M.2で使われるNGFFコネクタ(M-key)でもいい。汎用性ならPCIeX1で、小型化を考えるならNGFFかな?いずれにしてもMACアドレスの取得を考えるとチップだけ使うより既製品のネットワークカードを使うのがよいでしょう。現実的には通常のPCIeX1ロープロファイルでIntelチップを使うデュアルタイプがよろしいかな?
#[Art-Net] #RaspberryPi
RaspberryPiには1系統しかありませんので増設が必要です。USBで増設してもいいのですがスッキリしているとは言えません。
そういや、RaspberryPiCM4はPCIeX1を出しています。4BではUSB3.0のアダプタに接続されていて表に出ていませんが、CM4ではUSB3.0が無い代わりに出ています。これにEtherNetアダプタを取り付けたらいいかなと。
通常のPCIeX1コネクタでもいいし、M.2で使われるNGFFコネクタ(M-key)でもいい。汎用性ならPCIeX1で、小型化を考えるならNGFFかな?いずれにしてもMACアドレスの取得を考えるとチップだけ使うより既製品のネットワークカードを使うのがよいでしょう。現実的には通常のPCIeX1ロープロファイルでIntelチップを使うデュアルタイプがよろしいかな?
#[Art-Net] #RaspberryPi
2022年5月 この範囲を時系列順で読む この範囲をファイルに出力する
テストピースは65点でしょうか。
お漏らしは無くなりましたが、プリント中に落ちるカスが透明の中に入ってしまいます。使えるレベルですが気分は良くありません。
透明のフィラメントは黒に比べて神経質みたいで、温度条件が合わないと表面が荒れます。見えてはきましたが、条件がまとまるまで時間がかかりそうです。
一番の問題は第1層面の荒れです。第1層が表になるのですが、若干の波打ちがありキレイとは言えません。ペーパーで削り、ミッチャクロンマルチと艶消しクリアーを吹けば誤魔化せそうですが、削り分を見越してプリントしなければなりません。この辺りの条件出しにも時間がかかりそうです。
面倒なことがまだまだ続きますが、デュアルノズルによる2色刷りが出来るようになっただけでも大進歩なのでヨシとしましょう。
・・・デュアルノズルなのにサポートする機能が無いのです。わかれば簡単なことでしたが、この辺りの設定はマニュアルにも無いので手探りです。
#工具や資材
お漏らしは無くなりましたが、プリント中に落ちるカスが透明の中に入ってしまいます。使えるレベルですが気分は良くありません。
透明のフィラメントは黒に比べて神経質みたいで、温度条件が合わないと表面が荒れます。見えてはきましたが、条件がまとまるまで時間がかかりそうです。
一番の問題は第1層面の荒れです。第1層が表になるのですが、若干の波打ちがありキレイとは言えません。ペーパーで削り、ミッチャクロンマルチと艶消しクリアーを吹けば誤魔化せそうですが、削り分を見越してプリントしなければなりません。この辺りの条件出しにも時間がかかりそうです。
面倒なことがまだまだ続きますが、デュアルノズルによる2色刷りが出来るようになっただけでも大進歩なのでヨシとしましょう。
・・・デュアルノズルなのにサポートする機能が無いのです。わかれば簡単なことでしたが、この辺りの設定はマニュアルにも無いので手探りです。
#工具や資材
2022年2月 この範囲を時系列順で読む この範囲をファイルに出力する
オレメモ
np.abs( np_array_dt - ( datetime.datetime.now() - datetime.timedelta(seconds=0.1) ) ).argmin()
#Python
np.abs( np_array_dt - ( datetime.datetime.now() - datetime.timedelta(seconds=0.1) ) ).argmin()
#Python
2022年1月 この範囲を時系列順で読む この範囲をファイルに出力する
近所の劇場さんのご厚意に甘えて客席テーブルをテストしてきました。
天板の下が暗くて見にくいのはご勘弁ください。
● アームレストバーを使った設置

● 座席をまたいだ設置

自分は基本的にOKだと思います。この先は使う人の好みです。
課題はいくつかありますが、最たるものは塗装です。すでに剥げて生地が見えてしまったところがあります。
天板の角は擦れ易いのでいずれなることですが、ほんの数回でこれでは話になりません。
ポリエステル樹脂を使えば機械強度が増すのはわかっていますが、果たして求める強度になるかは未知数です。
材質の選定も含め、この辺りは大幅な見直しをします。
#ガチ工作
天板の下が暗くて見にくいのはご勘弁ください。
● アームレストバーを使った設置

● 座席をまたいだ設置

自分は基本的にOKだと思います。この先は使う人の好みです。
課題はいくつかありますが、最たるものは塗装です。すでに剥げて生地が見えてしまったところがあります。
天板の角は擦れ易いのでいずれなることですが、ほんの数回でこれでは話になりません。
ポリエステル樹脂を使えば機械強度が増すのはわかっていますが、果たして求める強度になるかは未知数です。
材質の選定も含め、この辺りは大幅な見直しをします。
#ガチ工作
公式7インチディスプレイを使ったRaspberryPiの開発機を作ろうとしていますが、自分で部品を作るのは面倒なので公式のケースをオーダーしました。
Raspberry Pi 4B 専用 & 7インチ タッチスクリーン液晶用ケース 公式メーカー
イチイチお金がかかるのは問題ですが、基板や配線を保護する筐体を3Dプリンタで自作すると設計とプリントで膨大な時間がかかりますし、消費するフィラメントのコストも無視できませんので、これならいいだろうといったところです。
公式ディスプレイを用いる主な理由は将来的な入手性です。一般的に部品としてのモニタパネルは足が早く、1年後に同じ物が手に入らないなどザラですが、公式品なら数年後でも同じ物が手に入る可能性が高いと思うのです。
解像度は800x480ですが組み込み用途なら不足でもありませんし、タッチパネル機能を加味すれば安価な部類です。公式品ですから接続に不安もありません。
何よりも、組み込みとして作る場合にワイヤリングのメリットがあります。HDMIやUSBで接続となるとパッケージする際にコネクタ類が邪魔になりますが、専用のリボンケーブルならスッキリ収納出来ます。
#[RaspberryPi]
Raspberry Pi 4B 専用 & 7インチ タッチスクリーン液晶用ケース 公式メーカー
イチイチお金がかかるのは問題ですが、基板や配線を保護する筐体を3Dプリンタで自作すると設計とプリントで膨大な時間がかかりますし、消費するフィラメントのコストも無視できませんので、これならいいだろうといったところです。
公式ディスプレイを用いる主な理由は将来的な入手性です。一般的に部品としてのモニタパネルは足が早く、1年後に同じ物が手に入らないなどザラですが、公式品なら数年後でも同じ物が手に入る可能性が高いと思うのです。
解像度は800x480ですが組み込み用途なら不足でもありませんし、タッチパネル機能を加味すれば安価な部類です。公式品ですから接続に不安もありません。
何よりも、組み込みとして作る場合にワイヤリングのメリットがあります。HDMIやUSBで接続となるとパッケージする際にコネクタ類が邪魔になりますが、専用のリボンケーブルならスッキリ収納出来ます。
#[RaspberryPi]
ポリエステル樹脂に加えることが出来る顔料を発注しました。
色は「青」です。テーブル面が黒だと置いた小物を見失いがちだからです。許せる範囲で明るい色が使い勝手が良いと考えています。
ミディアムグレーにしようと思ったのですが、ラインナップの都合で今回は「青」にしました。黒と白を使って調色する手もありますが、そこまではしたくないかと。。。
塗れたらゴム脚に加重をかけて数日放置と擦れを試さないといけません。ダメなら硬さがある耐摩耗性が高い樹脂板を検討です。
#ガチ工作
色は「青」です。テーブル面が黒だと置いた小物を見失いがちだからです。許せる範囲で明るい色が使い勝手が良いと考えています。
ミディアムグレーにしようと思ったのですが、ラインナップの都合で今回は「青」にしました。黒と白を使って調色する手もありますが、そこまではしたくないかと。。。
塗れたらゴム脚に加重をかけて数日放置と擦れを試さないといけません。ダメなら硬さがある耐摩耗性が高い樹脂板を検討です。
#ガチ工作
テストピースをFクランプで絞めてみたワケです。ポリエステル樹脂は大して凹みもせず良い感じですが、表面に塗布したラッカー塗料がFクランプに乗り移って剥がれました。爪で掻いても痕が残らない仕上がりだったのですが、ゴム脚が付いたケースを載せたらどうなるか想像できます。
ポリエステル樹脂は良いのですから、クリアニスと思って木肌色で仕上げるか、顔料を混ぜて色付けするかです。木肌色でも良いと思うのですが、折角なので色付けを調べてみます。
ポリエステル樹脂着色剤
どうやらありそうです。
#ガチ工作
ポリエステル樹脂は良いのですから、クリアニスと思って木肌色で仕上げるか、顔料を混ぜて色付けするかです。木肌色でも良いと思うのですが、折角なので色付けを調べてみます。
ポリエステル樹脂着色剤
どうやらありそうです。
#ガチ工作
2021年11月 この範囲を時系列順で読む この範囲をファイルに出力する
本業で使う工作はまだまだです。細かいのが200個くらい残ってます。
それはさておき、自宅の作業部屋の模様替えも考えていきます。課題は「仕掛品の収納」です。上手くいかなかったり部品待ちで止まることも少なくありませんし、同時に複数の物件を進めることもあるからです。
これまでは作業テーブルに全部乗せのゴチャゴチャで進めていましたが作業性が悪い。収納と言えば収納ですが、仕舞いやすく取り出しやすい仮置き場が欲しいのです。
基本的なアイデアは小型の番中を使うもの。これを引き出しよろしく差し込めるラックを構成しようかと。安く簡単に作れて丈夫なモノを思案中です。
#ガチ工作
それはさておき、自宅の作業部屋の模様替えも考えていきます。課題は「仕掛品の収納」です。上手くいかなかったり部品待ちで止まることも少なくありませんし、同時に複数の物件を進めることもあるからです。
これまでは作業テーブルに全部乗せのゴチャゴチャで進めていましたが作業性が悪い。収納と言えば収納ですが、仕舞いやすく取り出しやすい仮置き場が欲しいのです。
基本的なアイデアは小型の番中を使うもの。これを引き出しよろしく差し込めるラックを構成しようかと。安く簡単に作れて丈夫なモノを思案中です。
#ガチ工作