AliExpressで見かけたピンヘッダが細ピンヘッダの代わりになるかと思ったけどならなかった話

1つ前のRaspberry Pi Pico 2の記事の派生話。

 

  • 細ピンヘッダ
  • 0.65mm×0.45mm?
  • 0.5mm×0.5mm?
  • 最後に

 

続きを読む

Raspberry Pi Pico 2でHDMI接続&映像の表示遅延を計測する

Raspberry Pi Pico 2が発売されましたねー。今回はPico2の新機能を使った実験です。

表示遅延計測と言っても、Pico2では1080p60や2160p60等は出力できずフルHDや4Kのモニタのネイティブ解像度で表示できないので、どれほどの実用性かは不明。

なお、HDMI接続と言っても出力する信号自体はDVI-D信号です。HDMIはDVI-Dに対して上位互換性があるので、HDMI接続でもDVI-D信号を表示できます。

 

先にソースコードと.uf2ファイルを置いておきます、コンパイルしなくても.uf2ファイルをPico2に入れれば動くと思います。

hstx_dvi_out_lag_test.zip - Google ドライブ

Raspberry Pi公式のHSTX機能のサンプルdvi_out_hstx_encoderがプログラムのベースです。
開発環境はWindows 11とVS Code、PlatformIOでArduino-Picoを使用してます。Arduinoの機能はシリアル通信くらいしか使ってません。Pico SDKのシリアル通信よりArduinoの方が使い慣れてたので。

 

  • Pico2の新機能、HSTXとTMDSエンコーダー
  • HDMIとPico2を繋ぐ
  • DVI出力の解像度はPico DVIの時より大きくできるのか
    • Pico2のクロックについて
  • 実際に出力解像度を上げてみる
  • 信号出力から映像表示までの遅延を計測する
    • 使い方
    • 測定方式による差異
  • 最後に

 

続きを読む

Raspberry Pi PicoでNTSCのコンポジット映像信号を出力する(カラー出力編)

Raspberry Pi PicoでNTSCの映像信号出力に挑戦。前回はモノクロ出力でした。

u-mid.hateblo.jp

今回はカラー出力なんですが、バグというか何故かNTSC出力の処理が一瞬停止して横にノイズが走ってしまうという問題(何らかの割り込み?メモリアクセス待ち?)が起き、その原因の調べ方がわからず詰まっている間にゼルダのティアキンが出てそっちに没頭してしまっていたため、Picoの方がほったらかしになってました。
問題の調査の仕方自体がわからなくて原因不明のままなのですが、デュアルコアCPUの2コア目の方を使えば問題なくNTSCカラー出力できる状態なので、とりあえずここで一段落とします。

プログラムはゼルダが出た15ヶ月前のままで、今見返すと色々と忘れてしまっています。なので今回の記事は実際のプログラム内容と違うことを間違って書いてる箇所があるかもしれません。

 

  • 開発環境
  • 仕様
  • 回路図
  • プログラム
    • Picoの動作クロックをカラーサブキャリア周波数に合わせる
    • フレームバッファとパレット
    • PIOとDMA

 

続きを読む

Raspberry Pi PicoでNTSCのコンポジット映像信号を出力する(まずモノクロから)

Raspberry Pi PicoでNTSCの映像信号出力に挑戦。一度NTSC映像信号生成ってのを試してみたかったんですよねー。

PicoにはPIO(programmable I/O)なる小規模なCPU的なハードが載ってて、メインのCPUから独立してちょっとした処理を行うことができます、しかもCPUと同じクロックスピードで。命令も全て1クロック。
これ使えば専用のIC使ったりしないでリアルタイムにNTSC信号作れちゃうのでは!?というのが今回のチャレンジです。

 

最終目標は320x240くらいの解像度のカラー映像の表示です、が、まずはモノクロ映像に挑戦します。信号がカラーよりシンプル*1で難易度が低い。

  • 開発環境
  • 仕様
  • NTSC信号について
  • 回路図
  • プログラム
    • PIO
    • DMA
  • 最後に

 

*1:というか白黒テレビに後付けでカラーにする信号を乗っけてるので、白黒がシンプルというよりカラーで複雑化という感じ?

続きを読む

(Raspberry Pi Pico)PIOへのDMA転送の切れ目

Raspberry Pi PicoのPIOやDMAは1クロックごとに処理が可能ですが(125MHzなら秒間1億2500万回)、データをDMAでPIOに送り続ける場合にautopull・PIOからDMAへのDREQ(データリクエスト)・DMAチャンネル間のchain trigger等の使用時でも待ち時間なしにデータ転送され続けるのだろうか、という疑問が湧いたので確認してみました。

環境はWindows 11とVS Code、PlatformIOでearlephilhower版Arduinoコア(Raspberry Pi Pico/RP2040)を使用してます。Raspberry Pi Pico C/C++ SDKでもだいたい同じだと思います、earlephilhower版がC/C++ SDKをベースに作られているので。

 

  • PIOのpullã‚’autopullに任せた場合「TX FIFO→autopullでosrへ→osrからout」で転送待ちは発生するのか
  • DMAチャンネル間のchain trigger使用時はそれぞれのDMA転送が切れ目なく続くのか
  • その他の転送開始方法も試してみる
  • ソースコード

 

続きを読む

PlatformIO+Raspberry Pi Picoで一時Uploadができなくなった話

今Raspberry Pi Picoを触り始めてるんですが、「PlatformIOからスケッチをUploadできない」「BOOTSELモードに入ってもUSBストレージとして認識すらされない」という躓きがあったのでどう解決したかのメモを残します。

環境はWindows 11とVS Code、PlatformIOでearlephilhower版Arduinoコア(Raspberry Pi Pico/RP2040)を使用。多分Arduino IDEや公式のArduinoコア(Arduino Mbed OS RP2040)でも解決方法は同様だと思います。

 

  • PlatformIOからスケッチをUploadできない→Zadigでドライバを指定→そこから更に別のドライバ指定
  • USBストレージとして認識すらされない→一旦pico関連デバイスを片っ端から削除
続きを読む

UnityのAudioSourceの鳴り方やDSP Buffer Sizeの仕様を確認する

最近趣味でFC版スターソルジャーのUnityによる移植をしていて(きっかけはブログの別記事参照)、サウンド以外は一通り移植し終えて遊べる状態になったのですが、サウンド移植にあたって次のフレームで急遽鳴らし方を変えなければいけないなどのシビアなタイミングを要求されたりするので、まずUnityのAudio機能がどういう仕様になってるのかを検証してみた、というのが今回の記事です。

 

あくまでこれらは自分のPC環境による、WindowsのUnityエディタやWindowsビルドでの結果です。別環境では結果が変わる事柄もあります。

Unity 2021.3.13f1 でテストしています。

 

  • AudioSourceのVolumeã‚„Pitchの変更はどのくらい細かい頻度で可能なのか
  • AudioSource.Playはどのくらい細かい頻度で反映可能なのか
  • AudioSource.Playのアタックが弱まる
  • AudioSettings.dspTimeの分解能
  • AudioSource.PlayScheduledの時間の精度
  • DSP Buffer Sizeを変えるとどのくらい遅延が増減するのか
    • 測定方法
    • 測定結果
  • DSP Buffer Sizeの変更と音飛びの関連性
  • 最後に
続きを読む