秋の展示会シーズンに向けた準備だったので、動画編集作業は終わった.
それで次の仕事は「バッファ操作マン」になっているんだ.
オレみたいなただのホビーストがやってるんだからなかなか進まない.
以下のような仕様であり、わたしには未体験ゾーンな難易度である.
CPUAとCPUBの通信.
通信路: UART、全2重、2Mbps、フロー制御なし、差動バッファかまして差動伝送
CPUAが出す情報は2種類
1)100mSec毎に5kBYTEの定期便(binary)
2)不定期、不定量で低速度なstatus返信(string)
CPUBが出す情報は1種類
3)不定期、不定量で低速度なcommand(string)
3は簡単なのでさておく.
問題は1と2である.
1はDMAが必須.
2はDMAである必要はないが、1に相乗りさせるのでDMA.
定期便毎の相乗り枠は128BYTEであるが、満杯になるかもしれない.
満杯なら次の便に乗せる.
乗せ方はCR末尾で区切って乗せる.
切って乗せてバラしたりするのめんどくさい.
リングバッファに仮putして送信する直前にgetしてとかなんとかやってる.
実を云うと、こんな風な6:1のタコ足通信に加えてPCとの接続が2系統ある.HWリソース全部使ってる未体験ゾーン.
CPUA-CPUB DMA
CPUC-CPUB DMA
CPUD-CPUB DMA
CPUE-CPUB DMA
CPUF-CPUB DMA
CPUG-CPUB DMA
CPUB-(UART)-PC 割込み
CPUB-(USB)-PC
かしこ
LS244バッファじゃだめみたいですね 毒者
返信削除RS485バッファを流用中
削除波形綺麗です
murasaki
返信削除バッファ操作はそれだけでオライリーの本が書けそうな一大分野ですね。現状かなり大変そうですが、ノイズ対策や伝文解析が加わったら更にカオスになりそうです。
現在なぜか3が動かなくて困ってる
削除あるあるですねー💦
削除一番問題なさそうなものが何故か動かない。
しかも調べると原因がまあまあ込み入っていたりするという・・。
ちなみに動かないのは送信側と受信側のどちらでしょうか。とか聞いてみたくなる今日この頃。
なぜか受信callbackに飛んでこないという病気
削除ったく根性みせろよSTM32
murasaki
削除いろいろ要因が考えられるやつですねー。
受信レジスタに値が入っていて(受信できていて)割り込まない場合は、割り込みまわりですかね。
割り込みが他のチャンネルと共用になっているとか、優先度が低いと他の優先度の高い割り込みを処理した後なんかのレジスタの値を設定してあげないと割り込みし直さないとか、CPUのクセみたいな奴があるかもですねー。
murasaki
削除いろいろ要因が考えられるやつですねー。
受信レジスタに値が入っていて(受信できていて)割り込まない場合は、割り込みまわりですかね。
割り込みが他のチャンネルと共用になっているとか、優先度が低いと他の優先度の高い割り込みを処理した後なんかのレジスタの値を設定してあげないと割り込みし直さないとか、CPUのクセみたいな奴があるかもですねー。
癖かもしんない
削除TXは3BYTE送信
RXは3BYTE受信 →受信後callback正常
TXは1BYTE送信
RXは1BYTE受信 →受信後callbackかからない
↑こんなかんじがする
なおUSARTのUART使いしていて生じるトラブル
UARTのUART使いでこうゆうトラブルは出ていない
最近良く使っていますがCopilotに対策方法を聞いたらどんな回答があるでしょうか。
返信削除copilot:
削除「手かざしは試しましたか? 手かざしで治るケースが近年多く報告されています」