Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

pb pour piloter un circuit par le port parallèle



  1. #1
    LaMouche

    pb pour piloter un circuit par le port parallèle


    ------

    Bonjour à tous,

    Je voudrais utiliser le port parallèle de mon PC (sous win98, c'est plus facile ...) pour envoyer une donnée sur 8 bits à un circuit numérique...

    J'ai déjà fait ce genre de manip il ya quelque temps, mais après un formatage de disque, j'ai perdu mon programme que je croyais avoir sauvegarder et puis en fait ... non ...

    Alors voilà mon problème : avec le programme qui suit (sous Visual studio C++), je parviens à lire les données qui sont sur le port mais pas à écrire autre chose (c'est juste un programme test avec au bout du cable // une platine avec 8 leds pour visualiser les sorties):

    J'ai télécharger un logiciel qui se nomme "parallele.exe" et qui permet de mettre à 1 ou 0 les bits de donnéedu port // simplement. Et ce programme fonctionne très bien, il arrive à lire et à écrire ...

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    #define DATA 0x378
    #define CONTROLE 0x37A

    //mes 2 fonctions pour lire et ecrire :
    unsigned char lire_port(void)
    {
    _outp(0xEE, CONTROLE);
    return _inp(DATA);
    }

    unsigned char ecrire_port(val)
    {
    _outp(0xEC, CONTROLE);
    _outp(val, DATA);
    return val;
    }

    void main(void)
    {
    int val=0;
    val=lire_port();
    printf("val=%d", val);
    ecrire_port(10); /*je lui met 10, mais ça pourrait etre n'importe quoi ...*/
    system("pause");
    }

    Donc voilà, quand je lance ce programme, il m'affiche bien la valeur qui se trouve sur le port, mais ne peut pas en écrire une nouvelle ...

    Coté BIOS, je suis en EPP/ECP (donc en bidirectionnel) et j'ai essayer toutes les config possibles (unidirectionnel, bi-directionnel, EPP/ECP).

    Merci de votre aide !

    Michael

    -----

  2. #2
    LaMouche

    Thumbs up Re : pb pour piloter un circuit par le port parallèle

    Alors au cas où ça interesse quelqu'un, on m'a suggéré la façon suivante de faire :

    // Lecture
    unsigned char lire_port(void)
    {
    _outp(CONTROLE,(_inp(CONTROLE) |0x20)); // Le bit 5 à 1
    return _inp(DATA);
    }


    // Ecriture
    unsigned char ecrire_port(unsigned char val)
    {
    _outp(CONTROLE,(_inp(CONTROLE) & 0xDF)); // Le bit 5 à 0
    _outp(DATA,val);
    return val;
    }

    Et de cette manière, ça fonctionne correctement !

  3. #3
    Jack
    Modérateur

    Re : pb pour piloter un circuit par le port parallèle

    salut,

    c'est normal que _outp ne marche pas. Regarde le prototype de la fonction dans ta documentation. Tu as inversé les paramètres.

    Essaie _outp(CONTROLE, 0xEE);

    au lieu de

    _outp(0xEE, CONTROLE);

    et tout rentrera dans l'ordre.

    PS: a quoi sert le return val dans la fonction d'écriture sur le port?

    A+
    Dernière modification par Jack ; 25/08/2005 à 10h38.

Discussions similaires

  1. piloter moteur pas a pas depuis port parallele
    Par Bouteille51 dans le forum Électronique
    Réponses: 14
    Dernier message: 24/10/2007, 12h07
  2. Piloter un pic par le port usb...
    Par samux dans le forum Électronique
    Réponses: 9
    Dernier message: 02/01/2007, 13h21
  3. Commande de leds par le port parallèle
    Par slayer54 dans le forum Électronique
    Réponses: 2
    Dernier message: 10/12/2006, 15h01
  4. Pb pour lire port parallèle
    Par LaMouche dans le forum Électronique
    Réponses: 9
    Dernier message: 04/06/2006, 19h42
  5. Contrôle d'appareils par le port parallèle du PC
    Par Zogzogakita dans le forum Électronique
    Réponses: 15
    Dernier message: 29/05/2006, 18h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.