いやーつぶさにみてくとボロボロでしたね。そもそもクロック8分周してたあたりから…
紆余曲折はおいておいて、こんな状態です。
http://www.geocities.jp/denzeeen/denzi/sidTinyV2.txt
ソースはこちら。
まるで違うモノに。
ボリューム値は05-253でとれますので(電流制限抵抗の分圧で微妙になっている)
05-127が正弦波
128-250がノコギリ波
それ以上がカンカンです。
カンカンは似たようなことをやってるプログラムを見つけて、そこの波形計算ルーチンを仕込んでみました。
○問題はまずAD変換のオーバヘッド。
値が帰ってくるまでに時間がかかり、取得するとこで音が途切れてました。
ループの中で、音のジャマをしないようにAD変換をやるように変更しました。
測ってないけど、ようやくちゃんとしたSin波が出てそうです。
○gcc-avrですが多ビットの乗算除算を行うとガッと容量が増加します。
極力シフト演算がよさげかな。
まだryoさんのみたく、楽しげな音が出ておりません。
ちとそこのあたりを遊んでみたく。
○気がついたのだが、こいつのベースになってるボリュームアンプが絶滅。
昔は横浜市立中央図書館近くの100円ローソンですら見かけたものだが。
まだストックは5つくらいはあるのだけど。
代用になりそうなモノを見繕ってますがヘッドホン端子がついているようなのはなかなか。(昔は100円AMラジオなんかもあったんですけどね。)
カンカンの1行ルーチン(?)に唖然としました
返信削除メモリ&クロックの両縛りに耐えぬくのはさすがです
乗除でサイズが増えるということは速度的にも不利かもしれませんね
乗除は組み方でまるで変わりますね。
返信削除もうアセンブラでやったほうがいいかもしれない(笑)
しかしケチケチ作戦が功を奏して、まだフラッシュメモリ450バイトくらい余ってます。
もし波形データをEEPROMに移せば、あと60バイトくらいはなんとか。
○本当に波形でてるのか心配になって、値をグラフ化してみたhtmlがあるのですが
http://www.geocities.jp/denzeeen/denzi/1024Demo.html
最後のがカンカンの波形です、こんなん出てるんですね。
アセンブラで1クロック、1Byteを追い込むPGもやってみたい世界です
返信削除16bitの掛算はカンカンのとこだけ(?)なので節約するならインラインアセンブラとか
でもシフト演算じゃ自由度が低すぎて…
あ、さらに縛られるとか???