//*****************************************************************************
//
//  DACdriver.c - Knihovna pro komunikaci a ovladani D/A prevodniku 
//
//*****************************************************************************

#include <DACdriver.h>
#include <SPIdriver.h>


//Inicializace D/A prevodniku--------------------------------------------------
void DACInit(void)
{
}

//Nastaveni hodnoty na vystupu D/A prevodniku----------------------------------
void DACSet(unsigned char channels,unsigned short value)
{
    SPI_SetCS(SPI_CS_OUTPUT);                                                   // CS pro DA je na jinem portu nez CS pro AD
    SPI_Write16b(DAC_ACTIVE, channels, value);                                  // Zapis 16b hodnoty do D/A prevodniku na pozadovany kanal
    SPI_SetCS(SPI_CS_OFF);                                                      // Po dokonceni komunikace vypnuti CS pro D/A prevodnik
}

//Funkce pro nastaveni nuloveho vystupu D/A prevodniku-------------------------
void DACReset()
{
    SPI_SetCS(SPI_CS_OUTPUT);                                                   // CS pro D/A prevodnik
    SPI_Write32b(DAC_RESET,0,0);                                                // Zapis hodnoty 0 na prvni kanal
    SPI_SetCS(SPI_CS_OFF);                                                      // Deaktivace CS pro D/A prevodnik
}


//Funkce pro vypnuti/zapnuti kanalu D/A prevodniku----------------------------
void DACPower(unsigned char on_off, unsigned char channels)
{
    SPI_SetCS(SPI_CS_OUTPUT);                                                   //CS pro D/A prevodnik
    SPI_Write32b(DAC_POWER_ON_OFF,0x00,(on_off>0 ? channels : (channels|0x300))); //Odeslani prikazu pro zap/vyp kanalu D/A prevodniku
    SPI_SetCS(SPI_CS_OFF);                                                      //vypnuti D/A prevodniku
}
