ericde45 (./1) :
je suis capable de rejouer un sample à la bonne fréquence, au dsp en utilisant n'importe quel timer ( IS2 , timer 1 et timer 2 )
Il faut utiliser uniquement l'interruption I²S pour mettre à jour les registres audio. Le faire via une autre interruption timer pose plusieurs problèmes (et ça utilise un timer qui pourrait servir à autre chose).
ericde45 (./1) :
- est ce que le serial I2S a une forme de buffer, permettant d'avoir le temps de le re-remplir ?
Non, y'a pas de buffer. Il faut l'implémenter toi-même si tu en as besoin.
ericde45 (./1) :
- dans la gestion des interruptions j'ai compris que lorsqu'une interruption se déclenche, le dsp bascule sur son second jeu de registre.
Oui.
ericde45 (./1) :
or dans le source du U235, aucune interruption ne s'inquiete de sauvegarder les registres avant de les modifier.
et il y a 3 timers en parallèle dans leur moteur.
donc 2 possibilités :
- je n'ai pas compris l'utilisation des registres / du jeu de registre , lors d'une interruption ? et il n'y a pas de conflit entre les routines en i2s/ timer 1/timer 2
- chaque routine bloque les autres interruptions lorsqu'elle fonctionne, dans ce cas le son doit etre déformé au final ? j'ai souvenir que sur ST il fallait absolument produire le son de façon régulière et sans en louper ( par exemple en full screen dans les ligne de synscroll) pour ne pas dégrader la qualité sonore percue ?
si le timer 1 ou le timer 2 bloque le I2S, le son en cours reste trop longtemps ?
si vous avez des docs autres que le jag V8 je suis preneur bien sur !
Je n'ai pas décortiqué le code de U235, mais il est possible que le code d'interruption s'exécute suffisamment rapidement pour que ça ne pose pas de problème. Par rapport à un 68000, le DSP a un ratio instruction / cycle d'horloge nettement supérieur, on peut faire pas mal de choses dans une interruption avant d'avoir des soucis de timing.
La meilleure solution est probablement de demander à l'auteur sur AtariAge
