| DocumentationRootretour à l'arborescence des catégories » Documentation techniqueEnsemble des informations pouvant être utiles au développement » Lynx docRestranscription de la documentation d'origine » Contraintes logicielles liées au MatérielOu pourquoi certains développeurs haïssent certains concepteurs matériel... » Faites comme ceci «««« ( /^\ ) »»»» INFOS SUR LA CATEGORIE Créée le : 2009-09-20 17:00:00 Par : vince INFOS SUR LA PAGE Titre : Faites comme ceci Sous Titre : Langue : FRA Source : http://www.monlynx.de/lynx/lynx3.html Auteur : vince Posté par : vince Faites comme ceciCertaines fonctionnalités matérielles, telles qu'elles ont été conçues par les brutes écervelées que nous sommes, requièrent une manipulation particulière. Dès que nous les découvriront, je les listerais ici. ¤ Rechargement du Timer désactivé. Si un bit particulier du rechargement de timer est positionné sur "désactivé", le timer est supposé décompter jusque zéro, s'arrêter de compter et positionner son bit "Timer effectué". Toutefois, si le bit "timer effectué" était déjà positionné, le timer ne commencera même pas son premier comptage. Par conséquent, lorsque le paramétrage du "rechargement de timer" est sur "désactivé", vous devez effacer la valeur dans le bit "timer effectué" afin de permettre au timer d'effectuer son comptage. Cet effaçage peut être réalisé en positionnant le bit "réinitialisation du timer effectuée" mais ça peut déclencher un nouveau et non moins excitant problème. Le "effacer" peut aussi être accompli en écrivant directement sur l'octet qui contient le bit "timer effectué". La solution idéale est d'écrire un 0 sur le bit numéro 3 de l'octet de contrôle (T1MnCTLB). Etant donné que les autres bits sont écrits par le matériel, je recommande vivement d'écrire un octet complet de valeur 0 sur ce registre quand vous avez besoin de cette fonctoin "effacer". ¤ Réinitialisation du timer effectuée. Le bit "réinitialisation du timer effectuée" dans les registres matériels a par erreur été défini comme un signal de niveau au lieu d'un signal d'impulsion. Par conséquent, pour s'en servir convenablement, il faut effectuer l'"impulsion" par voie logicielle. Ca veut dire le positionner au niveau haut en premier lieu et ensuite le positionner au niveau bas. Le problème qui se pose en le laissant juste au niveau haut est que le stupide matériel (en fonction d'autres conditions sur le timer en question) envoit une interruption en continue sur le circuit d'interruptions. En plus, vu qu'une interruption chanceuse peut tout à fait intervenir pendant cette "impulsion logicielle", le procédé à suivre est d'effacer le bit d'activation de l'interruption au même moment que le bit "réinitialisation du timer effectuée" est activé. Heureusement, ces deux bits sont dans le même registre. Merci enfin de penser à restaurer le bit d'activation quand vous libérez le bit "réinitialisation du timer effectuée". (Source : http://www.monlynx.de/lynx/lynx3.html) «««« ( /^\ ) »»»» | ||||||||||||||||||||||||
-= DevLynx, un site par vince pour vous =- |