Re: Emulation d'Assdesass sur To9
Publié : 08 janv. 2017 21:57
Oui c'est ça, reformulé assez différemment, mais ça revient au même. Et je ne connais aucunes de ces puces (jamais eu de TO, seulement un MO5 depuis septembre, mais je m'intéresse à ces Thomson en général et contrairement à vous, mes connaissances sont pour l'instant principalement théoriques, entre autres grâce à la documentation exhaustive mise à disposition par Daniel ).Tomix a écrit :Très sérieusement, je ne connais pas le 6840, et je n'étais pas sûr d'avoir bien compris ton histoire de flip flop sur le diviseur par 8. Si ma reformulation veut dire la même chose, c'est tant mieux.
La démarche c'était de compléter vos tests pratiques en essayant de trouver une explication quant au fonctionnement interne du timer et en étudiant (vaguement) le circuit logique du 6840 puisque tout porte à croire que leur "timer avec prescaler" sont quasi identiques (on retrouve mot pour mot les même explications dans leurs documentations respectives, et celle du 6846 a même un petit paragraphe qui détaille ses quelques différences avec le 6840, page 14).
Le schéma est plutôt imbitable (sans une référence de tous les sigles dessinés, et une représentation pas usuelle des flip-flops ) et comme mes notions en circuits logiques sont encore très sommaires, je serais vraiment gêné aux entournures pour donner des explications certaines dans ce domaine (il nous faudrait l'avis de nos connaisseurs en FPGA et compagnie).
En attendant que ça se précise, et pour qu'on se comprenne mieux, voici mon idée du déroulement des opérations côté timer (edit: qui contrairement aux autres hypothèse formulées, s'appuie donc sur les documents du constructeur, et pas sur du vent, voire en complète contradiction avec eux...) :
-2 : écriture dans le buffer du MSB (première écriture du STD avec la valeur N)
-1 : (passage du MSB + écriture du LSB) dans le "latch 16 bits du preset" (seconde écriture du STD)
0 : "relâchement" du contenu du "latch preset" dans les différentes "portes logiques" du timer (+ premier des 3 cycles du "délai horloge")
2 : dernier des 3 cycles du "délai horloge" (celui que nous annonce la documentation pour /CTC et /CTG mais dont nous présumons qu'il concerne aussi l'utilisation du prescaler avec /E comme horloge du timer, je n'y reviens pas...)
3 : première décrémentation du compteur (même chose dans la doc)
4 + N (le compteur a atteint zéro au cycle précédent et a "chargé" le latch de sortie) : relâchement du contenu de ce latch qui abaisse /IRQ sur la patte de sortie...
Si N=0, alors théoriquement, on doit obtenir l'interruption de sortie 4 cycles après le fin du STD (c'est à dire à partir début de l'instruction qui suit immédiatement)
Pour le désassemblage, c'était plus histoire de savoir ce que vous utilisiez en général comme outils et pour bosser sur TO/MO, désolé pour ma question, j'aurais dû penser à ton émulateur évidemment (sauf cas non géré, ça semble le plus pratique).