From 24e96ba4331f6caa84da5f28b5314a110b6d7025 Mon Sep 17 00:00:00 2001 From: npotts Date: Sun, 10 Jan 2016 00:23:03 -0700 Subject: [PATCH] 12 bit ADC needs to have initial request bits shifted a bit --- convertors/mcp3008/mcp3008.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/convertors/mcp3008/mcp3008.go b/convertors/mcp3008/mcp3008.go index 4d54c8c..9e31575 100644 --- a/convertors/mcp3008/mcp3008.go +++ b/convertors/mcp3008/mcp3008.go @@ -38,9 +38,17 @@ const ( // AnalogValueAt returns the analog value at the given channel of the convertor. func (m *MCP3008) AnalogValueAt(chanNum int) (int, error) { var data [3]uint8 - data[0] = startBit - data[1] = uint8(m.Mode)<<7 | uint8(chanNum)<<4 - data[2] = 0 + switch m.Bits { + case Bits10: + data[0] = startBit + data[1] = uint8(m.Mode)<<7 | uint8(chanNum)<<4 + data[2] = 0 + case Bits12: + //[0x06| (channel >> 2), channel << 6, 0] + data[0] = 0x06 | (uint8(chanNum) >> 2) + data[1] = uint8(chanNum) << 6 + data[2] = 0 + } glog.V(2).Infof("mcp3008: sendingdata buffer %v", data) if err := m.Bus.TransferAndReceiveData(data[:]); err != nil {