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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.