Pb de PORTB sur PIC18F4520 et PICDEM2 plus
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Pb de PORTB sur PIC18F4520 et PICDEM2 plus



  1. #1
    invite3d87268c

    Pb de PORTB sur PIC18F4520 et PICDEM2 plus


    ------

    Bonjour,

    Quelqu'un pourrait-il m'expliquer pourquoi ce code fonctionne :
    Code:
    #include <p18cxxx.h>
    
    #pragma config WDT = OFF
    
    void delay(void);
    
    void main(void) {
        TRISB = 0;
        while(1) {
            char c = 1;
            while(c != 0b00010000) {
                PORTB = c;
                c <<= 1;
                delay();
            }
        }
    }
    
    void delay(void) {
        int i = 0;
        while(i!=10000) {
            ++i;
        }
    }
    et pas celui là :
    Code:
    #include <p18cxxx.h>
    
    #pragma config WDT = OFF
    
    void delay(void);
    
    void main(void) {
        TRISB = 0;
        while(1) {
            PORTB = 1;
            while(PORTB  != 0b00010000) {
                delay();
                PORTB <<= 1;
            }
        }
    }
    
    void delay(void) {
        int i = 0;
        while(i!=10000) {
            ++i;
        }
    }
    ?

    Je programme un PIC18F4520 sur une PICDEM2 plus avec MPLAB, MCC18 et un ICD3.

    Merci par avance pour votre aide

    -----

  2. #2
    invitead51e543

    Re : Pb de PORTB sur PIC18F4520 et PICDEM2 plus

    Bonjour,
    Qu'est ce que ton code est sensé faire?

    [QUOTE

    Code:
    #include <p18cxxx.h>
    
    #pragma config WDT = OFF
    
    void delay(void);
    
    void main(void) {
        TRISB = 0;
        while(1) {
            PORTB = 1;
            while(PORTB  != 0b00010000) {
                delay();
                PORTB <<= 1;
            }
        }
    }
    
    void delay(void) {
        int i = 0;
        while(i!=10000) {
            ++i;
        }
    }
    ?

    [/QUOTE]

    Si le premier code fonctionne, pourquoi veux tu le 2ème ; dans le fond, il devrait faire la même chose.
    @+

  3. #3
    invite89303051

    Re : Pb de PORTB sur PIC18F4520 et PICDEM2 plus

    Bonjour,

    Je dirais simplement que vu que ton port est configuré en sortie, il est systématiquement lu avec une valeur = 0.
    d'ou l'utilisation d'une variable permettant de mémoriser les différentes sorties du port.

    Cordialement

  4. #4
    invite3d87268c

    Re : Pb de PORTB sur PIC18F4520 et PICDEM2 plus

    Merci RicounetZap.
    A vrai dire je m'en doutais un peu et c'est ce qui m'a conduit à écrire la version qui fonctionneµ. Le doute vient d'exemples similaire à ce qui ne fonctionne pas et que j'ai vu çà et là.
    Est-ce qu'il existe un moyen d'accéder à PORTB séquentiellement en lecture puis en écriture sans switcher TRISB ?
    Le comportement est-il variable d'un PIC18F à l'autre ?

    flolarajasse, ce programme ne fait rien de très intéressant en dehors du fait que c'est mon premier (il allume séquetiellement les quatres LED d'une PICDEM2 plus)

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

    Re : Pb de PORTB sur PIC18F4520 et PICDEM2 plus

    Salut,

    Je te recommande de regarder le schéma électronique de la carte PICDEM 2 PLUS qui se trouve en appendix. Il y a un cavalier qui permet de désactiver les leds de façon à pouvoir de pouvoir utiliser les boutons poussoirs.
    Donc sur cette tu peux soit avoir les leds, soit les boutons poussoir.

    Pour ce qui concerne les TRISx. Une broche peut soit être en entrée ou en sortie...mais pas les deux.

    Ton test n'est pas correct et devrait uniquement se faire sur le bit que tu veux tester (bit4) :

    Code:
    While (!PORTBbits.RB4)
    Tu "forces" le PORTB en sortie mais tu n'as pas fait attention au HW...
    Les broches RB6 et RB7 sont les broches de debug...l'ICD3 prend la main par derrière ;=)

    a+

  7. #6
    invite3d87268c

    Re : Pb de PORTB sur PIC18F4520 et PICDEM2 plus

    Merci RISC pour ces remarques judicieuses sur les autres bits de PORTB. Voici donc une version corrigée de mon petit programme :
    Code:
    #include <p18cxxx.h>
    
    #pragma config WDT = OFF
    
    void delay(void);
    
    void main(void) {
        TRISBbits.TRISB0 = 0;
        TRISBbits.TRISB1 = 0;
        TRISBbits.TRISB2 = 0;
        TRISBbits.TRISB3 = 0;
        while(1) {
            PORTBbits.RB0 = 1;
            delay();
            PORTBbits.RB0 = 0;
            PORTBbits.RB1 = 1;
            delay();
            PORTBbits.RB1 = 0;
            PORTBbits.RB2 = 1;
            delay();
            PORTBbits.RB2 = 0;
            PORTBbits.RB3 = 1;
            delay();
            PORTBbits.RB3 = 0;
        }
    }
    
    void delay(void) {
        int i = 0;
        while(i<10000) {
            ++i;
        }
    }
    Ceci dit, quelqu'un saurait-il m'expliquer pourquoi ce qui suit fonctionne également ?
    Code:
    #pragma config WDT = OFF
    
    void delay(void);
    
    void main(void) {
        TRISBbits.TRISB0 = 0;
        TRISBbits.TRISB1 = 0;
        TRISBbits.TRISB2 = 0;
        TRISBbits.TRISB3 = 0;
        while(1) {
            PORTBbits.RB0 = 1;
            delay();
            PORTBbits.RB1 = 1;
            delay();
            PORTBbits.RB2 = 1;
            delay();
            PORTBbits.RB3 = 1;
            delay();
        }
    }
    
    void delay(void) {
        int i = 0;
        while(i<10000) {
            ++i;
        }
    }
    Merci par avance

Discussions similaires

  1. MCC18 + PICDEM2 + XLCD librairie pourquoi????
    Par invite8ee4d94b dans le forum Électronique
    Réponses: 5
    Dernier message: 15/08/2009, 19h30
  2. Pb programation pic18f4520
    Par invitef3cad303 dans le forum Électronique
    Réponses: 2
    Dernier message: 28/04/2009, 09h10
  3. pic18F4520
    Par bird12358 dans le forum Électronique
    Réponses: 0
    Dernier message: 04/01/2009, 18h48
  4. liaison série entre un PC et un PIC18F4520
    Par inviteadb2df5e dans le forum Électronique
    Réponses: 11
    Dernier message: 21/05/2008, 14h12
  5. Comment gener que le front montant sur PortB
    Par invitea0a9f65f dans le forum Électronique
    Réponses: 2
    Dernier message: 17/04/2008, 18h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...