Resistance pull-up 18F4420
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Resistance pull-up 18F4420



  1. #1
    Kmicaz

    Resistance pull-up 18F4420


    ------

    Salut a tous

    je dois effectuer un montage tout simple avec un 18F4420 et des entrées TOR sur le port B. Je veux activer les pull-up internes mais lorsque je teste sous Isis bah les pins du portB ne sont pas à Vdd en temps normal ... (etat indeterminé ...)

    Voici le debut du programme :

    Code:
    #include<p18F4420.h>
    
    //--------Bits de configuration du pic
    #pragma config OSC=HS 		//Oscillateur à quartz externe
    #pragma config PWRT=ON 		//Timer de reset lors de la mise sous tension
    #pragma config MCLRE=ON		//autorisation d'un reset externe
    #pragma config WDT=OFF		//inhibition du chien de garde
    
    //Programme principal
    
    void main()
    {
    TRISC = 0;
    TRISB = 255;
    INTCON2bits.RBPU= 0; // activation resistances pull-up internes
    Si vous voyez d'ou viens le problème je suis preneur

    Merci d'avance

    -----

  2. #2
    Kmicaz

    Re : Resistance pull-up 18F4420

    Rectification : les pins RB5, RB6 et RB7 sont bien a Vdd par contre les autres sont indeterminées (on dirait que les pull-up ont été activés rien que sur les 3 dernieres pins du portB ...)

  3. #3
    sdec25

    Re : Resistance pull-up 18F4420

    Salut,
    Par défaut RB0-4 sont des entrées analogiques, le pull-up ne doit pas marcher pour cette raison.
    Il faut modifier PBADEN dans les bits de config.

  4. #4
    Kmicaz

    Re : Resistance pull-up 18F4420

    Rhooo trop fort, merci sdec25, ça fait un moment que j'ai travaille et j'y avais pas pensé ...
    J'ai juste ajouté #pragma config PBADEN = OFF et ça marche


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

    Re : Resistance pull-up 18F4420

    Salut,

    Attention.....
    Il ne faut pas confondre la fonction des bits de configuration et la programmation des broches en digital.
    Pour pouvoir utiliser une broche en mode E/S digitale (si elle est aussi analogique ANx), il faut initialiser le registre ADCON1 car sur les PICs les broches démarrent TOUJOURS en analogiques.

    Les bits de configuration PBADEN ont simplement la particularité de permettre de faire démarrer les broches RB0 à RB4 directement en mode digital au RESET au lieu du mode analogique. Pour pouvoir choisir de façon granulaire (une par une) les broches analogiques et digitales il FAUT utiliser ADCON1.

    a+

  7. #6
    Kmicaz

    Re : Resistance pull-up 18F4420

    Salut a tous,
    alors voila, j'ai realisé mon montage en "vrai" et j'ai un problème lors de la programmation sous winpic800 ...
    Est ce que mes fusibles sont bien configurés ??



    car lorsque je mets sous tension, j'ai mon afficheur 7 segments qui s'allume faiblement (et a chaque mise sous tension, cela change de segments ...)

  8. #7
    RISC

    Re : Resistance pull-up 18F4420

    WinPIC800

    Ne perds pas ton temps...travaille sous MPLAB et surtout configure tes fusibles dans ton PROGRAMME, jamais dans l'interface ;=)

    Si tu actives XINST (extended Instruction Set) il faut travailler avec une license payante du C18.
    Si tu ne l'as pas désactive ce bit dans ton programme

    a+
    Dernière modification par RISC ; 06/02/2010 à 16h53.

  9. #8
    Kmicaz

    Re : Resistance pull-up 18F4420

    J'utilise WinPic800 car je programme avec un JDM sur port serie ... mais je programmes sous MPLAB

  10. #9
    Kmicaz

    Re : Resistance pull-up 18F4420

    Je viens de me rendre compte d'un truc :
    si j'enleve #pragma config PBADEN =OFF j'arrive à programmer mon pic (mais j'ai plus les pull-up internes)
    et je sais pas comment je peux faire avec ADCON1 ...

  11. #10
    RISC

    Re : Resistance pull-up 18F4420

    Salut,

    Sur les PICs il faut prendre l'habitude de ne pas utiliser les broches qui servent à la programmation et au debug. Ces broches sont dénommées de différentes manières mais souvent PGC / PGD et sont souvent multiplexées avec RB6 et RB7.
    C'est de là que viennent tes problèmes...
    Voilà le schéma de l'interface de debug ICSP.

    Pour initialiser les broches RB4 à RB7 en digital il faut initialiser ADCON1.
    En C : ADCON1 = 0bxxxxxxxx ;
    Tu regardes la datasheet pour décider des broches qui restent an analogique et celles qui seront E/S (cela dépend de ton schéma).
    Ensuite il faut bien sûr programmer TRISB pour dire si tu utilises les broches digitales en Entree ou Sortie.

    Comme je te l'ai dit il vaut mieux EVITER d'utiliser RB6 et RB7 car ton circuit externe va perturber ces broches et éventellement peut interdire la programmation...

    a+

  12. #11
    Kmicaz

    Re : Resistance pull-up 18F4420

    J'ai regardé le datasheet mais la valeur de ADCON1 depend de la valeur de PBADEN. Or dès que je mets PBADEN dans le prog, ça marche en simulation mais pas en vrai ...

  13. #12
    RISC

    Re : Resistance pull-up 18F4420

    Salut,
    Citation Envoyé par Kmicaz Voir le message
    J'ai regardé le datasheet mais la valeur de ADCON1 depend de la valeur de PBADEN. Or dès que je mets PBADEN dans le prog, ça marche en simulation mais pas en vrai ...
    Il faut BIEN lire la datasheet...
    "Note 1: The POR value of the PCFG bits depends on the value of the PBADEN configuration bit. When PBADEN = 1, PCFG<3:0> = 0000; when PBADEN = 0, PCFG<3:0> = 0111."

    Cette note dit que la valeur des bits PCFG de ADCON1 au POR (Power On Reset) dépend de PBADEN au RESET. Cela ne veut pas dire que tu ne peux pas les changer en reprogrammant ADCON1 à 'nimporte quel moment...

    As-tu libéré les broches RB6 et RB7 ? Peux-tu faire voir ton schéma électrique ?

    a+

  14. #13
    Kmicaz

    Re : Resistance pull-up 18F4420

    Voici le schéma électrique :




    Pour ce qui est de la programmation, je programmé sous WinPic800 avec mon JDM mais j'ai suivit tes conseils et j'ai ressorti mon ICD2 et essayé de programmer sous MPLAB mais j'ai le même résultat ...

    a y être voici le programme complet

    Code:
    #include<p18F4420.h>
    
    #pragma config OSC=HS 		//Oscillateur à quartz externe
    #pragma config PWRT=ON 		//Timer de reset lors de la mise sous tension
    #pragma config MCLRE=ON		//autorisation d'un reset externe
    #pragma config WDT=OFF		//inhibition du chien de garde
    #pragma config PBADEN =OFF
    //Programme principal
    
    void main()
    {
    TRISC = 0;
    TRISB = 255;
    INTCON2bits.RBPU= 0; // activation resistances pull-up internes 
    ADCON1 = 0b00000111;
    
    while (1)
    {
    
    if (PORTBbits.RB0 == 0 )      
    {
     PORTC = 0b00000110;
    }
    else if (PORTBbits.RB1 == 0)  
    {
     PORTC = 0b01011011;
    }
    else if (PORTBbits.RB2 == 0)  
    {
     PORTC = 0b01001111;
    }
    else if (PORTBbits.RB3 == 0)  
    {
     PORTC = 0b01100110;
    }
    else if (PORTBbits.RB4 == 0)  
    {
     PORTC = 0b01101101;
    }
    else if (PORTBbits.RB5 == 0)  
    {
     PORTC = 0b01111101;
    }
    else if (PORTBbits.RB6 == 0)  
    {
     PORTC = 0b01000000;
    }
    else
    {
    PORTC = 0b00000000;
    }
    }
    }
    Merci pour ton aide RISC

  15. #14
    RISC

    Re : Resistance pull-up 18F4420

    Salut,

    T'as un ICD2 et tu utilises un JDM...faut être maso

    Si tu veux résoudre tes problèmes, il FAUT changer ton schéma.
    Utilises le PORTD au lieu du PORTB pour libérer RB6 et RB7.

    Mets un résistance de pull-up de 10K sur MCLR !!!!
    Comment veux-tu programmer le PIC si tu force 5V sur MCLR/VPP alors que le PIC a besoin de 13V sur cette broche pendant la programmation.
    Ensuite, prévois un connecteur ICSP pour l'ICD2 comme montré sur ce document

    a+

  16. #15
    Kmicaz

    Re : Resistance pull-up 18F4420

    Merci pour ta reponse
    j'utilise un JDM pour les petites bidouilles car je le trouve plus vite mis en œuvre ...
    Par contre, même avec mon ICD2, je n'ai pas fais la programmation "in situs" mais à part (j'ai un support ZIF et un connecteur ou je branche mon ICD2) c'est pour ça que j'ai pas mis de résistance sur le MCLR ...
    Utiliser RB6 et RB7 me poserait problème si je programmais in situs mais la je peux les utiliser non ?

  17. #16
    RISC

    Re : Resistance pull-up 18F4420

    Salut,

    L'ICD2 n'est pas qu'un programmateur, c'est surtout un débogueur !! qui te fera gagner des journées. Autant te décider de suite.

    Je ne vois pas comment un support ZIF est plus vite mis en oeuvre qu'un connecteur ICSP.

    Pourquoi t'ennuyer à faire des aller-retours sur le support alors que la programmation in-situ est beaucoup plus rapide, permet de faire en même temps du debug.

    a+

Discussions similaires

  1. résistance pull up/pull down?
    Par invite4b61c3b1 dans le forum Électronique
    Réponses: 3
    Dernier message: 31/10/2008, 13h47
  2. Resistance de tirage -> incompréhension du pull up
    Par invited91589f0 dans le forum Électronique
    Réponses: 2
    Dernier message: 13/05/2008, 14h38
  3. Problème Tension PIC-Résistance pull up??
    Par jorg1n dans le forum Électronique
    Réponses: 6
    Dernier message: 12/11/2007, 07h33
  4. Resistance de Pull up sur un 74LS75
    Par allergen dans le forum Électronique
    Réponses: 1
    Dernier message: 18/06/2007, 17h17
  5. Résistance de Pull-Up
    Par invitee2756343 dans le forum Électronique
    Réponses: 12
    Dernier message: 20/03/2007, 16h24
Découvrez nos comparatifs produits sur l'informatique et les technologies.