IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[PIC] interruption USB / RS232


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut [PIC] interruption USB / RS232
    bonjour à tous,

    je suis en train de developper un programme en C pour PIC 18f2550 pour utiliser le port USB et émuler un port série. j'utilise le compilateur CCS.

    voici mon probleme :

    j'ai fais mon programme à partir de l'exemple qui est donné avec le compilateur, le PIC est bien reconnu en tant que convertisseur usb/rs232et fonctionne mais je ne sais pas comment faire pour utiliser les interruptions.

    -l'interruption RS232 ne fonctionne pas puisque c'est le port usb et pas les ports TX et RX qui est utilisé
    -l'interruption USB est deja utiliser apparemment pour initialiser le port

    comment faire pour utiliser les interruptions comme quand j'utilisais le port rs232 ?

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    Bonjour à tous,

    Trois ans après, j'ai le même problème que Spilz

    Si quelqu'un a une solution...

    Merci

  3. #3
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Bonjour,

    Je ne connais pas les PIC, mais d'autres µC (8051/STM32), et je présume que la gestion des interruptions doit être similaire.

    Par exemple, pour l'interruption série, il y a un handler (la fonction d'interruption) qui est appelée pour divers évènements (réception d'un octet, mise en buffer d'un octet, émission d'un octet etc...). Pour chaque évènement, il faut valider le bit qui lui est attribué (ce qui permet au µC de déclencher l'appel au handler lorsque l'évènement se produit). Puis dans le handler même, il faut tester un bit qui indique quel évènement c'est produit.

    Dans la documentation du PIC 18F2550 (page 182) il y a le registre UIE (USB INTERRUPT ENABLE REGISTER). Il est composé de plusieurs bits dont TRNIE (Transaction Complete Interrupt Enable bit). Donc par déduction, je pense que si le bit TRNIE est mis à '1', la fonction d'interruption sera appelée lorsque la transaction sera finie.

    Dans la documentation (page 180), il y a le registre UIR (USB INTERRUPT STATUS REGISTER). Il est composé de plusieurs bits dont TRNIF (Transaction Complete Interrupt bit). Donc toujours par déduction , je pense que pour tester la fin de transaction, il suffit de tester si le bit TRNIF de UIR est à '1'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void handlerUSB(void)
    {
        // Tester si fin transaction
        if(UIR.TRNIF==1) {
        ....
        }
        // Tester les autres bits nécessaires
        if(UIR.xxx==1) {
        ....
        }
    }
     
    // Dans la configuration
    UIE.TRNIE = 1 ;    // Active l'évènement de fin de transaction USB
    Si cela vous permet d'avancer .... tant mieux

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    Bonjour Elijha,

    Merci pour cette réponse.

    Finalement j'ai choisi de ne pas utiliser l'interruption sur la réception de données par peur d'incompatibilité avec la pile USB fournit par Microchip.

    Je vais utiliser l'interruption sur le timer0 pour vérifier la présence de donné sur le buffer.

    Cette solution est certes moins élégante, mais je la trouve très simple à implémenter.

    Cordialement

Discussions similaires

  1. [Débutant] USB - RS232
    Par orfix dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 19/10/2008, 18h27
  2. Réponses: 6
    Dernier message: 15/04/2008, 13h58
  3. Problème de communication PIC-PC via RS232
    Par jiji94 dans le forum C++
    Réponses: 0
    Dernier message: 04/04/2008, 19h26
  4. adapteur usb/rs232 avec pl7pro
    Par le_narf dans le forum Automation
    Réponses: 7
    Dernier message: 06/09/2007, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo