Die Programmlogik sieht für mich out-of-sequence aus: Zuerst wird der
ADC IRQ Handler gesetzt, dann werden Interrupts global enabled und dann
wird der ADC konfiguriert. Ich hätte das Konfigurieren zuerst gemacht.
Wenn du
> Ich weiss, dass die ISR aufgerufen wird und die globale variable
> entsprechend setzt. Nur leider wird das If in der main() Funktion nie als > true
validiert.
an der Funktion/Nichtfunktion von update_pwm() fest machst, dann
bedenke:
adc->cdr0 (&AVR32_ADC) wird nicht dann ausgelesen, wenn der Messwert
vorliegt nämlich in dem ADC-Handler, sondern irgendwann später in
main(). Die ADC-Einheit hat dann eine neue Messung gestartet und
eventuell die Daten bereits verändert (Datenblatt nachsehen, ob
Pufferung vorhanden).