電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

8pin AVR LFO 机上検討2

8pin AVR LFO 机上検討2

8pin AVR LFO 机上検討1からの続き。

ところでADC値は10bit(1024レベル)で、これが i = 0, 1, ... , 15 (すなわち n = 1, 2, 4, ..., 32768)にリニアにマッピングされることが望ましい。ADC[9:0] を {ADC[9:6], ADC[5:0]} とビット分割し、上位4bit( ADC[9:0]÷64 の商 p)として i に対応する値を取り出し、同時に余り q = ADC[9:0]%64 を得る。商pで256ckの割り込みが何回になるかを決め、余りqは補正する役を担う。

補正は直線補間でも良いが、ここでは iをパラメータとする補間関数  g_i(q) を定義する。g_i(q)は、g_0(0)=0, g_0(64)=256, g_1(0)=0, g_1(64)=512 ...

といった境界条件を持つ。これより考えれば、iが1増えるとレンジが倍になるわけで、

g_1(q) = 2 g_0(p)g_{i}(q) = 2 g_{i-1}(q)

すなわち、

g_i(q) = 2^i g_0(q)

となる。g_0(q)を(テーブル等で)定義すれば、これに定数を掛けることで補間関数g_i(q)を算出することができるとわかる。

なお現実的に g_0(q)の取りうる値は0から255である。

iに対応するADC値まで書き入れると次表のようになる。

ADC i n f[Hz] 1/f[sec]
0 0 1 244
64 1 2 122
128 2 4 61.0
192 3 8 30.5
896 14 16384 0.0149 67.1
960 15 32768 0.00745 134

(8pin AVR LFO 机上検討3へ続く)