Hoje mostro como gravar um valor no DAC7513, que é um DAC de 12bits que pode ser usado para controles diversos que vão de controle de volume, controle de ganho de Amplificador Operacional, até controle de brilho de LCD.
[sections] [section title=”Rotina de acesso para o DAC7513″]

// Constantes
#define NAO 0
#define SIM 1
#define DESLIGA NAO
#define LIGA SIM
#define FALSO NAO
#define VERDADEIRO SIM
#define SAIDA NAO
#define ENTRADA SIM

// MODOS DE TRABALHO DO DAC
#define DAC_MODO_NORMAL 0 // COLOCA DAC NO MODO NORMAL
#define DAC_MODO_1K 1 // COLOCA DAC NO MODO POWER DOWN 1K PARA O GND
#define DAC_MODO_100K 2 // COLOCA DAC NO MODO POWER DOWN 100K PARA O GND
#define DAC_MODO_HI_Z 3 // COLOCA DAC NO MODO HIGH Z

//— CONFIGURAÇÃO DOS PINOS DO DAC7513 —————————————-
sbit DAC_CS at RC2_bit;
sbit DAC_DO at RC5_bit;
sbit DAC_DI at RC4_bit;
sbit DAC_CLK at RC3_bit;

sbit DAC_CS_Direction at TRISC2_bit;
sbit DAC_DO_Direction at TRISC5_bit;
sbit DAC_DI_Direction at TRISC4_bit;
sbit DAC_CLK_Direction at TRISC3_bit;

void DAC_Ajuste(int Valor, char Modo)
{
unsigned char cont=0;

DAC_CS = DESLIGA;

Valor |= 0xF000;
// SELECIONA MODO DE OPERAÇÃO
switch(Modo)
{
case DAC_MODO_NORMAL:
Valor &= 0x0FFF;
break;
case DAC_MODO_1K:
Valor &= 0x1FFF;
break;
case DAC_MODO_100K:
Valor &= 0x2FFF;
break;
case DAC_MODO_HI_Z:
Valor &= 0x3FFF;
break;
}

for(cont=0;cont<16;cont++)
{
DAC_CLK = LIGA;
DAC_DO = ((Valor & 0x8000)==0x8000);
Delay_us(10);
DAC_CLK = DESLIGA;
Valor<<=1; } DAC_CS = LIGA; } void main() { unsigned int value=0; // CONFIGURA DAC DAC_CS_Direction = SAIDA; DAC_DO_Direction = SAIDA; DAC_DI_Direction = ENTRADA; DAC_CLK_Direction = SAIDA; DAC_CS = LIGA; // DESLIGA SELEÇÃO DO DAC while(1) { if(++value>0x0fff) // SE PASSAR DE 12 BITS
{
value=0; // ZERA VALOR
}
DAC_Ajuste(value,DAC_MODO_NORMAL); // ENVIA VALOR AO DAC
Delay_ms(1000);
}
}

[/section] [/sections]
Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[LINGUAGEM C] Rotina de acesso para o DAC7513
Tags:                         

Deixe uma resposta

%d blogueiros gostam disto: