2023年5月 この範囲を時系列順で読む この範囲をファイルに出力する
MPLABX-IDEv5.50、XC8_pic-as、PICkit3 の組み合わせでPICが動きました。
今までは古い古いMPLABv8.92を主に使ってきましたが、MPLABXへの引っ越しが完全に終わった感じです。出来るだけ新しいMPLABXを使わないと対応デバイスやら動作クロックの制限があって不便だったのです。
PICに対して行う要点は同じですが、大事なところが微妙に違うのには難儀しました。特に、プログラムメモリアドレスの指定とコンフィゲエーションビットの設定という超重要項目の設定方法が全く違うのには泣かされました。先達の情報に感謝です。
TMR1をコンペアモードで動かして所定の基底パルスが出ています。25fps向けの4,000Hzなので折り返しは250usec.です。オシロスコープにしっかりと波形が出ています。もちろん、先日作った基板でのテストです。
基本的なところがクリア出来ましたので、試行錯誤で散らかったソースコードを掃除して次のステップです。
追記
音声信号に変換するプリアンプ回路が思った様になりません。
アナログは苦手です。
追記
先達の情報にこんなんがありました。
単電源でアンバランス-バランス変換 その2
単電源でオペアンプを使う際の注意点というか基本が読み取れる回路図です。自分は単電源での使い方を間違って覚えているかもしれません。
試しにブレッドボードで組んでみましょう。
つか、基板作る前にテストしろよって・・
#PIC #タイムコード
今までは古い古いMPLABv8.92を主に使ってきましたが、MPLABXへの引っ越しが完全に終わった感じです。出来るだけ新しいMPLABXを使わないと対応デバイスやら動作クロックの制限があって不便だったのです。
PICに対して行う要点は同じですが、大事なところが微妙に違うのには難儀しました。特に、プログラムメモリアドレスの指定とコンフィゲエーションビットの設定という超重要項目の設定方法が全く違うのには泣かされました。先達の情報に感謝です。
TMR1をコンペアモードで動かして所定の基底パルスが出ています。25fps向けの4,000Hzなので折り返しは250usec.です。オシロスコープにしっかりと波形が出ています。もちろん、先日作った基板でのテストです。
基本的なところがクリア出来ましたので、試行錯誤で散らかったソースコードを掃除して次のステップです。
追記
音声信号に変換するプリアンプ回路が思った様になりません。
アナログは苦手です。
追記
先達の情報にこんなんがありました。
単電源でアンバランス-バランス変換 その2
単電源でオペアンプを使う際の注意点というか基本が読み取れる回路図です。自分は単電源での使い方を間違って覚えているかもしれません。
試しにブレッドボードで組んでみましょう。
つか、基板作る前にテストしろよって・・
#PIC #タイムコード
PICをプログラムするのに開発ツールのMPLABXと書き込み機のPICkitを使っています。
最新のMPLABXでアセンブラファイルを作ったので書き込みのテストを始めたのですがPICkit4が正常に動かない。認識はされているのに書き込みをすると正常な通信が出来ないとエラーを出します。イロイロ試すものの一向に改善しません。
こんな時はヴァージョンを落とすのも対策の一つです。原因がMPLABXにあるのかPICkit4にあるのかわかりませんので、開発ツールも書き込み機も世代を落とします。条件はXC8のアセンブラとPICkit3が使えることです。ver5.40、5.45、5.50が該当します。
ダウンロード済みだったver5.40を試すとアッサリ解決。正常なログが出ました。試行錯誤の6時間はなんだったのでしょう。
当面、ver5シリーズの最終版であるver5.50を使うことにします。
PICが正しく動くかのチェックはこれからです。正しく書きこんだ顔をしているのにダメって可能性もあるので安心するのは早いです。
PICkit4が動かないのは困りますが、こういった開発ツールではヴァージョンアップの過渡期によくあることです。気にしても始まらない。
#PIC
最新のMPLABXでアセンブラファイルを作ったので書き込みのテストを始めたのですがPICkit4が正常に動かない。認識はされているのに書き込みをすると正常な通信が出来ないとエラーを出します。イロイロ試すものの一向に改善しません。
こんな時はヴァージョンを落とすのも対策の一つです。原因がMPLABXにあるのかPICkit4にあるのかわかりませんので、開発ツールも書き込み機も世代を落とします。条件はXC8のアセンブラとPICkit3が使えることです。ver5.40、5.45、5.50が該当します。
ダウンロード済みだったver5.40を試すとアッサリ解決。正常なログが出ました。試行錯誤の6時間はなんだったのでしょう。
当面、ver5シリーズの最終版であるver5.50を使うことにします。
PICが正しく動くかのチェックはこれからです。正しく書きこんだ顔をしているのにダメって可能性もあるので安心するのは早いです。
PICkit4が動かないのは困りますが、こういった開発ツールではヴァージョンアップの過渡期によくあることです。気にしても始まらない。
#PIC
DI-1の内部電源はDC9vと表記あり。オペアンプの電源端子を実測すると8.3v。
MUSES01Dの定格電源は±9~±16v。単電源換算なら18~32vですから圧倒的電圧不足ぢゃね?ちなみにM5218やNJM4580Dは±2~±16v(4~32v)なので楽勝。
エージングをすれば良い方向になると思い込んではいたものの、NJM4580Dに比べて価格差ほど良質なのかと腑に落ちない感じはありました。ひょっとしてコレ?
MUSES02D、MUSES8820D、MUSES8920Dは±3.5~±16v(7~32v)です。DI-1向けならこれらを選ぶべきぢゃね!?
MUSES02Dをポチリました。エージングも評価も全部やり直しです。
MUSES02Dで納得いけば、MUSES02Dの廉価版ながらNJM4580Dより高音質と評判のMUSES8820Dも試してみましょう。安く済むに越したことはありませんので。
正直なところ、ナゼMUSES01DとMUSES02Dの2種なのかイマイチ理解出来ませんでしたが、電源電圧の違いではないかと思ったところ。
音質云々以前に、電圧低めの回路にはMUSESD01DではなくMUSES02Dを使うべきです。定格電圧を突っ込まずに良い音が出るワケありませんので。
メーカーの意図は想像の域を越えませんが、基本的な確認を怠ったことは大反省です。部品と販売店さんに謝らないといけません。
オペアンプの評価はこちらを参考にしました。
オペアンプの違いによる音質比較表
ここの評価を真に受けるなら、DI-1にはMUSES02Dではないか!?
#音の世界 #電子工作
MUSES01Dの定格電源は±9~±16v。単電源換算なら18~32vですから圧倒的電圧不足ぢゃね?ちなみにM5218やNJM4580Dは±2~±16v(4~32v)なので楽勝。
エージングをすれば良い方向になると思い込んではいたものの、NJM4580Dに比べて価格差ほど良質なのかと腑に落ちない感じはありました。ひょっとしてコレ?
MUSES02D、MUSES8820D、MUSES8920Dは±3.5~±16v(7~32v)です。DI-1向けならこれらを選ぶべきぢゃね!?
MUSES02Dをポチリました。エージングも評価も全部やり直しです。
MUSES02Dで納得いけば、MUSES02Dの廉価版ながらNJM4580Dより高音質と評判のMUSES8820Dも試してみましょう。安く済むに越したことはありませんので。
正直なところ、ナゼMUSES01DとMUSES02Dの2種なのかイマイチ理解出来ませんでしたが、電源電圧の違いではないかと思ったところ。
音質云々以前に、電圧低めの回路にはMUSESD01DではなくMUSES02Dを使うべきです。定格電圧を突っ込まずに良い音が出るワケありませんので。
メーカーの意図は想像の域を越えませんが、基本的な確認を怠ったことは大反省です。部品と販売店さんに謝らないといけません。
オペアンプの評価はこちらを参考にしました。
オペアンプの違いによる音質比較表
ここの評価を真に受けるなら、DI-1にはMUSES02Dではないか!?
#音の世界 #電子工作
無改造のDI-1のエージングは150時間を経過しましたが、ここへ来て急に音が良くなってるんですよ。24時間毎に音が変わるので評価がアッチコッチします。
良いの意味はDI-1特有の高域が尻つぼみする感じがなくなったことです。よくよく比べればMUSES01Dの方が透明感を感じますが、言われなければわからない違いです。実用上はどっちでもいいんじゃね?って感じ。
MUSES01Dのエージングが300時間ならまだ数日ありますが、DI-1に感じていた問題が解決してしまったなら無理してMUSESD01D化する必要はありません。
ただ、オペアンプよりもコンデンサの方が音に影響がある可能性もありますので、この辺りも試すつもりです。
#音の世界
良いの意味はDI-1特有の高域が尻つぼみする感じがなくなったことです。よくよく比べればMUSES01Dの方が透明感を感じますが、言われなければわからない違いです。実用上はどっちでもいいんじゃね?って感じ。
MUSES01Dのエージングが300時間ならまだ数日ありますが、DI-1に感じていた問題が解決してしまったなら無理してMUSESD01D化する必要はありません。
ただ、オペアンプよりもコンデンサの方が音に影響がある可能性もありますので、この辺りも試すつもりです。
#音の世界
MUSES01DのDI-1のエージングは230時間経過です。
先日「シャー」ノイズが増えたと書きましたが、電池の電圧が落ちたことが原因みたいです。電池を交換したところノイズは無くなりました。ファンタム駆動なのに電池の影響を受ける不思議。その他、無改造品とは挙動が違うところがあり、正確な比較が出来ない感じもあります。
音は良くなったと思います。高域の抜けが良くなり、特に残響音がストンと切れる感じはありません。しかし、一緒にエージングをしてきた無改造品も音質の向上が認められたために費用分の価値があるかというと正直微妙です。
さて、どうすっかな。。。
#音の世界
先日「シャー」ノイズが増えたと書きましたが、電池の電圧が落ちたことが原因みたいです。電池を交換したところノイズは無くなりました。ファンタム駆動なのに電池の影響を受ける不思議。その他、無改造品とは挙動が違うところがあり、正確な比較が出来ない感じもあります。
音は良くなったと思います。高域の抜けが良くなり、特に残響音がストンと切れる感じはありません。しかし、一緒にエージングをしてきた無改造品も音質の向上が認められたために費用分の価値があるかというと正直微妙です。
さて、どうすっかな。。。
#音の世界
MUSES01DのDI-1のエージングは185時間経過です。
無改造品は80時間時点から変化はありません。高域の詰まり感が減少して伸びる感じが出ているのでエージングは望ましいと思いますが、この辺りが限界なのかな?
MUSES01Dの方は高域の明瞭度が更に良くなり、主旋の裏にある細い音が一層聴こえる様になっています。特に無改造品では聴き取れない高域のリバーブ音が存在感を持って聴こえます。無改造品とはすでに別物です。ただ、「シャー」ノイズが耳に付くような気もします。S/Nが悪くなったのではなく、高域が主張されるのに伴って音源からの「シャー」も大きくなったようです。
良し悪しはともかく、改造によって別物になった意味では現状でもアリだと思いますので、この後はエージングの時間を決めることでしょうか。本番中に音が変わっても困りますからね。変化が落ち着くタイミングを知りたいところです。
#音の世界
無改造品は80時間時点から変化はありません。高域の詰まり感が減少して伸びる感じが出ているのでエージングは望ましいと思いますが、この辺りが限界なのかな?
MUSES01Dの方は高域の明瞭度が更に良くなり、主旋の裏にある細い音が一層聴こえる様になっています。特に無改造品では聴き取れない高域のリバーブ音が存在感を持って聴こえます。無改造品とはすでに別物です。ただ、「シャー」ノイズが耳に付くような気もします。S/Nが悪くなったのではなく、高域が主張されるのに伴って音源からの「シャー」も大きくなったようです。
良し悪しはともかく、改造によって別物になった意味では現状でもアリだと思いますので、この後はエージングの時間を決めることでしょうか。本番中に音が変わっても困りますからね。変化が落ち着くタイミングを知りたいところです。
#音の世界
オレメモです。
PICにおいてPORTx,nに対するbit反転方法。
TMR1のコンペアで割り込みしてPORTの出力を反転すればパルスになりますから、差動バイフェーズで重要です。
; PORTAの3bit目だけ反転させる。
MOVLW 00001000B ; Wレジスタにフィルタ値を定義 3bit目だけ1
XORWF PORTA,SELF ; PORTAの3bit目だけを反転
※ 書式はXC8のPIC-as
データシート読むとPORTxではなくLATxに対して計算を当てるのがいいらしいのですが、ここではわかりやすさのためにあえてPORT相手です。
XORの計算は次の通り。
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
PIC16系にはbit単位の反転命令がありませんので、反転させたいbitだけ1にしたフィルタ値をXORで当てます。
左の値をPORTの現在値、右の値をフィルタ値とすると、2行目と4行目が反転になり、1行目と3行目は非反転になります。
論理演算の基本ちゃ基本ですが、案外忘れてしまうのでメモメモ。
アセンブラに限らずですが、出来るだけ簡単な計算で条件分岐を行うことが大事です。
例えば処理を10回繰り返すとして、0から加算してカウンタが10になったことを判断するより、10から減算して0になったことを判断する方が好みです。PICのアセンブラの分岐処理は計算結果が0かで扱うのが自然だからです。
; 10回繰り返す
MOVLW 10 ; COUNTに10を設定する
MOVWF COUNT ;
LOOP:
~ 10回繰り返す処理をここに書く ~
DECFSZ COUNT,SELF ; COUNTをデクリメント(-1)し、結果が0なら次行の処理を飛ばす
GOTO LOOP ; LOOPを繰り返す
~ 繰り返しの後の処理をここに書く ~
DECFSZはDECFとBTFSSを組み合わせたマクロ命令みたいなものです。
少し蛇足ですが、レジスタの現在値が0であるかを見るには、
; レジスタNUMの値は0か?
MOVF NUM,SELF ; 自分自身へ値をコピー
BTFSC STATUS,ZE ; 計算結果がゼロかどうかで分岐
GOTO NUMisZERO ; ゼロの場合NUMisZEROへジャンプ(CALLでもいいけど)
MOVFで自分自身に値をコピーするとSTATUSのゼロフラグ以外変化しないので便利です。
もちろんWレジスタにコピーしても同じ結果を得られますが、Wレジスタが変化しない方がスッキリまとまることが多いようです。
てな感じで、PICのアセンブラのリハビリをしています。
#PIC
PICにおいてPORTx,nに対するbit反転方法。
TMR1のコンペアで割り込みしてPORTの出力を反転すればパルスになりますから、差動バイフェーズで重要です。
; PORTAの3bit目だけ反転させる。
MOVLW 00001000B ; Wレジスタにフィルタ値を定義 3bit目だけ1
XORWF PORTA,SELF ; PORTAの3bit目だけを反転
※ 書式はXC8のPIC-as
データシート読むとPORTxではなくLATxに対して計算を当てるのがいいらしいのですが、ここではわかりやすさのためにあえてPORT相手です。
XORの計算は次の通り。
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
PIC16系にはbit単位の反転命令がありませんので、反転させたいbitだけ1にしたフィルタ値をXORで当てます。
左の値をPORTの現在値、右の値をフィルタ値とすると、2行目と4行目が反転になり、1行目と3行目は非反転になります。
論理演算の基本ちゃ基本ですが、案外忘れてしまうのでメモメモ。
アセンブラに限らずですが、出来るだけ簡単な計算で条件分岐を行うことが大事です。
例えば処理を10回繰り返すとして、0から加算してカウンタが10になったことを判断するより、10から減算して0になったことを判断する方が好みです。PICのアセンブラの分岐処理は計算結果が0かで扱うのが自然だからです。
; 10回繰り返す
MOVLW 10 ; COUNTに10を設定する
MOVWF COUNT ;
LOOP:
~ 10回繰り返す処理をここに書く ~
DECFSZ COUNT,SELF ; COUNTをデクリメント(-1)し、結果が0なら次行の処理を飛ばす
GOTO LOOP ; LOOPを繰り返す
~ 繰り返しの後の処理をここに書く ~
DECFSZはDECFとBTFSSを組み合わせたマクロ命令みたいなものです。
少し蛇足ですが、レジスタの現在値が0であるかを見るには、
; レジスタNUMの値は0か?
MOVF NUM,SELF ; 自分自身へ値をコピー
BTFSC STATUS,ZE ; 計算結果がゼロかどうかで分岐
GOTO NUMisZERO ; ゼロの場合NUMisZEROへジャンプ(CALLでもいいけど)
MOVFで自分自身に値をコピーするとSTATUSのゼロフラグ以外変化しないので便利です。
もちろんWレジスタにコピーしても同じ結果を得られますが、Wレジスタが変化しない方がスッキリまとまることが多いようです。
てな感じで、PICのアセンブラのリハビリをしています。
#PIC
LTC Generator のファームウェアもボチボチ製作開始です。初期設定から整理を始めています。
まずはPICとプリアンプの確認を兼ねてパルス出力のテストプログラムからでしょうか。これが思惑通りにならないと何も始まりません。
30fps向けの2,400bpsと25fps向けの2,000bpsです。実際は倍の4,800Hzと4,000Hzのパルス生成です。
生成にはTMR1をコンペアモードで使います。
TMR1はタイマと呼ばれるもので、CPUクロックなどをキーにした自動カウンターです。時間の計測に使えます。
コンペアとはタイマが指定の値になったらタイマの値を初期化しつつフラグを立てる機能です。一定の周期を得られます。
周期を動的に調整して1時間あたりの総カウント数を出来るだけ正確にしようというのが今回の肝です。
#PIC #器具の製作 #タイムコード
まずはPICとプリアンプの確認を兼ねてパルス出力のテストプログラムからでしょうか。これが思惑通りにならないと何も始まりません。
30fps向けの2,400bpsと25fps向けの2,000bpsです。実際は倍の4,800Hzと4,000Hzのパルス生成です。
生成にはTMR1をコンペアモードで使います。
TMR1はタイマと呼ばれるもので、CPUクロックなどをキーにした自動カウンターです。時間の計測に使えます。
コンペアとはタイマが指定の値になったらタイマの値を初期化しつつフラグを立てる機能です。一定の周期を得られます。
周期を動的に調整して1時間あたりの総カウント数を出来るだけ正確にしようというのが今回の肝です。
#PIC #器具の製作 #タイムコード
MUSES01DのDI-1のエージングは135時間経過です。
劇的ではないものの、時間経過と共に安定感と明瞭感が増しています。無改造品との違いも分かりやすくなってきました。
今朝感じたことは、アコースティックギターのピックや指が擦れる音が一層明瞭に聴こえてきたことです。そういった音を主張したミキシングではありませんし、パルスに近い音が大きくなったワケでもありませんが、音の向こうの無音が以前より感じられる様になったとでも言えばいいでしょうか。聴こえるということは音が大きくなったかそれを隠す余計な音が無くなったかのどちらかですが、原因は定かでないものの、聴き取り難かった音が明瞭になったことは事実です。
音作りは好みの世界で、低能率やノイズすら「味」や「色」とされることもありますが、ダイレクトボックスは楽器の音をPAに受け渡す入口ですから正確に次に渡すことが役目だと考えています。正確の意味は演奏者が作った音を足しもせず引きもせずということです。
どこからの情報かわからないのですが、MUSES01Dのエージングは300~350時間らしいので半分経過です。
ちなみに無改造品の変化は止まった気がします。そのため改造品と差が開いた印象があるのかもしれません。途中参戦なので少し短いですが、ここまでのエージング時間は約80時間だと思います。
今後も改造品と共にエージングを続けますが、無改造品のエージングは歪み限界から-3dBのピンクノイズを100時間当てる、としておきましょう。
#音の世界
劇的ではないものの、時間経過と共に安定感と明瞭感が増しています。無改造品との違いも分かりやすくなってきました。
今朝感じたことは、アコースティックギターのピックや指が擦れる音が一層明瞭に聴こえてきたことです。そういった音を主張したミキシングではありませんし、パルスに近い音が大きくなったワケでもありませんが、音の向こうの無音が以前より感じられる様になったとでも言えばいいでしょうか。聴こえるということは音が大きくなったかそれを隠す余計な音が無くなったかのどちらかですが、原因は定かでないものの、聴き取り難かった音が明瞭になったことは事実です。
音作りは好みの世界で、低能率やノイズすら「味」や「色」とされることもありますが、ダイレクトボックスは楽器の音をPAに受け渡す入口ですから正確に次に渡すことが役目だと考えています。正確の意味は演奏者が作った音を足しもせず引きもせずということです。
どこからの情報かわからないのですが、MUSES01Dのエージングは300~350時間らしいので半分経過です。
ちなみに無改造品の変化は止まった気がします。そのため改造品と差が開いた印象があるのかもしれません。途中参戦なので少し短いですが、ここまでのエージング時間は約80時間だと思います。
今後も改造品と共にエージングを続けますが、無改造品のエージングは歪み限界から-3dBのピンクノイズを100時間当てる、としておきましょう。
#音の世界