DACwrite()とDACwrite_byte()

はじめに

DACwrite()関数とDACwrite_byte()関数の動作を、 信号波形と対応させて説明します。

DACwrite()関数

「DACwrite()」関数は 8ビットのディジタル値をD/A変換器に送る関数です。

void DACwrite(unsigned char d);
と定義されます。 この関数はテキストにソースが与えられているので、 どのように動作するのかを理解してください。 関数のソースと 信号波形の関係は、次のようになります。
DACwrite()関数の動作
DACwrite()関数の動作

初期状態は、「SCLK」 (Serial CLocK) が高レベル、 「/CS」 (Chip Select) が高レベルです。 「DIN」 (Digital serial data INput) は、 この時点ではまだ与えません。 初期状態にするプログラムは、

CS_DAC(1); CK(1);
の部分です。 CS_DAC()やCK()については、 関数のソース または説明を見ましょう。 次に、「/CS」を低レベルにします。 これは、
CS_DAC(0);
で行われます。 16ビットのデータを8ビット×2回に分けて送信するプログラムが、
DACwrite_byte(0xd0); DACwrite_byte(0x02);
になります。 最後に、
CS_DAC(1);
で、「/CS」を高レベルにします。 これで、1セットのデータ転送になります。 同様の操作がもう一度行われます。

DACwrite_byte()関数

「DACwrite_byte()」関数は、
void DACwrite_byte(unsigned char d);
で定義されます。 8ビットの数値「d」をD/A変換器に送ります。 この関数の中身を作成します。 この関数の動作と信号波形の関係は下図のようになります。
DACwrite_byte()関数の動作
DACwrite_byte()関数の動作
「dの最上位ビットが1」かどうかを調べる方法は、 ビット演算・シフト上位ビットから順に0であるか1であるかを LEDに表示するプログラムを思いだしましょう。