hello,
dans LSP j'utilise les registres de la bank 1 comme 'stock' avec juste des movefa et moveta. le programme principal ne fait rien, il boucle sur lui même.
or là je me suis lancé sur une autre approche, avec une interruption timer 1 qui donne le tempo du replay a 50 Hz et le programme principal qui alimente les registres utilisés par l'interruption I2S
et j'ai la très forte impression que mon interruption I2S met la grouille dans mes registres bank 1
est ce quelque chose de connu sur le DSP , ou sur le GPU ?
Mon code audio utilise les 32 registres de la banque 0 et les 32 registres de la banque 1, et j'ai jamais eu de soucis de ce genre. Par contre je n'utilise que l'interruption I²S, aucune autre.
Tu es sûr que ce n'est pas un conflit entre tes deux interruptions plutôt ?

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turboje ne pense pas, mon interruption timer 1 ne fait que de modifier une valeur en ram centrale, un flag
et là j'ai vraiment des comportements étranges
mon I2S est à 35 KHz, et fonctionne purement en registres bank 0, aucune lecture de valeurs en ram
et mon code centrale se comporte de façon très erratique, des cmpq/cmp qui passe quand ils ne devraient pas, un compteur qui s'emballe à fond
ca le fait sur phoenix normal, phoenix debug, bigpemu et ma jaguar
je reprendrai le problème en essayant de fabriquer un poc du souci, i2S + timer 1 + dsp main
c'est ce que je me dis aussi mais c'est vraiment très bizarre.
des que j'ajoute un imult par zéro , dans mon code de timer I2S, ca me fout en l'air mon code sur la bank 1
si je fais un imult par 1 ou 100 ou -1 ça passe
y a un bug connu avec imult * 0 ????
en fait c'est quand le résultat est = 0 a priori.
1*0
0*1
0*0
=> KO
----
ça semble lié au flags de conditions
dans le code principal dsp je fais un cmpq pour continuer et il continue meme quand la condition n'est pas remplie
en fait ce qui me met dedans c'est que je suis trop habitué aux flags dans un registre
sur dsp il faut lire le D_FLAGS dès l'arrivée dans l'interruption