Forum: Mikrocontroller und Digitale Elektronik AT32UC3C beide DAC Kanäle A und B laufen nicht gleichzeitig


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ralf Z. (laserelectronics)


Lesenswert?

Hallo,

ich benutze den AT32UC3C1512C. Ich möchte zwei verschiedene analoge 
Spannungen  an den  Kanälen A und B des internen DAC (DACIFB) 
gleichzeitig ausgeben. Wenn ich den DAC mit einem Kanal konfiguriere, 
z.B. nur Kanal A oder nur Kanal B, dann funktioniert alles, wie 
gewünscht. Wenn ich den DAC für beide Kanäle konfiguriere, liegt 
irgendwas undefiniertes an beiden Ausgängen an und schwankt.

Hier mal einen Auszug: //FOSC0 12MHz, DAC_PRESCALER_CLOCK = FOSC0 / 2

/* DAC Configuration */

dacifb_opt_t dacifb_opt = {

  .reference            = DACIFB_REFERENCE_VDDANA,

  .channel_selection    = DACIFB_CHANNEL_SELECTION_AB,

  .low_power            = false,

  .dual                 = false,

  .prescaler_clock_hz   = DAC_PRESCALER_CLOCK

};



/* DAC Channel Configuration */

dacifb_channel_opt_t dacifb_channel_opt = {

  .auto_refresh_mode    = true,

  .trigger_mode         = DACIFB_TRIGGER_MODE_MANUAL,

  .left_adjustment      = false,

  .data_shift           = 0,

  .data_round_enable    = false

};



int main(void)

{/* GPIO pin/DAC-function map. */
  const gpio_map_t DACIFB_GPIO_MAP = {
    {AVR32_DACREF_PIN, AVR32_DACREF_FUNCTION},
    {AVR32_ADCREFP_PIN, AVR32_ADCREFP_FUNCTION},
    {AVR32_ADCREFN_PIN, AVR32_ADCREFN_FUNCTION},
    {AVR32_DAC0A_PIN, AVR32_DAC0A_PIN},
    {AVR32_DAC0B_PIN, AVR32_DAC0B_PIN}
  };
  /* Init system clocks */
  sysclk_init();

  /* Assign and enable GPIO pins to the DAC function. */
  gpio_enable_module(DACIFB_GPIO_MAP, sizeof(DACIFB_GPIO_MAP) /
  sizeof(DACIFB_GPIO_MAP[0]));

dacifb_get_calibration_data(&AVR32_DACIFB0, &dacifb_opt, 
DACIFB0_INSTANCE);

dacifb_configure(&AVR32_DACIFB0, &dacifb_opt, FOSC0);   // Configure and

enable DACIFB0



dacifb_configure_channel(&AVR32_DACIFB0, DACIFB_CHANNEL_SELECTION_AB,

&dacifb_channel_opt, DAC_PRESCALER_CLOCK); // Configure both DAC

channels of DACIFB0



dacifb_start_channel(&AVR32_DACIFB0, DACIFB_CHANNEL_SELECTION_AB,

FOSC0);  // Enable both outputs A and B of DACIFB0.

dacifb_set_value(&AVR32_DACIFB0, DACIFB_CHANNEL_SELECTION_A, false, 
1000);
dacifb_set_value(&AVR32_DACIFB0, DACIFB_CHANNEL_SELECTION_B, false, 
2000);
}

Was ist hier falsch?

von pegel (Gast)


Lesenswert?

Ralf Z. schrieb:
> .dual                 = false,

Ich habe keinen Plan vom AT32.
Was bedeutet das?

von Mikki M. (mmerten)


Lesenswert?

Der AT32 hat wohl wie die "alten" ATxmega ohne u nur einen echten DAC 
mit nachgeschalter S/H Stufe daher ist bei der Übergabe der Wert Umsicht 
geboten. Direktes glecihzeitiges Schreiben funktioniert wohl nicht, da 
muss zuvor der DAC Status ermittelt werden, ob schreiben möglich ist.

Beitrag #6401360 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.