Problem mit DA-Wandler

Gast #538988
Lesenswert?
• ▲
▼
Vor kurzem habe ich mir einen DA-Wandler DAC0832LCN zugelegt.
Heute habe ich ein einfaches Programm geschrieben, welches den PORTB bis 
256 hochzählt.
Nur leidet tut das Programm und somit der DA- Wandler nichts.
Den DA wandler habe ich abgeschlossen und nur Leds angeschlossen. Die 
tun auch nichts, obwohl ich früher ein funktionierendes Programm 
geschrieben habe welches den Port hochgefählt hat.

Hier der Quellcode:
1
#include <io.h>
2

3
#define F_CPU 4000000UL
4
#include <delay.h>
5

6
void writeDA(uint16_t v);
7

8
#define CS      (1<<PC0)
9
#define ILE     (1<<PC1)
10
#define WR1     (1<<PC2)
11
#define WR2     (1<<PC3)
12
#define XFER    (1<<PC4)
13

14

15
void writeDA(uint16_t v)
16
{ 
17
  
18
  
19
  
20
  PORTC =  ILE | WR2 | XFER;  //Einlesen in input Register
21

22
  _delay_us(1);
23

24
  PORTB = v; 
25
  
26
  _delay_us(1);                //Uebergabe der Bits an den input Register
27

28
  PORTC = ILE | WR1;   //Sichern der Bits im input Register
29

30
  _delay_us(1);
31
}
32

33

34

35

36

37
int main (void)
38
{
39

40

41

42
DDRC = CS|ILE|WR1|WR2|XFER;
43
DDRB = 0xff;
44

45

46

47
uint16_t i,j;
48

49
while(1)
50
{
51
for(i = 0; i < 256; i = i + 1)
52

53
 { writeDA(i);
54

55
  for(j = 0; j < 5000; j = j +1);
56
 }
57
}
58

59
 return 1;
#539091
Lesenswert?
• ▲
▼
@ Daniel

>Vor kurzem habe ich mir einen DA-Wandler DAC0832LCN zugelegt.
>Heute habe ich ein einfaches Programm geschrieben, welches den PORTB bis
>256 hochzählt.

Das Program sieht OK aus.

Hast du das beachtet?

"Flow-Through Operation

Though primarily designed to provide microprocessor interface
compatibility, the MICRO-DAC’s can easily be configured
to allow the analog output to continuously reflect the
state of an applied digital input. This is most useful in applications
where the DAC is used in a continuous feedback
control loop and is driven by a binary up-down counter, or in
function generation circuits where a ROM is continuously
providing DAC data.
Simply grounding CS, WR1, WR2, and XFER and tying ILE
high allows both internal registers to follow the applied digital
inputs (flow-through) and directly affect the DAC analog
output."

Also du musst CS, WR1, WR2 und XFER auf Masse legen sowie ILE auf VCC. 
Dann sollte dein Programm laufen.

MFG
Falk
#539156
Lesenswert?
• ▲
▼
@ Daniel

>PortB ist ja mein Ausgang, warum sollte icg den löschen?

>Hast du nicht zufällig PORTC gemeint, welchen ich löschen soll?

Das schrieb ich doch. Wenn ich dein Programm richtig interpretiere, dann 
hängen an PORTC die Steuerleitungen und an PORTB die Datenleitungen.

Hier mal der überarbeitete Code.
1
#include <io.h>
2

3
#define F_CPU 4000000UL
4
#include <delay.h>
5

6
void writeDA(uint8_t v);
7

8
#define CS      (1<<PC0)
9
#define ILE     (1<<PC1)
10
#define WR1     (1<<PC2)
11
#define WR2     (1<<PC3)
12
#define XFER    (1<<PC4)
13

14

15
void writeDA(uint8_t v)
16
{ 
17
  PORTB = v;
18
}
19

20
int main (void)
21
{
22

23
uint16_t i,j;
24

25
DDRC = CS|ILE|WR1|WR2|XFER;
26
DDRB = 0xff;
27
PORTC = ILE;    // Flow though Modus
28

29
while(1)
30
{
31
  for(i = 0; i < 256; i = i + 1){
32
    writeDA(i);
33
    _delay_ms(1);
34
  }
35
}
36

37
 return 1;
38
}

Und bitte keine selbstgestrickten Delay-Schleifen. Die gehen regelmässig 
schief. Nutze die Funktionen _delay_ms() und _delay_us().

MfG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.