goo blog サービス終了のお知らせ 
「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 )




TINY2313の似非PSG、コーディングは一応終わり、
通常使用のパターンでシミュレーションを流して
みる。

とりあえず思ったとおりに動いてくれててなにより。
処理ステップ数としてもまぁまぁ。こうなったら
次はようやく実機に流し込んで動かしてみよう。

通信速度はとりあえずで設定してあるんだけど、
実はあと一桁くらい速くしてもストックとフローは
つりあうはずなんだよな。まぁ、後の話。


http://jp.makezine.com/blog/2012/05/converting-an-inkjet-printer-to-print-pcbs.html
あぁ、このプリンタ販売されないかな?


http://akizukidenshi.com/catalog/g/gK-05763/
秋月のルネサスRXの基板。RXって、1クロック1命令
なんだなぁ。パイプライン使ってないのかな?
結構イイカンジなんだな。オイラは1クロック1命令
が結構好きなんだなと気付いた。

http://news.mynavi.jp/news/2010/11/17/124/index.html
RLシリーズもちょっと気になる。


http://headlines.yahoo.co.jp/hl?a=20120510-00000094-it_gadget-game
ゲーマーの人でも、コレ自宅に買おうって言う
ツワモノは居ないんじゃないかな?


http://www.cnn.co.jp/fringe/30006528.html
怪物級に巨大な黒点で、大規模太陽風(太陽嵐)が
吹き荒れるかも…だって。オソロシイ。



コメント ( 0 )




相変わらず似非PSG。

大枠の骨組みと、tone A、noise Aだけ出来上がった
状態で一通りシミュレーションでパターンを網羅
させてみる。

いくつかしょうもないバグが残ってたので早速直して
動かしてみる。大体ok。


前から一つだけ気になっていること。数値比較を行う
時の不等号のこと。

アセンブラでは不等号による比較(<とか>とか≦
とか≧)を直接行う命令は無いので、普通はcpとか
cpi、cpcとかを使って引き算し、キャリーフラグや
ゼロフラグの値見て判断することになるんだけど、
cp命令関係ならまだ比較する数と比較される数を
左右入れ替えて好きなように不等号の比較を行える
からいいんだけど、addやsub関係の命令の結果だと、
左右を自由に入れ替えるわけに行かない(実行結果
が左のレジスタに格納される)

そういう場合には「不等号に=が含まれないのは
仕様です」と割り切るか、レジスタと処理時間を
投じて左右入れ替えしつつレジスタの値は保存
しておくか…

ちょっと悩む。どうしようかね…


あと、TINY2313だったら、SRAMは256バイトも
搭載されてないから、インデックスレジスタで
SRAMアクセスするときは上位1バイトはゼロ固定
でも良く、コレを使えばSRAMアクセスの処理が
多少削れて高速化できるんだけど、ソースが
見づらくなったり、他のチップに移植する時に
困ったりするからどうしたものやら…

そのあたりが片付いたら、シミュレータでなく
実機で実際に鳴らしてみよう。


http://www.kkohki.com/Baader/astrosolar.html
頼んじゃったーよー。


http://headlines.yahoo.co.jp/hl?a=20120509-35016899-cnetj-sci
ソフトバンク、ペイパル提携か。微妙だな。


http://www.youtube.com/watch?v=KKUNDKdtD9o
カレントトランス作っちゃうっていうビデオ。
なかなか面白かった。



コメント ( 0 )




相変わらず、AVRのアセンブラで似非PSGをコーディング中。

タイマ割り込み処理内でtoneを3音、ノイズを3音、
それぞれボリウム指定かエンベロープに合わせて波形
を合成してPWM出力しないといけないんだけど、
モロモロのベース数値の計算処理と、toneの1/3分、
noiseの1/3分まで組めたところ。push/popも含めて
ここまでで最大180クロックちょっと。

繰り返し処理を極力省き、大部分がシーケンシャル、
一部が分岐処理で、大部分が1クロック命令なので
ステップ数≒実行クロックといった感じになってる。

残りはtoneとnoiseの2/3なんだけど、それぞれコピペ
してちょっと弄るだけで済むので、余程のバグでも
無い限りは増分80クロック程度で260~270クロック
程度で済む予定。

200クロックには収まらなかったけど、メイン処理と
割り込み処理合わせても400クロックには至らないので
なんとか回りそう。
なお、最長の見積もりの話なので、割込み処理は短い
ときは多分150クロックにも至らない程度かな。100
クロックくらいの揺らぎがある。この揺らぎが音質に
影響するようだったら、nopを入れて揺らがないように
しないといかんかなぁ…


http://www.youtube.com/watch?v=BQ3uBqHY124
この自動販売機。なんとなくヨサゲにみえるんだけど、
他の自販機でジュース買った日にはビリビリされそう。


http://headlines.yahoo.co.jp/hl?a=20120508-00000037-rps-biz
富士重、好調なんだなぁ。BRZかなぁ?ホンダが
このサイズのスポーツカー出しせば、熱かったあの頃
みたいに盛り上がりが期待できるんじゃないかと
思うんだけどな。


http://jp.makezine.com/blog/2012/05/the-importance-of-sketching.html
make:ブログのこの記事。大賛成!

何か作るときって、いきなり材料に寸法記入し始めたり、
キーボードに向かってコーディングし始めたりすると
オイラの場合大体ろくな結果にならないんだよな。

紙って偉大だよな。設計メモ書いたり、試作レベルの
モノを紙で作って寸法を確認したり。アタマ整理したり
うっかりに気付いて材料無駄にするのを防いだり。


http://headlines.yahoo.co.jp/hl?a=20120508-00000028-mai-soci
この栃木の発明家の「電気の要らない家電」の数々、
是非眺めてみたいな。この冷蔵庫って、どんな仕組み
なんだろう?

それと、最初なんのことやらと思った「GP」という単位。
これは一般市民にとってとても解り易い表現なんじゃ
ないかと思った。日本全国でテレビ見るのをやめれば、
原発10基分の電気が浮くと思えば。

電気要らないエアコンって、出来ないのかな?



コメント ( 0 )



« 前ページ 次ページ »