Forum: Mikrocontroller und Digitale Elektronik LTC2602 DAC Daten senden


von fuelre F. (fuelre)


Lesenswert?

Hey


ich habe mal wieder ein Problem mit SPI bzw. einem Baustein daran.
Es handelt sich um einen Atmega16 und dem DAC LTC2602.
das SPI läuft auch mit einem ebenfalls daran angeschlossenen ADC.
Doch eben nicht mit dem DAC.

warum gibt mir der DAC keine Spannung aus?

hier der Code dazu:
1
#define DAC0 0
2
#define DAC1 1
3
void set_CS_DAC(void) {  PORTB = PORTB & 0b11111011;   }
4
void cls_CS_DAC(void) {  PORTB = PORTB | 0b00000100;   }
5
void DAC_set(int DAC_CH, int dac_datah, int dac_datal)
6
{
7
  switch(DAC_CH)
8
  {
9
    case DAC0:
10
    {
11
      SPDR= 0x30;    //Daten für Command und Channel anlegen  
12
      break;
13
    }
14
    case DAC1:
15
    {
16
      SPDR = 0x31;
17
      break;
18
    }
19
  }
20
  set_CS_DAC();        //CS low
21
  while(!(SPSR & (1<<SPIF)));  //Commands übertragen
22
  
23
  SPDR = dac_datah;      //DATA_High übertragen
24
  while(!(SPSR & (1<<SPIF)));
25
  
26
  SPDR = dac_datal;      //DATA_Low übertragen
27
  while(!(SPSR & (1<<SPIF)));
28
  cls_CS_DAC();
29
  _delay_us(10);
30
}
der Aufruf dafür erfolgt per
1
DAC_set(DAC0,125,25); //125 sind die oberen 8Bit und 25 die untern 8Bit

im switch case übergebe ich die Parameter für den Channel sowie die 
Commands
als command nutze ich
C3 C2 C1 C0
0  0   1  1 Write to and Update (Power Up) n \\wobei n der Channel ist - 
dies ist die 3 und danach der Channel des Bausteins [ 0 oder 1]

sieht jemand den Fehler in meinem Code, weshalb es nicht klappt

ich konnte per Logicanalyzer auch schon herausfinden, dass CS klappt und 
der SCK taktet, allerdings gibt der DAC eben keine spannung aus.

von fuelre F. (fuelre)


Lesenswert?

ok
mittlerweile konnte ich logicanalyzer feststellen, dass die daten 
perfekt übertragen werden

habe ich etwas an den Commands falsch verstanden?
bedeutet
C3 C2 C1 C0
0  0  1  1 Write to and Update (Power Up) n
nicht dass nachdem die Daten empfangen wurden die Spannung an den 
Ausgang angelegt wird?

von fuelre F. (fuelre)


Lesenswert?

nachtrag:

Ich kann ihn per Befehl ausschalten - dies ist durch den Strom den der 
Baustein verbraucht ersichtlich. -> wechsel zwischen 0,4mA und 1µA

hat noch irgendjemand eine Idee warum der IC keine Spannung ausgiebt.

der Ausgang ist per 800 OHM R auf Masse gezogen.

von Hui (Gast)


Lesenswert?

Allenfalls ein Schema ? Was fuer eine Referenz wird verwendet ?

von fuelre F. (fuelre)


Angehängte Dateien:

Lesenswert?

Hey


als Referenz habe ich einen LT6660

Der Schaltplan ist angehängt -- AGND und DGND sind zur Zeit auf der 
selben Massefläche, da der Print selbst gefertig wurde - im "Fertigen" 
Produkt wird die Massefläche getrennt sein!


zur Info noch - der ADUM ist für eine UART USB Bridge

: Bearbeitet durch User
von fuelre F. (fuelre)


Lesenswert?

Hallo alle zusammen

zur info noch: bei weiteren Messungen habe ich den IC durch einen 
unabsichtlichen kurzschluss abrauchen lassen.

nachdem ich ihn ausgetauscht hatte funktioniert er bis jetzt ohne 
Probleme.

noch ein Danke ins Forum und alle die ideen hatten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.