PICCにハマった!?
宿題になっているMIDI-CVのファームウェアをPICCで書いているのですが、結構苦戦しております(笑)
MIDIキーボードで弾く分には全く問題ないのですが、シーケンサーソフトで別チャンネルのデータを含んだ大量のデータを流すと、どうも追従していかないようです。
アセンブラでは、こんなこと無かったのに…(・_・、)
LISTファイルを眺める気力もないので、MIDI受信部をリングバッファで対応するか、それでもだめなら#ASMプリプロで記述するかしかないかな。
おまけに、PICCは関数の仮引数などのスコープが変な場合があって、原因が判るまで昨日1日ハマってしまいました。
だったらポインタを使えば?ということですが、これもどうも挙動不審なのでメモリに余裕がある場合には、staticで使った方が、安全で高速と言う結論に…
(Cで記述する意味が無いじゃないか!!)
プログラマでは無いですが、仕事柄大量のデータを高速で処理するため、CやC++アプリを突貫で書くことが良くありますが、こんな基本的なことで悩んでいると仕事になりません。
あ゛ー疲れた、そろそろAVRに乗り換えようかななんて本気で思ったりして(笑)。
天気も良いし、散歩でも行こうっと。



コメント
>シーケンサーソフトで別チャンネルのデータを含んだ大量のデータを流すと
セレロン400を載せた自作PCでcubase動かしているときを思い出しました。
まったく普通に動かないから設定の仕方が悪いんじゃないかと、ずーっといじっていたのにまったく解消せずCPU速いものに取り替えたら何事も無かったかのように普通に動くようになったと・・・
投稿者: r0r0 | 2006年01月29日 17:40
AVRはあまり初期投資費用が掛からないので気持ちが揺れたときにはお勧めします(笑)。
シミュレータ → AVR Studio (atmel)
C言語 → WinAVR
書き込み器 → ELM ChaNさんのシリアル書き込み器+書き込みソフト
投稿者: Chuck | 2006年01月29日 17:59
rOrOさん>
さすがにセレロン400はきつそうですね。
シーケンサはCubaseを使ってますが、1chづつミュートを外して負荷を加えていくと、突然音が飛びます(笑)
Chuckさん>
かなり気持ちが揺れました(笑)
少なくとも1/4クロックのPICよりは処理が高速なようですね。
ChaNさんのサイトにあるシリアルのISPアダプタなら簡単そうですね。
折角なので、秋月で買ったFT232BMでUSB対応のISPアダプタを作ってみようかしら…
投稿者: RJB | 2006年01月29日 18:45
僕もこの問題、AVRで悩んだことがあるんですが、UART割り込み内の受信バッファを増やす(32>64)事で回避できました。
開発初期はランニングステータス処理だとかリアルタイムメッセージの処理で苦戦しましたが、何とか使い物になるようになった、と思ったら、デマルチプレクサの切り替えタイミングの問題で僅かに各CVCh間でクロストークが・・・^^;
同時に基板のリークも関係していて、仕方ないのでコンデンサ容量を増やす+更新タイミングの見直し・・やる事が増えて放置状態です・・
PWM式だとシンプルに出来そうですねー
投稿者: masa921 | 2006年01月31日 00:08
masa921さんどうもです。
やはり受信バッファを設けた方がいいですかね~
でもMIDIの場合、1バイト受信するのに約300usもあるはずなんだけど…
よっぽどPICCのgetc()が遅いのかしら。
なるほど、マルチチャンネル対応もいろいろと難しいのですね。
いずれ挑戦してみたいですが、そのときはAVRかな(笑)
投稿者: RJB | 2006年01月31日 01:44