Ich habe ein Projekt, das eine Reihe von Werten mit einem genauen Zeitintervall an DACs ausgibt. Das Problem besteht darin, dass zwischen dem Systemzeitgeber-Interrupt, in dem die DAC-Werte aktualisiert werden, manchmal eine Verzögerung auftritt, die länger als erwartet ist. Dies führt zu Jitter in der Ausgabe. Ich brauche Hilfe, um herauszufinden, was diese Verzögerung verursacht. Der einzige andere Benutzercode, der neben dem Timer läuft, ist die Behandlung eingehender USB-Pakete, die die auszugebenden Daten enthalten.
Dinge, die ich versucht habe:
Aber nichts hat bisher funktioniert.
Der vollständige Code ist hier: https://github.com/Grix/helios_dac/blob/master/firmware/AtmelStudio_helios/lasdac_mainfirmware/src/main.c
Die MCU ist ein Atmel ATSAM4S2B (32-Bit-Arm-Cortex-m4)
Irgendwelche Ideen?
EDIT: Ich habe das Problem gefunden, es waren die Interrupt-Prioritäten. Ich habe die Prioritäten beim Booten festgelegt, aber die SysTick_Config()-Funktion der CMSIS-Bibliothek setzt die Priorität für den Systick bei jedem Aufruf zurück, sodass ich die Priorität bei jedem Aufruf manuell korrigieren musste.
Ich habe das Problem gefunden, es waren immerhin die Interrupt-Prioritäten. Ich habe die Prioritäten beim Booten festgelegt, aber die SysTick_Config()-Funktion der CMSIS-Bibliothek setzt die Priorität für den Systick bei jedem Aufruf zurück, sodass ich die Priorität jedes Mal manuell korrigieren musste, nachdem ich dies aufgerufen hatte.
krambo
krambo
SamGibson