Je suis d'accord avec TJD qu'en général, il n'est pas pratique de le faire sans DMA, mais ce n'est pas impossible, en particulier à une faible fréquence d'échantillonnage.
On pourrait utiliser un jeu de minuterie pour déclencher toutes les 1/8000ème de seconde comme base de temps fixe. À partir de là, la routine d'interruption devra charger l'échantillon suivant dans le DAC. La fréquence d'échantillonnage peut être modifiée en changeant la base de temps de la minuterie.
Il serait un effort similaire pour écrire le code pour configurer le contrôleur DMA par rapport à l'écriture du code pour déplacer l'échantillon correct dans le tampon. Cependant, l'approche DMA serait plus fiable, possèderait probablement moins d'instabilité dans le taux d'échantillonnage, et libèrerait le noyau pour exécuter d'autres codes qui pourraient être nécessaires. En fait, avec la configuration TIM/DMA/DACs, vous pourrez peut-être arrêter le cœur ou entrer en mode veille pour que les horloges périphériques fonctionnent.
Pensez à poster votre question sur http://electronics.stackexchange.com/ – simon