Hallo Leute, ich möchte gerne 2 verschidene Signale über die beiden Kanäle (A und B) des DACIFB des Mikrocontrollers AT32UC3C0512C ausgeben. F_CPU sind 20Mhz. Hier ein Auszug aus meinem Testprogramm: Parameter für den DAC: dacifb_opt_t my_dacifb = { .reference = DACIFB_REFERENCE_VDDANA, .channel_selection = DACIFB_CHANNEL_SELECTION_AB, .low_power = false, .dual = false, .prescaler_clock_hz = F_CPU }; dacifb_channel_opt_t my_dacifb_channel = { .auto_refresh_mode = false, .trigger_mode = DACIFB_TRIGGER_MODE_MANUAL, .left_adjustment = false, .data_shift = 0, .data_round_enable = false }; gpio_map_t DACIFB_GPIO_MAP = { {AVR32_DACREF_PIN, AVR32_DACREF_FUNCTION}, {AVR32_DAC1B_PIN, AVR32_DAC1B_FUNCTION}, {AVR32_DAC1A_PIN, AVR32_DAC1A_FUNCTION} } Ich möchte gerne 2 Sägezahn-Signale erzeugen, wobei der Kanal A von 0V langsam auf 5V ansteigt und der Kanal B langsam von 5V auf 0V abfällt. for (int i=0; i<0xfff; i++) { a=i; b=0xfff-i; dacifb_set_value(&AVR32_DACIFB1,DACIFB_CHANNEL_SELECTION_B, false, b); delay_us(10); dacifb_set_value(&AVR32_DACIFB1,DACIFB_CHANNEL_SELECTION_A, false, a); delay_us(10); } Das funktioniert fast richtig, nur dass jetzt die beiden Kanäle vertauscht sind. Also Kanal A fällt langsam von 5V auf 0V und Kanal B steigt. Die Werte in den Datenregistern der Kanäle stimmen jedoch. Was mache ich falsch?