Problème PORTBbits
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème PORTBbits



  1. #1
    inviteb6aea961

    Problème PORTBbits


    ------

    Bonjour,

    Voilà, j'ai un petit problème avec mes commandes de LED. JE travaille avec un PIC18f2620, alimenté en 5V. JE code sous mplab IDE 8, avec MCC18.

    J'ai 4 led directement contrôlées par le pic, avec une résitance de 1k pour chaque led. Ces led sont branchées sur les pins RB3,RB2,RB1 et RB0.

    Lors de l'initialisation de la carte, je veux faire un code de clignotement, en gros, les 4 led clignotent en même temps 10 fois, puis, elles s'allument une par une (en laissant les précédentes allumées, en gros, ca fait un chenille). D'habitude, j'utilise des commandes telles que PORTBbits.RB0= 1, mais cette fois ci, lorsque je fais un simple :

    PORTBbits.RB0=1;
    PORTBbits.RB1=1;
    Seul RB1 reste 1...

    En revanche si je fait :

    PORTB=0B00000011;
    Les deux led restent allumées.

    Actuellement, j'ai résolu mon problème en utilisant LAT, mais je n'arrive pas à comprendre pourquoi en utilisant PORTB ca ne marche pas. Est ce par ce que mes led tire trop (avec une résistance de 1k???), et du coup au moment de la "relecture" de l'etat, celui ci n'est pas encore à 1??

    Voici le code fonctionnant actuellement :

    #include <delays.h>


    //* Pragma configs (en ordre):
    //* Utilize le quartz interne
    //* Pas de watch dog
    //* Pas de low voltage programming
    //* Power up active timer => preds du temps pour demarrer le programme
    //* PORTB on digital, not on analogical
    //*
    #pragma config OSC = INTIO67
    #pragma config WDT = OFF
    #pragma config LVP = OFF
    #pragma config PWRT = OFF
    #pragma config MCLRE = OFF


    //Définition des constante
    #define LED_1 LATBbits.LATB3
    #define LED_2 LATBbits.LATB2
    #define LED_3 LATBbits.LATB1
    #define LED_4 LATBbits.LATB0
    #define XBEE LATCbits.LATC0

    void main (void)
    {


    int i,j;

    //0 : Out
    //1 : In

    // Set clock to 8MHz and activate PLL, thus we have 32MHz
    OSCCONbits.IRCF2=1;
    OSCCONbits.IRCF1=1;
    OSCCONbits.IRCF0=1;
    OSCTUNEbits.PLLEN=1;

    TRISA=0b11111111;
    TRISC=0b11000000;
    TRISB=0b00000000;


    j=0;
    XBEE=0;

    //on fait clignoter
    while(j<10)
    {
    LED_1=1;
    LED_2=1;
    LED_3=1;
    LED_4=1;
    Delay10KTCYx(150);

    LED_1=0;
    LED_2=0;
    LED_3=0;
    LED_4=0;
    Delay10KTCYx(150);
    j=j+1;
    }


    LED_1=1;
    Delay10KTCYx(250);
    LED_2=1;
    Delay10KTCYx(250);
    LED_3=1;
    Delay10KTCYx(250);
    LED_4=1;
    Delay10KTCYx(250);
    XBEE=1;


    while(1);

    }
    En revanche si je remplace

    //Définition des constante
    #define LED_1 LATBbits.LATB3
    #define LED_2 LATBbits.LATB2
    #define LED_3 LATBbits.LATB1
    #define LED_4 LATBbits.LATB0
    #define XBEE LATCbits.LATC0
    Par

    //Définition des constante
    #define LED_1 PORTBbits.RB3
    #define LED_2 PORTBbits.RB2
    #define LED_3 PORTBbits.RB1
    #define LED_4 PORTBbits.RB0
    #define XBEE PORTCbits.RC0
    Seul la dernière led allumée reste allumée, ce qui signifie qu'une seule led clignote au debut, puis, une seule reste allumée...

    J'aurai aimé comprendre le truc la.

    Merci d'avance pour votre aide.

    -----

  2. #2
    RISC

    Re : Problème PORTBbits

    Salut,

    Sujet discuté des dizaines de fois sur ce forum ;=)
    Solution très simple :
    Code:
     
    LATBbits.LATB0=1;
    LATBbits.LATB1=1; 
    A partir de maintenant utilises TOUJOURS LATx au lieu de PORTx pour les broches en SORTIE
    Pour les broches en entrée il faut bien sûr utiliser PORTx

    La raison est expliquée dans certaines datasheets

    a+
    Dernière modification par RISC ; 30/10/2012 à 23h29.

  3. #3
    inviteb6aea961

    Re : Problème PORTBbits

    Merci pour ta réponse.

    Justement, j'avais bien vu que LAT marchait, mais ce que je voulais savoir c'est la raison pour laquelle PORT ne marche pas (alors qu'il marche sur PORTA et PORTC).

    Merci

  4. #4
    inviteeb160de1

    Re : Problème PORTBbits

    Des explications sont données dans les datasheets des PIC 16F qui n'ont pas de registre LAT.
    Et sujet deja abordé dans de multiple topics de forum..

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Etude de fonctions et problème (qui me pose problème ahah)
    Par invitecf3c44f7 dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 12/10/2011, 19h54
  2. Problème adware.agent.NGZ et problème d'ouverture de mes pages IE
    Par invite6c8f34b5 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 8
    Dernier message: 03/08/2011, 21h03
  3. Réponses: 11
    Dernier message: 26/05/2011, 13h27
  4. problème avec un lecteur mp4(le problème vient de l'ordinateur)
    Par inviteaca1b987 dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 29/10/2007, 17h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...