probleme usart, pic16f627a
Répondre à la discussion
Affichage des résultats 1 à 30 sur 30

probleme usart, pic16f627a



  1. #1
    invite8ac507df

    Exclamation probleme usart, pic16f627a


    ------

    Bonjour, pour un projet de TPE j'ai décidé de faire un exemple de contrôle de led par ordinateur. J'ai fait le circuit, le programme mais le pic n'actionne pas les led et ce depuis plus d'un mois. Même avec un travail acharné ^^. Je pense que le problème vien du code donc pouvez vous m'aider. Merci.
    Code:
    le main:
    #include <stdio.h>
    #include <htc.h>
    #include "usart.h"
    #include "pic16f62xa.h"
    
    __CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT);
    
    void main(void)
    {
    
    INTCON=0; // pour desactiver l'interruption
    
    TRISB0 = 0;//déclarations des sorties
    TRISB3 = 0;
    TRISB4 = 0;
    TRISB5 = 0;
    TRISB6 = 0;
    
    RB0=1;//activation de la led d'etat
    
    init_comms(); // init les paramètres usart
    
    printf("hi");
    
    while(1)
    {
    
    unsigned char input = getche(); //attend une commande
    
    
    
    switch (input)//cherche ou va la commande
    {
    case 2:
    RB3 = !RB3;//inverse la valeur du pin
    break;
    case 3:
    RB4 = !RB4;
    break;
    case 4:
    RB5 = !RB5;
    break;
    case 5:
    RB6 = !RB6;
    break;
    case 6:
    RB7 = !RB7;
    break;
    case 7:
    RA1 = !RA1;
    break;
    default:
    //ne rien faire
    break;
    }
    }
    }
    le usart.h:
    Code:
    #ifndef _SERIAL_H_
    #define _SERIAL_H_
    #include "pic16f62xa.h"
    #define BAUD 9600
    #define FOSC 26625000
    #define NINE 0 /* Use 9bit communication? FALSE=8bit */
    
    #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
    #define HIGH_SPEED 1
    
    #if NINE == 1
    #define NINE_BITS 0x40
    #else
    #define NINE_BITS 0
    #endif
    
    #if HIGH_SPEED == 1
    #define SPEED 0x4
    #else
    #define SPEED 0
    #endif
    
    
    #define RX_PIN TRISB1
    #define TX_PIN TRISB2
    
    
    
    /* Serial initialization */
    #define init_comms()\
    RX_PIN = 1; \
    TX_PIN = 1; \
    SPBRG = DIVIDER; \
    RCSTA = (NINE_BITS|0x90); \
    TXSTA = (SPEED|NINE_BITS|0x20)
    
    void putch(unsigned char);
    unsigned char getch(void);
    unsigned char getche(void);
    
    #endif

    -----

  2. #2
    Forhorse

    Re : probleme usart, pic16f627a

    t'es sûr pour le
    #define FOSC 26625000
    ?

    Et puis le
    #define RX_PIN TRISB1
    #define TX_PIN TRISB2
    me semble franchement bizarre, mais bon je dis ça comme ça vu que je programme pas en C

  3. #3
    DAUDET78

    Re : probleme usart, pic16f627a

    Et le hard qui fait l'interface entre le PIC et le PC, c'est quoi?
    J'aime pas le Grec

  4. #4
    invite8ac507df

    Re : probleme usart, pic16f627a

    Pour le quartz, oui je suis sur (y avais plus de valeur rondes), pour les deux define j'ai vérifié 10 fois sur les datasheets et le hard entre les deux c'est une simple carte série intègre a la carte mère (ASUS P5N-D).

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

    Re : probleme usart, pic16f627a

    Citation Envoyé par damfle Voir le message
    et le hard entre les deux c'est une simple carte série intègre a la carte mère (ASUS P5N-D).
    Ca , je m'en doute !
    Je parle du hard entre la DB9 du PC et le PIC ?
    J'aime pas le Grec

  7. #6
    Forhorse

    Re : probleme usart, pic16f627a

    Un quartz de 26Mhz sur un PIC qui accepte maxi 20Mhz je suis pas sûr que ça marche à tous les coups. ça fait quand même un gros overcloking

  8. #7
    invite8ac507df

    Re : probleme usart, pic16f627a

    Ah, c'est un rs232n oublié de préciser. Et pour le quartz j'avais le même problème avec un 4Mhz donc j'ai changé, mais la led de test s'alume donc je pense que ca devrais aller.

  9. #8
    DAUDET78

    Re : probleme usart, pic16f627a

    Citation Envoyé par damfle Voir le message
    Ah, c'est un rs232n oublié de préciser.
    On s'en doute !
    Je te demande comment tu l'as fait ?
    Le schéma utilisé? les fils de câblage entre le DB9 du PC, le MAX232 et ton µC ????
    J'aime pas le Grec

  10. #9
    invite8ac507df

    Re : probleme usart, pic16f627a

    Donc le pin 2 (RX) du port serie est relié au port 14 (RS1out) du rs232
    le pin 3 (TX) du port serie est relié au port 13 (RS1in) du rs
    5 (gnd) serie masse du circuit
    le pin 12 (R1out) du rs232 est relié au pin 7 (RX) du pic
    le pin 11 (T1in) du rs est relié au pin 8 (TX) du pic
    voila pour l'instant je passe le schema sur lordi pour le reste (please wait) ^^

  11. #10
    Forhorse

    Re : probleme usart, pic16f627a

    Essayes déjà dans l'autre sens, c'est a dire le PIC qui envois quelque chose au PC (n'importe quoi, un compteur qui compte les secondes, un nombre aleatoire, l'image d'un entrée...)
    si ça marche ça validera déjà la moitié du hard et toute la partie configuration/declaration de la liaison serie.
    Il sera alors temps de se concentrer sur la reception (avec un PIC il est plus facile d'emettre que de recevoir...)

  12. #11
    invite8ac507df

    Re : probleme usart, pic16f627a

    c'est visible dans le programme: le pic envoi un "hi" au démarrage mais le pc reçois des chose autres (caractères incompréhensible)
    voila le schema:
     Cliquez pour afficher

  13. #12
    Forhorse

    Re : probleme usart, pic16f627a

    le MAX232 n'est pas alimenté (broche 16)

  14. #13
    invite8ac507df

    Re : probleme usart, pic16f627a

    il l'est mais pas sur ce schema

  15. #14
    Forhorse

    Re : probleme usart, pic16f627a

    Donc, déjà si ton "hi" ne s'affiche pas correctement côté PC, c'est bien qu'il y a un probleme de configuration de la liaison.
    Tant que ça ne s'affichera pas correctement, comme je l'ai dis plus haut, inutile de vouloir aller plus loin.

  16. #15
    Forhorse

    Re : probleme usart, pic16f627a

    En relisant la datasheet, je trouve que dans ton cas SPBRG devrait faire 172 (sous reserve d'une erreur de ma part)
    que donne ta ligne de programme
    #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
    ?

  17. #16
    invite8ac507df

    Re : probleme usart, pic16f627a

    mais justement il est la le problème mais comment le régler ^^

  18. #17
    Forhorse

    Re : probleme usart, pic16f627a

    Ben tu essayes en faisant la declaration en dur
    genre
    #define DIVIDER 172
    (refais quand même le calcul pour être sûr)
    puisque de toutes façons le calcul de cette ligne est faite par le compilateur avant l'envois du programme dans le pic et non pas en interne dans le pic.
    La seule difference c'est que si tu dois changer la vitesse ou la frequence d'horloge cette valeur ne sera pas ajustée automatiquement.

    Mais relis bien la documentation de ton compilateur par rapport au l'utilisation de l'USART, c'est étonnant qu'il faille declarer à la main cette valeur ou ce calcul.
    Moi avec Proton+ je n'ai jamais eu besoin de declarer quoi que ce soit concernant SPBRG, je declare la vitesse voulue, la frequence d'horloge et le compilo se debrouille tout seul pour ajuster les registres qui vont bien.

  19. #18
    invite8ac507df

    Re : probleme usart, pic16f627a

    ma define donne 172,33 et est arrondie au plus bas (je croit) donc 172(je pense que c'est bon ^^)
    et pour l'initialisation de l'usart c'est le code exemple du compilateur

  20. #19
    Forhorse

    Re : probleme usart, pic16f627a

    Ok, donc un coup pour rien, le probleme est ailleur.

  21. #20
    invite8ac507df

    Re : probleme usart, pic16f627a

    et pour le code?

  22. #21
    RISC

    Re : probleme usart, pic16f627a

    Salut,

    Tu utilises quel compilateur ?
    Peux-tu faire voir ton schéma (à jour et complet) ?

    a+

  23. #22
    invite8ac507df

    Re : probleme usart, pic16f627a

    pour le schema je suis désolé je ne peut rien faire de plus, il y a juste (comme dans la doc) un condo de 1uF entre le VCC et le V+ et j'utilise hi-tech c

  24. #23
    RISC

    Re : probleme usart, pic16f627a

    Salut,

    Pardon je n'avais pas vu ton schéma dans la page précédente.
    Il y a d'ailleurs plusieurs erreurs :
    1/ cherche sur internet comment faire une alimentation. Tes 2 condensateurs autour du 7805 sont beaucoup trop petits. Regarde simplement le schéma recommandé par les fabricants.
    2/ Il faut mettre une résistance de rappel un peu plus élevée sur la broche MCLR (10K)

    Au niveau soft.
    a/ Tu montres un quartz de 4MHz donc ton #define doit être en phase : #define FOSC 4000000
    b/ ta définition du bits pour le power on reset (POR) n'est pas correcte. Tu n'as pas mis de POR externe et tu désactives le POR interne. Je te garantis des PB quand tu réaliseras le circuit...
    Si tu ne veux pas en ajouter en externe il FAUT activer le POR interne.
    Désactives le bit LVP s'il existe (je ne me souviens plus pour ce micro).

    Quelle version du compilateur HiTech utilises-tu ?
    Il y avait quelque PB dans les versions < 9.40, je te recommande d'installer la dernière (version LITE gratuite) qui est téléchargeable ici : http://www.microchip.com/compilers

    a+

  25. #24
    invite8ac507df

    Re : probleme usart, pic16f627a

    1) je me suis inspiré des docs
    2) encore une erreur sur le schema sur le circuit c'est bien une 10k excusez moi ^^
    a)sur les message precedent j'ai dit que j'avais changer le quartz encore une erreur de schema(re excusez moi je l'ai pas mis a jour depuis 3 mois)
    b)a verifier merci


    et pour le compilateur j'ai vu et je suis donc deja passer a cette version
    et je vais mettre a jour mon schema

  26. #25
    invite8ac507df

    Re : probleme usart, pic16f627a

    rien n'y fait...

  27. #26
    invite03481543

    Re : probleme usart, pic16f627a

    Bonjour,

    C'est quoi le problème au juste ?
    Vous envoyez quoi comme commande au PIC ?

    Code:
    unsigned char input = getche();
    Ca me chiffonne cette façon d'écrire.

    pourquoi ne pas avoir écrit:

    Code:
    unsigned char input; // déclaration de la variable
    
    input = getche();  // utilisation de la variable

  28. #27
    invite8ac507df

    Re : probleme usart, pic16f627a

    j'envoi par exemple un caractère 2 le pic le recois en hexa puis test pour allumer la led correspondante.

    ma ligne est bien? rien n'empeche de declarer un variable avec une valeur?

  29. #28
    Forhorse

    Re : probleme usart, pic16f627a

    Tu attends en te tournant les pouces qu'on te donne la solution, ou tu essayes de ton côté ?

  30. #29
    invite8ac507df

    Re : probleme usart, pic16f627a

    bah j'essai, j'ai pas le choix ^^'

  31. #30
    Forhorse

    Re : probleme usart, pic16f627a

    Ben fait nous par de tes essais...
    Par contre un truc que tu n'a peux être pas pris en compte. Si tu utilise hyperterminal (ou un logiciel du même genre) pour evoyer tes commandes au pic, il faut savoir que si tu envois "2", ton pic ne reçoit pas "0b0000010" mais le ce code ascii correspondant au caractère 2, c'est à dire si je ne me trompe pas "0b0011010"

Discussions similaires

  1. usart pic
    Par coeur noire dans le forum Électronique
    Réponses: 2
    Dernier message: 21/07/2010, 12h52
  2. Probleme usart pic 18f4620
    Par invite52e85ae4 dans le forum Électronique
    Réponses: 2
    Dernier message: 27/05/2010, 08h20
  3. [PIC18F]-module USART - problème avec le bit OERR
    Par jorg1n dans le forum Électronique
    Réponses: 6
    Dernier message: 28/10/2009, 07h37
  4. Probleme USART PIC16F877
    Par invite2d9e7c03 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/08/2009, 10h49
  5. Usart Avr
    Par invite2b4da655 dans le forum Électronique
    Réponses: 13
    Dernier message: 20/05/2006, 23h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.