Raspberry Pi から、I2C接続にて
12 bit DAC MCP4726
を制御するPython script を書いた。
**************************
import smbus, time
bus = smbus.SMBus(1)
def MCP4726(Vout):
data1 = (Vout >> 4)
data2 = ((Vout & 15) << 4
data0 = [data1, data2]
print "Vout = ", Vout
bus.write_i2c_block_data(0x60, 0x40, data0)
for i in range(0, 4095, 500):
MCP4726(i)
time.sleep(3)
**************************
MCP4726(Vout) 関数を用いて、Vout に0から4000まで500刻みで
3 sec 間を置いて出力するプログラム。
bus.write_i2c_block_dataの
0x60はI2Cアドレス、
0x40は通常設定、
data0 で12 bit のデータを送る。
12 bit なので、最大で 1111 1111 1111b = 0xFFF = 4095
で、最初の8 bit と、後ろの4 bitのブロックに分けて送信する。
data1 = (Vout >> 4)
data1は最初の8 bitで、入力されたVoutを右に4 bitシフトして後ろの4 bitを消している。
data2 = ((Vout & 15) << 4
data2は後ろの4 bitで、Voutと15(0000 0000 1111b)とANDを取って下位4 bitを取り出し、上に4 bit シフトさせている。
これで、4095 (0xFFF) を送ると、
0xFF, 0xF0
の2ブロックデータが送信される。
2015年9月4日金曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿