「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



TINY2313に流し込んで疎通確認をしてみたところ
そこそこ動くことがわかったので、そもそも
記憶を頼りに思いつきでコーディングした仕様が
オリジナルとどのくらい合ってるのか確かめる
ことに。

以前買ったYMZ294がいくつか残っているので、
コレのレジスタに色んなパターンを入れて鳴らして
比較するのがスジなんだけど、色々めんどいので、
PSG内蔵PCのエミュレータでお茶を濁そうっていう
作戦。

とりあえずMSX MAGAZINE永久保存版のCDに収録
されていたMSXPLAYerを久々に動かしてみる。

動くことは動くんだけど… ボリウムを上げても
音が出ない。なんでだろう?と思って調べてみると、
どうやらVISTA以降では音が出ないみたいと判る。

XPモードにインストールするか?とか考えたんだけど、
めんどいのでM88をチョイスしてみる。V2モードの
disk basicから起動。

cmd playでPSGを鳴らしてみる。鳴る。ok。
cmd soundでPSGのレジスタに値を書いてみる。
鳴らない。鳴らないなぁ。88SRのリファレンス
マニュアルを引っ張り出してくる。

cmd soundは拡張音源基盤用命令?内蔵PSGや
FM音源のレジスタもBASICコマンドから扱えた
はずなんだけどなぁ…と思って調べなおす。

cmd voice regなんて命令あったっけ?
やってみたら、思い通りに音が出る。



で、試したかったのはエンベロープ形状の変更
を行った場合と、エンベロープ周波数の変更を
行った場合とで、それぞれエンベロープパターン
が巻き戻しされるのかどうか。

やってみたところ、形状の変更(レジスタ13番)
では巻き戻しされてエンベロープの頭から再生
されて、周波数の変更(レジスタ11と12番)では
巻き戻されないってことが判った。思ったとおり。


それ以外の機能はあまり迷うような仕様はなかった
と思うんだけど、周波数変更を行った場合に、
内部のカウンタ値をクリアするのが正しいのか否か。

高いところからピューーーって落ちるような音
(つまり音程が滑らかに下がったり上がったり
変化する音)の場合に、カウンタをいちいち
クリアすると、頻繁にレジスタ書き換えすると
音質が濁るだろうなぁと。

理想は、DDSみたいに足しこむ位相を変化させる
だけにすれば滑らかに周波数だけ変わっていく
んだけど、現状のプログラムは一律カウンタを
クリア。なので、コマンドを打ち込む度にノイズ
が載るはず。処理の都合上とりあえずそうしたん
だけど、ちょっとだけ考えないといかんかなぁ?

とりあえず、「ピューーー」って音程が変化する
ような音を鳴らしてみようかな。どの程度の
ノイズが出るかはそれで判るでしょう。


細かいところの仕様をもうちょっと確認してみたい
ので、M88をもうちょっと弄ってみるかな。


http://headlines.yahoo.co.jp/hl?a=20120512-00000013-jij-soci
「描ける」漫画喫茶。ほぉ。将来の漫画家の
タマゴがこういうところから出てくるのかな?
半田付けができる喫茶店を(略)

http://headlines.yahoo.co.jp/hl?a=20120511-00000000-fsi-bus_all
韓流ブーム、ふたを開けるとまぁこんなもん
なのかな。



コメント ( 0 )




シミュレータでそれなりに動くことがわかったので、
TINY2313に流し込んで、サクッと回路組んで動かして
みることに。

久々にAVRISPmkIIを取り出してきて、hexファイルを
書き込んでみる。エラー。お?


この間このTINY2313ボードを使ってたときはちゃんと
読み書きできてたはずなんだけどなぁ。なんでだ?

色々ともがく。まずはチップ不良を疑って、新品の
TINY2313に差し替えて書いてみる。書けた。やっぱ
チップの不良か?

fuseビットも書いてみる。んで、ベリファイ。
…エラー。お?なんで?


ここからしばしドハマリする。

AVRISPmkIIのファームが逝ったか?と思ってファーム
のアップデートを行ってみる。エラー。

AVRISPmkII自体が壊れたのか?と思って色々探ってみる。
マニュアルでファーム書き換えする方法がpdfに載って
たので試してみる。ちゃんとアップデートできた。よし。

改めてhexを書いてみる。エラー。おかしい…。

新しいTINY2313を挿して再度書いてみる。書けた。
fuseビット書き換え。出来た。ベリファイ。エラー。

ん?デジャブー?

もしや…fuseビット書いたら通信出来ないってことは、
クロックを外部にした途端にってこと?TINY2313ボード
に挿してあった16Mhzのセラロック???

セラロックを別のに差し替えてみる。脚がもう少し
カチッと刺さるタイプに。

おぉ。サクサク読み書きできるようになった。なったよ。
ふぅ。


ようやくもとの作業に戻る。

ブレッドボードに配線して、イヤホンとUSBシリアル
コンバータを接続。PC側ソフトには「シリアルデバッグ
ツール」を使用して、シリアルコマンドでレジスタの
設定値を送信してみる。


お!ちゃんと鳴った!!!

シミュレータで試したようなことを一通りやってみる。

・toneの周波数を変えてみる。変わる。
・ボリウムを変えてみる。変わる。
・3ch同時に鳴らしてみる。鳴る。
・エンベロープ掛けてみる。掛かる。
・ノイズを鳴らしてみる。鳴る。
・ノイズの周波数を変えてみる。変わる。

おぉ。バッチリだな。


とりあえず疎通としてはかなりイイカンジまで動いた
んだけど、さらに色々弄っていたら、1点だけ変。

エンベロープパターンのうち、永遠に繰り返し
するやつはちゃんと出るんだけど、1波形だけ
出て2波形目から最小か最大音量に張り付くタイプ
(繰り返ししないエンベロープ)のヤツがうまく
巻き戻らない。2波形目以降の値(lowかhighに
張り付きっぱなし)になっちゃう。何でだろう?

サックリとソースを眺めてみるも、ちゃんと
巻き戻しするように作ってあると思うんだけどなぁ。
まぁ、あとでちゃんと眺めなおしてみよう。

とりあえずここまで進んだので、プチ満足。
通信速度はもうちょっと速くしたいのと、この
バグっぽいのの原因調査だな。

それにしても、AVRISPmkIIが壊れてなくてよかった。


http://headlines.yahoo.co.jp/hl?a=20120510-00001606-yom-int
これは、去年の震災後の冷静な日本人の対応を見ての
結果なのかな。それにしても、中国がずいぶん上位に
居るなぁと思ったんだけど、「悪い」の数値も大きい
から、差し引きしたらまたちょっと違う結果になる
んじゃないかな。日本も「悪い」の数値はドイツや
カナダより大きいもんなぁ。



コメント ( 0 )