Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IRQ Timer Frequency #32

Open
bhrousseau opened this issue Sep 15, 2021 · 1 comment
Open

IRQ Timer Frequency #32

bhrousseau opened this issue Sep 15, 2021 · 1 comment
Labels
bug Something isn't working
Milestone

Comments

@bhrousseau
Copy link

bhrousseau commented Sep 15, 2021

Lorsqu'on positionne un timer IRQ la fréquence de déclenchement n'est pas respectée.
Un léger décalage se produit.
De ce fait si on utilise ce timer pour des effets raster, ça ne fonctionne pas et les lignes défilent au lieu d'être fixes.
Idem pour produire un son, la fréquence n'est pas respectée.

Voici le fil de discussion de la correction du problème équivalent sous dcmoto :
https://forum.system-cfg.com/viewtopic.php?t=5519&start=15

Tu trouveras ici : https://forum.system-cfg.com/download/file.php?id=18308
un fd de test que sam avait fait à l'époque :
Il positionne le timer à 6413µs, ce qui correspond exactement à 13 lignes d'écran. Or 13 est un diviseur exact des 312 lignes verticales. Du coup on doit voir des barres colorées stables sur le tour, et entendre une note à 601Hz (= 1000000/(264*13))

=> or sous theodore les lignes défilent contrairement au même programme sur machine réelle.

Cordialement,
Benoit Rousseau.

@Zlika Zlika added the bug Something isn't working label Sep 15, 2021
@Zlika Zlika added this to the 3.2 milestone Sep 15, 2021
@Zlika
Copy link
Owner

Zlika commented Sep 18, 2021

Il va falloir que je potasse un peu plus le fonctionnement du timer pour régler ce problème j'ai l'impression.
J'ai essayé de prendre en compte un des commentaires du thread que tu m'indiques qui précise :

De ce que j'en comprends c'est que lors de la lecture de CSR ($E7C0), les bits CSR0-2 sont indiqués comme devant être passé à 0 le moment venu. Pour CSR0 cela se fait lors de la prochaine lecture du compteut en $E7C6 ou $E7C7 (au 1er des deux lu).

En remettant à 0 CSR0 à la lecture de E7C6/E7C7 il y a une amélioration : la fréquence du son semble bonne (le spectre fait avec Audacity me donne bien un pic à ~601Hz alors que le son était beaucoup plus aigü avant) et les lignes défilent "moins vite" mais elles défilent quand même.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants