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

Comment relier deux PIC



  1. #1
    Bakakun

    Comment relier deux PIC


    ------

    Bonjour à tous,
    je suis actuellement en Terminale S option SI et je travaille dans le cadre de mon PPE sur un panneau solaire orientable automatiquement.

    Nous avons opter pour un positionnement sans capteur mais avec un algorithme réalisé sur des PICs.
    Les algorithmes sont terminés, non pas sans mal, mais nous nous heurtons à un problème.

    En effet, notre circuit est composé de deux PIC :
    - L'un permet de choisir la date actuelle lors de l'initialisation du circuit
    - L'un qui commande le moteur avec l'algorithme de position du soleil simplifié.

    Le problème réside dans la transmission des données entre ces deux PICS, le 16F628 possède un USART qui permettrai une liaision série donc un envoie de valeurs numériques et non pas que logiques, malheureusement notre prof n'a jamais utilisé de telles fonctions et ne peut pas nous aider en conséquence.

    Voici donc quelques questions :
    - Est il possible de réaliser cet envoie de PIC à PIC ?
    - Si oui, que faut il donc opérer dans la programmation de ces deux PICS ?
    - Quel type de liason faut il mettre en place entre ces deux PICS, une simple liason série entre les ports qui fonctionne en USART ?

    Merci d'avance pour vos réponses,
    cordialement,
    Bakakun

    -----

  2. Publicité
  3. #2
    DAUDET78

    Re : Comment relier deux PIC

    Si tes PICs sont sur la même carte (ou deux cartes cote à cote)
    - RX de PIC1 sur TX de PIC2
    - TX de PIC1 sur RX de PIC2

    Et tu échanges des octets

    Je te conseille d'utiliser des trames ASCII et non des octets binaires :
    - la valeur 4 est transmise par 00110100 (soit 0x34) et non par 00000100 (soit 0x04)
    - mettre en début de trame un code 0x0D et en fin de trame 0x0A

    Ceci te permet d'espionner le dialogue en clair avec un HyperTerminal quelconque. Il faut deux fois plus d'octets pour transmettre une information, ce n'est pas un probléme
    J'aime pas le Grec

  4. #3
    Bakakun

    Re : Comment relier deux PIC

    Merci pour ta réponse rapide qui m'éclaire bien !

    Cependant, ces trames dont tu parles, comment est ce que je définis l'envoie et la réception de ces valeurs ?

  5. #4
    DAUDET78

    Re : Comment relier deux PIC

    Citation Envoyé par Bakakun Voir le message
    comment est ce que je définis l'envoie et la réception de ces valeurs ?
    Ca , c'est TON problème ! Ce n'est pas moi qui fait ton cahier des charges. Je t'ai décris une procédure que j'utilise souvent. Si TU décides d'envoyer la valeur hexa 0x4D2 (soit 1234 en décimal), tu transformes 0x4D2 en chaine de caractères, tu rajoutes l'en tête et l'en queue et tu balances 5 octets sur la liaison série :
    Code:
    0D 34 44 32 0A
    L'autre PIC détecte le OD comme début de trame, accumule les octets suivant en RAM, détecte le 0A comme fin de trame, et reconvertie la chaine de caractères reçue.
    J'aime pas le Grec

  6. A voir en vidéo sur Futura
  7. #5
    dome45

    Re : Comment relier deux PIC

    Bonjour,

    http://forums.futura-sciences.com/el...ic-16f628.html

    Ce lien date d'hier

    @@@++

  8. #6
    DAUDET78

    Re : Comment relier deux PIC

    voir ma réponse #6 http://forums.futura-sciences.com/el...ees-rs232.html

    c'était une liaison PC<->PIC, mais le problème est identique
    J'aime pas le Grec

  9. Publicité
  10. #7
    Bakakun

    Re : Comment relier deux PIC

    A DAUDET78, je ne trouve pas de source dans l'archive décompressée et le .exe ne s'ouvre pas, faut il installer quelque chose pour l'executer : Le composant "MSCOMM32.OCX" ou une de ses dépendances n'est pas correctement enregistré

    Merci Dome45, mais ce code semble être en assembleur n'est ce pas, en cour j'ai appris à me servir du Basic, à la rigueur je pourrais comprendre le C car j'en ai quelques notions, mais la je ne comprends pas désolé ...

    En fait c'est que je ne comprends pas tres bien le systeme de transfert.
    Prenons un exemple je m'expliquerai mieux ...

    Disons que j'ai besoin d'envoyer une date comme 18 03 2009 11 20 (18/03/2009 11:20)
    Premier probleme : l'ascii coresspond à un procédé charactere par charactere non ? Donc 18 = ?
    - je traduis 1 et 8 donc 31 et 38 en décimal 0001 1111 et 0010 0110 en binaire et 1F et 26 en hexadécimal (si je n'ai pas fait d'erreur ...)
    - ou alors je traduis 18 = 0001 0010 = 12 en hexadécimal
    Quand à l'autre système de conversion je ne l'ai jamais vu donc je vais me documenter dessus ...

    Maintenant supposons que j'ai réussi à coder ces valeurs, quelle fonction permet de définir que ce sont ces valeurs que je doit envoyer ?
    Pour une variable logique je définie avant le main : symbol ma_variable = PortA.0 par exemple, mais là quelle est la méthode ?

    De même sur le second PIC, quelle doit être la focntion qui permet d'utiliser ces infos, comment récuperer le flux de données ?


    Autre question, le flux échangé est il présent tout le temps ou doit il etre activé et désactivé juste lorsque j'ai besoin de ces données ?

    Si vous trouvez que c'est me macher le travail, connaissez vous un document ou des tutoriels, voir un livre qui permettrait de me donner les connaissances nécessaires à cela ? La documentation qu'a recu mon prof ne parle pas du fonctionnement de ces fonctios USART ...

    Encore désolé pour mon ignorance ...

  11. #8
    DAUDET78

    Re : Comment relier deux PIC

    Le source c'est le .FRM
    Le problème de VB6 ... c'est qu'il manque toujours quelque chose !
    regarde si tu peux dowloader ici http://www.yes-tele.com/mscomm.html
    et tu met l'OCX dans le répertoire avec les autres fichiers dezippés
    J'aime pas le Grec

  12. #9
    dome45

    Re : Comment relier deux PIC

    Bonjour,
    Citation Envoyé par Bakakun Voir le message
    Disons que j'ai besoin d'envoyer une date comme 18 03 2009 11 20 (18/03/2009 11:20)
    Premier probleme : l'ascii coresspond à un procédé charactere par charactere non ? Donc 18 = ?
    - je traduis 1 et 8 donc 31 et 38 en décimal 0001 1111 et 0010 0110 en binaire et 1F et 26 en hexadécimal (si je n'ai pas fait d'erreur ...)
    Que tu envoie dans ton registre emission TXREG du PIC1:
    -en ASCII '1'
    -ou en decimal .49
    -ou en Hex 0x31
    tu aura dans le registre reception RCSTA du PIC2 un octet egal a b'00110001'
    Il te faut une routine pour retransformer cet octet en code ASCII
    (je ne l'ai qu'en assembleur)

    En envoyant le caractere ASCII '8', tu auras en reception b'00111000'

    Pour recuperer le flux de données:
    -soit scruter le bit PIR1, RCIF
    -soit creer une interruption

    @@@+

Discussions similaires

  1. Comment relier 2 carte pic avec liaison RS485
    Par samconvi1 dans le forum Électronique
    Réponses: 15
    Dernier message: 21/03/2009, 14h12
  2. relier deux mac
    Par valounnette dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 07/05/2008, 22h58
  3. [Info] relier deux paraboles
    Par romudlabal dans le forum Dépannage
    Réponses: 2
    Dernier message: 13/08/2007, 21h20
  4. comment relier deux PC pour internet
    Par Cornemuse dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 26/08/2005, 14h59
  5. Relier deux PC
    Par EricBu dans le forum Internet - Réseau - Sécurité générale
    Réponses: 7
    Dernier message: 29/01/2005, 20h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.