Forum: Mikrocontroller und Digitale Elektronik DAC TLV5618 läuft nicht bis Maximum


von Nikolas B. (physikant)


Lesenswert?

Hallo,

ich betreibe den TLV5618 von TI, ein DAC mit 12 Bit und 2 Kanälen, 
Ansteuerung über SPI.
Er läuft auch ganz passabel, zwei Dinge stören mich jedoch:
a) wenn ich folgendes mache
1
int i = 0;
2
  while(1)
3
  {
4
    i ++;
5
    senddata(i);
6
  if (i >= 4095) i = 0;
7
  }

müsste ich einfach einen Sägezahn zwischen 0 und 5V haben, sofern Vref 
5V (ich habe einfach Vcc und Vref verbunden, GND gibts ja sowieso nur 
einen) sind. Allerdings erreicht der Sägezahn bei (c.a.) 2543 schon 5V 
und bleibt dann auf diesem Wert, um dann bei 4095 wieder auf 0 zu gehen.

b) Die Dauer, die ein Wert konstant bleibt, ist 11,1µS bei -O3 (sagt 
mein Oszi). Das könnte kürzer sein, oder? (Atmega läuft mit nem Quarz 
von 18,432 MHz, d.h. ein Vorgang dauert 206 Clockcycles)

Hier meine Funktionen:
1
uint16_t setup;
2
3
void DACinit(void)
4
{
5
  ADSTART_DDR |= (1<<ADSTART_PIN); //ADSTART ist CS
6
  ADCLK_DDR |= (1<<ADCLK_PIN);
7
  ADSIG_DDR |= (1<<ADSIG_PIN);
8
9
  ADSTART_PORT |= (1<<ADSTART_PIN);
10
  ADCLK_PORT &= ~(1<<ADCLK_PIN);
11
  ADSIG_PORT &= ~(1<<ADSIG_PIN);
12
13
  setup = 0b1100000000000000; //verwende DAC A, Fastmode ON
14
}
15
16
void DACsend(uint16_t data)
17
{
18
  ADSTART_PORT &= ~(1<<ADSTART_PIN);
19
    
20
  for(int i = 0; i < 16; i++)
21
  {
22
    ADSIG_PORT &= ~(1<<ADSIG_PIN);
23
    if(data&0b1000000000000000)
24
  {
25
    ADSIG_PORT |= (1<<ADSIG_PIN);
26
    }
27
    ADCLK_PORT &= ~(1<<ADCLK_PIN);
28
  data <<= 1;
29
  ADCLK_PORT |= (1<<ADCLK_PIN);
30
  }
31
32
  ADSTART_PORT |= (1<<ADSTART_PIN);
33
}
34
35
void senddata(uint16_t data)
36
{
37
  DACsend(data + setup);
38
}

Jemand ne Idee, wie das schneller ginge und/oder das Problem mit 2543 
statt 4095 zu lösen ist?

Grüße
   Nikolas

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Hast du dir das Datenblatt denn schon mal angesehen?

- Die Ausgangsstufen haben eine Verstärkung von 2.

- Die empfohlene Referenzspannung beim Betrieb an 5V beträgt
  2,048V.

Zitat aus dem Datenblatt:
1
Due to the x2 output buffer, a reference input voltage
2
≥ (VDD–0.4 V)/2 causes clipping of the transfer function.

von Nikolas B. (physikant)


Lesenswert?

Alles klar. Muss ich überlesen haben. Danke!

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.