Library for sending data to one or more AD420 DACs. See circuit: http://www.robellis.org.uk/?p=713

AD420.cpp

Committer:
Phlaphead
Date:
2011-01-22
Revision:
1:f2c2021ca4e7
Parent:
0:a9a53dc36578

File content as of revision 1:f2c2021ca4e7:


#include "AD420.h"

AD420::AD420(PinName _latchPin, PinName _clockPin, PinName _dataPin, int _size) :
    latchPin(_latchPin),
    clockPin(_clockPin),
    dataPin(_dataPin),
    size(_size)
{
    data = new uint16_t[_size];
    
    clockPin = 0;
    latchPin = 0;
    dataPin = 0;
}
    
void AD420::setValue(int index, uint16_t value)
{
    data[index] = value;
}

void AD420::sendData()
{
    //start sequence
    latchPin = 0;
    clockPin = 0;

    for(int i = 0; i < size; i++)
    {
        uint16_t value = data[i];
        
        for(int j=15; j>=0; j--)
        {
            dataPin = ((value&(1<<j)))>>j;
            wait_us(CLOCKINTERVAL);
            clockPin = 1;
            wait_us(CLOCKINTERVAL);
            clockPin = 0;
        }
    }
    
    //set latch
    dataPin = 0;
    clockPin = 0;
    latchPin = 1;
    wait_us(CLOCKINTERVAL);
    latchPin = 0;
}