begin process at 2010 03 17 06:09:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

problème avec le port 0x60 qui fait des faire des beeps


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème avec le port 0x60 qui fait des faire des beeps

lundi 21 avril 2003 à 22:18:49 | problème avec le port 0x60 qui fait des faire des beeps

prunkdump

voilà lorsque j'utilise le port I\O 0x60 pour voir l'etat du clavier d'abord tout fonctionne bien puis au bout d'un moment le pc fait des beeps, comment faire pour éviter cela?

Merci.
mardi 22 avril 2003 à 23:28:24 | Re : problème avec le port 0x60 qui fait des faire des beeps

CoreBreaker

Les beeps sont produits comme tu le sais lorsque le buffer clavier est plein. Ce buffer est géré par l'interruption 8 (interruption clavier) Il faut soit rediriger l'interruption 8 (au rique que d'autres applications ne fonctionne plus correctement mais c'est un risque qui peut être évité si ton interruption est bien programmé en permettant que les autres applis puisse chopper toute de même les touches du clavier lorsque ton appli n'en a pas besoin.

Tu peux aussi éviter que l'interruption 8 se déclenche en désactivant la ligne d'IRQ en programmant le contrôleur d'interruption matérielles.

Tu peux aussi et c'est ce que je préfère masquer temporairement les interruptions matérielles car ainsi c'est plus proche d'un multitâche préemptif en faisant:

cli
récuperer_infos_sur_port_60h
sti

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> voilà lorsque j'utilise le port I\O 0x60 pour voir l'etat du clavier d'abord tout fonctionne bien puis au bout d'un moment le pc fait des beeps, comment faire pour éviter cela?
>
> Merci.
vendredi 25 avril 2003 à 20:27:34 | Re : problème avec le port 0x60 qui fait des faire des beeps

prunkdump





-------------------------------
Réponse au message :
-------------------------------

> Les beeps sont produits comme tu le sais lorsque le buffer clavier est plein. Ce buffer est géré par l'interruption 8 (interruption clavier) Il faut soit rediriger l'interruption 8 (au rique que d'autres applications ne fonctionne plus correctement mais c'est un risque qui peut être évité si ton interruption est bien programmé en permettant que les autres applis puisse chopper toute de même les touches du clavier lorsque ton appli n'en a pas besoin.
>
> Tu peux aussi éviter que l'interruption 8 se déclenche en désactivant la ligne d'IRQ en programmant le contrôleur d'interruption matérielles.
>
> Tu peux aussi et c'est ce que je préfère masquer temporairement les interruptions matérielles car ainsi c'est plus proche d'un multitâche préemptif en faisant:
>
> cli
> récuperer_infos_sur_port_60h
> sti
>
> Core Breaker
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > voilà lorsque j'utilise le port I\O 0x60 pour voir l'etat du clavier d'abord tout fonctionne bien puis au bout d'un moment le pc fait des beeps, comment faire pour éviter cela?
> >
> > Merci.
>
vendredi 25 avril 2003 à 20:35:30 | Re : problème avec le port 0x60 qui fait des faire des beeps

prunkdump

Tout d'abord merci pour votre réponce, mais j'ai encore un petit problême.

voila ce que j'ai fait:

j'ai dévié l'interruption 0x09 sur ma procédure que voici:

fonction:
in al, 0x60
mov [touche], al
mov al, 0x20
out 0x20, al
iret

Je lis l'état du clavier, je place le scan code dans un buffer, j'envoi au PIC la comfirmation de l'interruption.

Mais voilà utiliser cette routine fait des buggs sur l'écran (en mode graphique), et il y à quelque défaut dans l'interractivité des touches. Pourriez vous m'expliquer comment enlever ce problème.
vendredi 25 avril 2003 à 21:53:45 | Re : problème avec le port 0x60 qui fait des faire des beeps

CoreBreaker

Oui et alors ????
Un message vide ne m'inspire pas trop tu sais !!!!

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Les beeps sont produits comme tu le sais lorsque le buffer clavier est plein. Ce buffer est géré par l'interruption 8 (interruption clavier) Il faut soit rediriger l'interruption 8 (au rique que d'autres applications ne fonctionne plus correctement mais c'est un risque qui peut être évité si ton interruption est bien programmé en permettant que les autres applis puisse chopper toute de même les touches du clavier lorsque ton appli n'en a pas besoin.
> >
> > Tu peux aussi éviter que l'interruption 8 se déclenche en désactivant la ligne d'IRQ en programmant le contrôleur d'interruption matérielles.
> >
> > Tu peux aussi et c'est ce que je préfère masquer temporairement les interruptions matérielles car ainsi c'est plus proche d'un multitâche préemptif en faisant:
> >
> > cli
> > récuperer_infos_sur_port_60h
> > sti
> >
> > Core Breaker
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > voilà lorsque j'utilise le port I\O 0x60 pour voir l'etat du clavier d'abord tout fonctionne bien puis au bout d'un moment le pc fait des beeps, comment faire pour éviter cela?
> > >
> > > Merci.
> >
>
vendredi 25 avril 2003 à 22:07:10 | Re : problème avec le port 0x60 qui fait des faire des beeps

CoreBreaker

Excuse mon ignorance à ton sujet je vois que tu maitrise un peu le sujet et excuse mon erreur c'est effectivement l'interruption 9 et pas la 8 comme je te l'avais indiqué.
Sinon essai:
fonction:
cli
in al, 0x60
mov [touche], al
mov al, 0x20
out 0x20, al
sti
iret

et dis moi si ca marche

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Tout d'abord merci pour votre réponce, mais j'ai encore un petit problême.
>
> voila ce que j'ai fait:
>
> j'ai dévié l'interruption 0x09 sur ma procédure que voici:
>
> fonction:
> in al, 0x60
> mov [touche], al
> mov al, 0x20
> out 0x20, al
> iret
>
> Je lis l'état du clavier, je place le scan code dans un buffer, j'envoi au PIC la comfirmation de l'interruption.
>
> Mais voilà utiliser cette routine fait des buggs sur l'écran (en mode graphique), et il y à quelque défaut dans l'interractivité des touches. Pourriez vous m'expliquer comment enlever ce problème.
vendredi 25 avril 2003 à 23:18:13 | Re : problème avec le port 0x60 qui fait des faire des beeps

prunkdump


-----------------------------
prunkdump
-----------------------------

Excuse pour le message vide je suis un peu un andicapé du forum, j'espère que celui là il marchera.

Désactiver les interruptions s'a ne marche pas mais ces buggs sont vraiment étranges j'ai des ligne blanche qui apparoissent sur l'écran et des fois l'orsque j'appuis sur la touche l'action ne se déclenche pas instantanement, je pense que c'est du à mon utilisation du PIC. Faut il vraiment envoyer un message au PIC à chaque appel de l'interruption. Je n'ose pas trop m'attaquer aux interruptions du mode protégé de windows grâce à la table IDT car là si je me plante je fout tout en l'air.



-------------------------------
Réponse au message :
-------------------------------

> Excuse mon ignorance à ton sujet je vois que tu maitrise un peu le sujet et excuse mon erreur c'est effectivement l'interruption 9 et pas la 8 comme je te l'avais indiqué.
> Sinon essai:
> fonction:
> cli
> in al, 0x60
> mov [touche], al
> mov al, 0x20
> out 0x20, al
> sti
> iret
>
> et dis moi si ca marche
>
> Core Breaker
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Tout d'abord merci pour votre réponce, mais j'ai encore un petit problême.
> >
> > voila ce que j'ai fait:
> >
> > j'ai dévié l'interruption 0x09 sur ma procédure que voici:
> >
> > fonction:
> > in al, 0x60
> > mov [touche], al
> > mov al, 0x20
> > out 0x20, al
> > iret
> >
> > Je lis l'état du clavier, je place le scan code dans un buffer, j'envoi au PIC la comfirmation de l'interruption.
> >
> > Mais voilà utiliser cette routine fait des buggs sur l'écran (en mode graphique), et il y à quelque défaut dans l'interractivité des touches. Pourriez vous m'expliquer comment enlever ce problème.
>
samedi 26 avril 2003 à 00:05:57 | Re : problème avec le port 0x60 qui fait des faire des beeps

CoreBreaker

Tu programmes en 32bits alors ? (tu parle de l'IDT)
en principe un cli désactive la ligne d'IRQ du processeur central donc si tu l'utilise et que tu dis que ça marche pas ça ne te servira à rien de désactiver au niveau du PIC tu auras le même problème. Mais le cli/sti reste nécessaire pour éviter d'avoir une interruption réentrante. L'action au PIC reste inutile car si tu marque l'IRQ du controleur clavier tu auras les même problème puisque les autres IRQ restent actives.
Je ne pense pas que ça vient du PIC si la réaction à une touche n'est pas instantanée c'est qu'il y a une tache quite consomme trop de temps processeur.
De toute façon, je ne pense pas non plus que tu puisses passer par l'IDT car la zone mémoire de cette table doit être de RPL de niveau 0 (donc au niveau du noyau), tu n'y aurras pas accès comme ça, il te faut pour la manipuler un code docile s'il est exécuté en DPL de niveau 3. Ce qui sera le cas puisque par défaut un code exécuté est en DPL 3. Et puis ce n'est pas simple d'avoir un code exécuté en DPL 0, 1 ou 2 car il te faut rajouter un descipteur dans la GDT ou la LDT, c'est un serpent qui se mord la queue. Seul le noyau ne pourra t'accorder un DPL < 3 à l'exécution. Mais bon on peut toujour essayer.

Si tu veux, envoi moi ton source à metaos@free.fr, je verrai ce que je pourrais faire.

C'est l'action sur une touche qui provoque les lignes blanches?

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

>
> -----------------------------
> prunkdump
> -----------------------------
>
> Excuse pour le message vide je suis un peu un andicapé du forum, j'espère que celui là il marchera.
>
> Désactiver les interruptions s'a ne marche pas mais ces buggs sont vraiment étranges j'ai des ligne blanche qui apparoissent sur l'écran et des fois l'orsque j'appuis sur la touche l'action ne se déclenche pas instantanement, je pense que c'est du à mon utilisation du PIC. Faut il vraiment envoyer un message au PIC à chaque appel de l'interruption. Je n'ose pas trop m'attaquer aux interruptions du mode protégé de windows grâce à la table IDT car là si je me plante je fout tout en l'air.
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Excuse mon ignorance à ton sujet je vois que tu maitrise un peu le sujet et excuse mon erreur c'est effectivement l'interruption 9 et pas la 8 comme je te l'avais indiqué.
> > Sinon essai:
> > fonction:
> > cli
> > in al, 0x60
> > mov [touche], al
> > mov al, 0x20
> > out 0x20, al
> > sti
> > iret
> >
> > et dis moi si ca marche
> >
> > Core Breaker
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Tout d'abord merci pour votre réponce, mais j'ai encore un petit problême.
> > >
> > > voila ce que j'ai fait:
> > >
> > > j'ai dévié l'interruption 0x09 sur ma procédure que voici:
> > >
> > > fonction:
> > > in al, 0x60
> > > mov [touche], al
> > > mov al, 0x20
> > > out 0x20, al
> > > iret
> > >
> > > Je lis l'état du clavier, je place le scan code dans un buffer, j'envoi au PIC la comfirmation de l'interruption.
> > >
> > > Mais voilà utiliser cette routine fait des buggs sur l'écran (en mode graphique), et il y à quelque défaut dans l'interractivité des touches. Pourriez vous m'expliquer comment enlever ce problème.
> >
>


Cette discussion est classée dans : problème, port, 0x60, beeps


Répondre à ce message

Sujets en rapport avec ce message

problème gestion port serie [ par chfauve59 ] Bonjour, j'aimerai savoir comment faire pour géré le port série sous windows NT avec Builder ou VC++ sans avoir a utiliser les commandes API de window Port serie et parallele // Portail electrique [ par sayone ] Salut a tous,Je suis etudiant en electronique et kom je ne mi conné pa tro sur les portails electriques j'orai aimé savoir si il été possible de branc Simuler un clic [ par Oswalde ] Bonjour à tous,Je dois depuis un prog en VB simuler le clic sur le bouton gauche de la souris, mais il y a un problème, le logiciel auquel je dois fai [Débutant] Problème de compiler [ par casafa ] Bonjour,Voila le code que j'esseye de compiler:MOV DX,offset MessageMOV AH,9INT 21hMOV AX,04c00hINT 21hMessage DB"Hello World !$"Avec le compilateur A Tester une entrée en asm [ par fred17 ] merci d'avance a ceux qui me répondront. Pour finir un projet, j'ai besoin de tester une entrée. plus précisément de tester le bit 5 qui se trouve dan RS232 pic16f877 problème de réception [ par florian70 ] Je programme en assembleur j'envoie mes info vers mon PC ca marche comme il faut. Ensuite je cherche à recevoir des info sur mon pic16f877 et la je ne comment envoyer un signal carée via port parallele [ par aberachraf ] salut je cherche comment generer un signal carée pour attaquer la ligne RB7/ tocvia le port parralele Problème de compilation de kernel [ par Bub325 ] Bonjour, J'essaye de compiler le kernel suivant : http://www.invalidsoftware.net/os/?the_id=11mais j'ai l'erreur suivante au niveau du link (avec ld) multiplexage de rs232 [ par neitote ] bonjour ,je ve connecter un portable GSM et un GPS avec le pic 16f877 mais on a qu'un seul port serie comment faire pour multiplexer ce port c cool Port [ par RM50Man ] Que represente les port par ex Port 3C8h (Digital Analog Converter)et comment on s'en sert (OUT , IN ???????)RM50man


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales