AT90PWM: DAC

Gast #893196
Lesenswert?
• ▲
▼
Hab nun mehrere ähnliche Beiträge im Forum durchgelesen, aber leider 
nichts passendes gefunden.
Deswegen meine Frage an euch:
Ich würde gerne meinen DAC dazu nutzen eine Spg am D2A Pin auszugeben. 
Leider funktioniert das ganze aber nicht so wie gewünscht --> der Pin 
ändert sich gar nicht. Hier einmal die Registerinitialisierung und der 
aufruf der DA fkt.:
1
DACON |= (1<<DALA) | (1<<DAOE);
2

3
void analog_start_da(float output)
4
{
5
  char da=0;
6

7
  da = (char)(output * 1023) / 2.56;
8
  DACH = da;
9

10
  DACON |= (1<<DAEN);
11
}

Findet jemand einen Fehler warum das nicht funktioniert?

Was mich auch noch interessieren würde:
Wie kann ich den DA Wandler dazu benutzen meinem Comparator die Spg 
vorzugeben?

So long
Shimu
Moderator Persönliche Seite #893281
Lesenswert?
• ▲
▼
Ohne mir den generierten Code anzugucken, würde ich mal vermuten, dass
der Typecast nach (char) kompletter Unsinn ist.  Er limitiert das
Ergebnis von "output * 1023" auf 8 Bits, die noch dazu (falls du nicht
-funsigned-char benutzt) vorzeichenbehaftet interpretiert werden.
Die anschließende Division durch 2.56 wandelt das dann wieder in
eine Gleitkommazahl um.

Wenn schon, dann:
1
da = (uint8_t)((output * 1023) / 2.56);

Da aber DACH ohnehin vom Typ uint8_t ist, kannst du dir das auch
genauso gut schenken und gleich schreiben:
1
DACH = (output * 1023) / 2.56;

Das zeitlich versetzte Setzen der Bits DALA und DAOE vs. DAEN hat
keinen Sinn.  Bei der ersten Aktion wird der Ausgang ja schon
eingeschaltet, nur der Wandler noch nicht freigegeben.  Da kannst du
auch gleich alles zusammen initial aktivieren:
1
DACON = (1<<DALA) | (1<<DAOE) | (1<<DAEN);

Der DAC wandelt ja praktisch sofort (Zeitangaben gibt's leider nicht
im Datenblatt), man muss die Wandlung nicht erst ,,anschieben'' wie
beim Sukzessiv-Annäherungs-ADC.

> Wie kann ich den DA Wandler dazu benutzen meinem Comparator die Spg
> vorzugeben?

Was ist dir hier in der Beschreibung der Komparatoren unklar?  Jeder
der drei Komparatoren hat eine Konfigurationsform, bei der sein
negativer Eingang vom DAC versorgt wird.  Der positive Eingang ist
immer nach außen geführt.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.