人気ブログランキング |

体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

Japanino ArduinoISPで ATtiny13 でPWM書込み (2) - 蛇足・脱線 (8/21)

前の記事の続きだが、LEDが光らなくて 部品を壊したかと思ったら、ブレッドボードの配線に使ってる百均のガーデニング用品の0.5mmワイヤーかまたはLEDが接触不良だった。ビニール被膜もあり、安くて重宝していたのだが、カット済みのしまいこんでいたのが錆びていたのかもしれない。

LEDの足と一緒にサンドペーパーでこすった。
ボタン電池で動くセットを作っておいてよかった。部品を入れ替えて動作確認できた。
昔は部品の足をやすりで磨くとか基本中の基本だったなあ。

蛇足:
そうそう、ATtiny13のデータシートだが、12ページにアセンブラとC言語の比較ソースが載っている。
EEPROMの例だが、Cはアセンブラと1対1で対応している。
だからCソースのマクロはアセンブラの命名規則を踏襲しているのか~
Cなら以下のような殆ど似たようなマクロ名なら意味が同じはずなんだが、
EECR |= (<<EEPE);
このEECRはアセンブラではレジスタ名で、EEPEはビットを表す数値。
上のマクロは一瞬EECRっていう変数にEEPRの値をシフトして代入するのかと思うよ。
でもEECRは、*EEPROM_REGSTORっていう定義になってるはず。
アセンブラなら、
LDI EECR, EEPR で(LDIは何でもいい)
左のEECRはレジスタ名で、EEPRは値。
マクロ定義はアセンブラソースを置き換えているから実はポインタなのに変数に見えるのか~
やー、80系アセンブラは確かに「第一オペランド←第二オペランドを代入」が多いから、
こんなマクロになるのだろうけど、他のCPUはそうでもないんじゃないだろうか。

脱線:
ということで68系のCPUのアセンブラを調べてたら、X68000のADPCMですごい事をやってた人がいたらしい。
Z80 vs 6502 - 魔法使いの森 Programming Tips
こちらのサイト様の「X68k の PCM8 など、膨大なテーブルを導入して、誰もが「リアルタイム処理は無理」と考えていた処理を実現している例もある」の方(故人)は、リンク先に詳細があるが、1声しかないADPCMで同時に4声出すという素晴らしい音楽演奏ドライバを作成された。
たぶんリンク先のページの上の方にあるようにX68000のゲーム「ボスコニアン」は他の機種よりずっと音がよかった。

テーブルゲーム ボスコニアン BGM - Youtube


X68000 ボスコニアン サウンドトラック - Youtube



by k1segawa | 2016-08-21 20:03 | arduino, AVR | Comments(0)