This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC 8760 - It doesns't work

Other Parts Discussed in Thread: DAC8760

Hi, 

I need to know that, if DAC8760 works in this coonfigurations:

I am using the most basic connection because I need to make a test.  My microcontroller is MCF51EM NXP. 

I want to use 4-20mA with 24VCC. 

My code is:

void main(void){

/* Write your local variable definition here */


/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/


// Reset
MicroControlador_Delay100US(1);

ADRESS = 0x56;
BYTE_01 = 0b00000000;
BYTE_00 = 0b00000001;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

// Nop
MicroControlador_Delay100US(1);

ADRESS = 0x00;
BYTE_01 = 0b00000000;
BYTE_00 = 0b00000000;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

// Control Registros
MicroControlador_Delay100US(1);

ADRESS = 0x55;
BYTE_01 = 0b00010000;
BYTE_00 = 0b00000101;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

// Configuration Registros
MicroControlador_Delay100US(1);

ADRESS = 0x57;
BYTE_01 = 0b00000000;
BYTE_00 = 0b00101000;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

// Gain Calibration
MicroControlador_Delay100US(1);

ADRESS = 0x58;
BYTE_01 = 0b00000000;
BYTE_00 = 0b00000000;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

// Zero Calibration
MicroControlador_Delay100US(1);

ADRESS = 0x59;
BYTE_01 = 0b00000000;
BYTE_00 = 0b00000000;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

while (1){

// DAC Registros
MicroControlador_Delay100US(1);

ADRESS = 0x01;
BYTE_01 = 0b10101010;
BYTE_00 = 0b10101010;

SS_ClrVal();
MicroControlador_Delay100US(1);

SPI2_420mA_SendChar(ADRESS);
SPI2_420mA_SendChar(BYTE_01);
SPI2_420mA_SendChar(BYTE_00);

MicroControlador_Delay100US(1);
SS_SetVal();
MicroControlador_Delay100US(1);
SS_ClrVal();

}


//##################################################################################//

However, it doesn't work.

1 - The voltage in the pin 19 and 20 is always 0. Is it OK?

2 - The mA in the pin 19 is always 0. Is it OK?

3 - What do I do to works my circuit?

4 - What is the test to know if DAC is working?

Regards

  • Hi Nefi,

    It seems like it might be a software issue. I am not qualified to review your code, however if you can send me an oscilloscope capture of your SPI signal I should be able to verify that your code is outputting the correct SPI signals. Also, can you send me the list of codes that you intend to send to the device after startup?

    What is the voltage at pin 16?

    PS. We recommend a 0.1 μF cap for the RefOut pin, but this is only to increase the noise performance of the reference. It is not necessary for general device operation.
  • Eugenio,

    Unfortunately, I found a short circuit on pins 1 and 2.

    I will request new sample and returned to speak.

    The SPI was studied by Freescale support and

    it's apartentemente correct.

    1) Can you confirm the schematic basic?

    2) The voltage on pin 16 is 0.

    3) The following sequence of code to 4-20

    /* Write your local variable definition here */


    /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
    PE_low_level_init();
    /*** End of Processor Expert internal initialization. ***/


    // Reset
    MicroControlador_Delay100US(1);

    ADRESS = 0x56;
    BYTE_01 = 0b00000000;
    BYTE_00 = 0b00000001;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    // Nop
    MicroControlador_Delay100US(1);

    ADRESS = 0x00;
    BYTE_01 = 0b00000000;
    BYTE_00 = 0b00000000;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    // Control Registros
    MicroControlador_Delay100US(1);

    ADRESS = 0x55;
    BYTE_01 = 0b00010000;
    BYTE_00 = 0b00000101;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    // Configuration Registros
    MicroControlador_Delay100US(1);

    ADRESS = 0x57;
    BYTE_01 = 0b00000000;
    BYTE_00 = 0b00101000;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    // Gain Calibration
    MicroControlador_Delay100US(1);

    ADRESS = 0x58;
    BYTE_01 = 0b00000000;
    BYTE_00 = 0b00000000;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    // Zero Calibration
    MicroControlador_Delay100US(1);

    ADRESS = 0x59;
    BYTE_01 = 0b00000000;
    BYTE_00 = 0b00000000;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    while (1){

    // DAC Registros
    MicroControlador_Delay100US(1);

    ADRESS = 0x01;
    BYTE_01 = 0b10101010;
    BYTE_00 = 0b10101010;

    SS_ClrVal();
    MicroControlador_Delay100US(1);

    SPI2_420mA_SendChar(ADRESS);
    SPI2_420mA_SendChar(BYTE_01);
    SPI2_420mA_SendChar(BYTE_00);

    MicroControlador_Delay100US(1);
    SS_SetVal();
    MicroControlador_Delay100US(1);
    SS_ClrVal();

    }


    //##################################################################################//


    Best Regards.