1

Salut à tous. je suis entrain d'ecrire un programme en assembleur pour gérer une petite care electronique où j'ai des entrées et de sorties. mon probleme est le suivant :
pour lire les entrées j'utilise l'orloge interne du proceseur, ce qui le rallenti. j'ai cru savoir qu'il ya un pin dans le port// qui declanche des interruptions materielle. ma question est : quel est ce pin?
et comment ecrire ce programme qui fait appel à cette interuption?
Merci beaucoup de votre aide

2

Euh on n'est pas censés deviner sur quelle plateforme tu travailles, donc si tu donnes pas un peu plus de contexte tu n'auras pas de réponse smile

3

je ne comprends vraiment que veut dire le mot plateforme mais voici qq details:
je travaille sous windows millenium
le programme est fait avec delphi5
pour la partie electronique, c'est juste un ensemble d'entrées et de sorties qui correspondent aux entrées et aux sorties du port // reliées à des relais qui servent à actionner des organes ou des mécanismes j'espere que je réponds ) la question. mon pb c'est que avec l'orloge interne du processeur, j'occupe le systeme. et il lui arrive de planter.

4

Hmmmm question intéressante, je ne suis pas sûr que ce soit possible, mais je ne suis pas non plus sûr du contraire.
Sous windows xp, tu ne peux pas accéder au matériel, mais windows millenium se laissait encore faire (sinon ton programme planterait au premier accès au port parrallèle avec un message de windows disant que le programme a essayé de faire un truc interdit).

Mais autoriser les instructions d'entrées/sorties, c'est une chose, router les interruptions matérielles aux applications c'en est une autre. Je ne pense pas que le système sache faire ça (comment il choisirait quelle interruption router à qui, pour commencer ?)

5

voilà ce que je fais c'est le suivant:
le pc serait relié à un circuit electronique qui compare l'etat actuel des entrées au précédent et l'etat actuel. à la detection d'un changement, le circuit est destiné à générer une impulsion qui est sensée déclancher une interuption . je sais que l'interuption qui gére le port// est la 017h. elle a deux fonctions. mais ce que j'ignore c'est:
quel est le pin qu'il faut utiliser pour declancher cet interuption?
et comment ecrire ce programme en asembleur.
en ce qui concerne le windows ME il ne donne aucun message d'erreur quand il rencontre des instructions du genre assembleur.
jusque là, mon programme marche, mais avec un cycle LECTURE--> CALCUL-->ECRITURE. avec un temps de cycle de 1MS(1kHZ)

6

Vérification faite, tu ne peux effectivement pas faire ce que tu veux avec un programme ordinaire. Il faut que tu écrives un pilote de périphérique. Remarque c'est logique en même temps, vu que tu veux piloter un périphérique.

Par contre je peux pas t'aiguiller davantage : les outils de développement de drivers pour windows 98/Me ne sont plus dispos, et ceux pour windows Xp sont payants :/ Si tu connais quelqu'un qui a un abonnement à MSDN (qui reçoit les CD tous les mois ou trimestres) tu peux lui demander.
Et évidemment, si je glisse Linux dans mon post je vais avoir une bande de boulets qui débarque pour dire que je trolle, mais qui n'auront pas mieux à proposer pour autant tongue.

7

Si les drivers sont les memes que sous 98 : lit les tutoriaux d'iczelion traduit par morgatte sur http://win32asm.cjb.net.
S'il s'agit de drivers comme sous xp, tu devras te diriger sur les textes de Four-F traduit par Neitsa a http://neitsabes.online.fr/ASM/KMD/KMDindex.htm . Four-F a fait un sdk aussi, s'il n'est pas sur le site de neitsa essaie de voir sur win32asm.cjb.net.

Il y a plein de facon d'acceder au niveau ring 0 mais la plus propre est bel et bien le driver.