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

[PIC]PORTA en entrée?



  1. #1
    laminttikia

    [PIC]PORTA en entrée?


    ------

    Bonjour à tous,

    Je débute dans la programmation des PICs et je rencontre un obstacle.
    Je veux simplement recopier l'état d'un interrupteur sur une LED.
    Lorsque l'inter est branché sur le PORTB et que la LED soit sur une pin du PORT A ou B ça marche sans problème.
    Par contre si je mets mon interrupteur sur RA0, RA1, RA2 ou RA3 le changement d'état n'est pas détecté (sur RA4 ça marche).
    De quoi cela peut-il venir??

    Mon PIC est un 16F627A

    Merci

    -----

  2. Publicité
  3. #2
    Grulou

    Re : [PIC]PORTA en entrée?

    Salut,

    Si tu nous montrais ton programme se serait peut-être plus simple

    A+

  4. #3
    dome45

    Re : [PIC]PORTA en entrée?

    Bonjour,
    il faut desactiver le comparateur analogique
    Voir dans le post de Jack du 24/12 :
    PIC Afficher registre W
    Bonne programmation
    @@@

  5. #4
    RISC

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Comme cité par dome45, le problème vient de l'initialisation du PORTA :

    Lis la page 31 du manuel du PIC16F627A (regarde l'exemple 5-1) :
    http://ww1.microchip.com/downloads/e...Doc/40044E.pdf

    Au reset certaines broches sont configurées par défaut comme des entrées comparateur. Il faut donc les initaliser comme broches d'E/S si tu veux les utiliser en digital.

    a+

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    laminttikia

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Merci à tous pour vos réponses, mais le problème ne vient pas de CMCON que j'ai déjà initialisé à la valeur 0x07.

    Voici mon programme (en effet ça peut aider )
    Code:
    	LIST      p=16F627A            ; Définition de processeur
    	#include <p16F627A.inc>        ; Définitions de variables
    
    	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
    
    
    OPTIONVAL	EQU	H'0008'			; Valeur registre option
                                    ; Résistance pull-up ON
                                    ; Pas de préscaler
    
    #DEFINE LED	PORTB,2		; Led rouge
    #DEFINE BOUTON	PORTA,2		; bouton-poussoir
    
    
    ;**********************************************************************
    ;                      DEMARRAGE SUR RESET                            *
    ;**********************************************************************
    
    	org 	0x000 				; Adresse de départ après reset
      	goto    init				; Adresse 0: initialiser
    
    
    init
    	bcf	STATUS,RP1
    	bcf	STATUS,RP0
    	clrf	PORTA				; Sorties portA à 0
    	clrf	PORTB				; sorties portB à 0
    	clrf	EEADR				; permet de diminuer la consommation
    	bsf	STATUS,RP0			; sélectionner banque 1
    	movlw	OPTIONVAL			; charger masque
    	movwf	OPTION_REG			; initialiser registre option
    	bcf	STATUS,RP0
    	movlw 	0x07 
    	movwf 	CMCON
    	bsf	STATUS,RP0
    	bcf	LED				; LED en sortie (banque1)
    	bsf	BOUTON
    	bcf	STATUS,RP0			; repasser banque 0
    	goto	start				; sauter au programme principal
    
    ;*********************************************************************
    ;                      PROGRAMME PRINCIPAL                           *
    ;*********************************************************************
    
    start
    	btfsc	BOUTON
    	goto	sr
    	bsf	LED	
    	goto	start
    sr
    	bcf	LED		
    	goto 	start
    
    	END
    C'est très largement pompé sur les cours de Bigonoff
    Merci encore

  9. #6
    cherwam07

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Ta pin PORTB,2, n'est pas configurée en sortie via le registre TRISB.
    Je trouve meme étonnant que ca ait pu fonctionner un jour...

    Bien sur je peu me tromper

  10. Publicité
  11. #7
    laminttikia

    Re : [PIC]PORTA en entrée?

    Salut,

    en fait PORTB,2 est configuré en sortie par ces deux lignes car on est en banque1
    Code HTML:
    	bsf	STATUS,RP0
    	bcf	LED	

  12. #8
    RISC

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Citation Envoyé par laminttikia Voir le message
    Salut,

    en fait PORTB,2 est configuré en sortie par ces deux lignes car on est en banque1
    Code HTML:
    	bsf	STATUS,RP0
    	bcf	LED	
    Comme cherwam07 te l'a fait remarquer, je pense également que tu oublies d'initialiser le registre TRISB qui est différent de PORTB :

    TRISB controle le sens de chaque broche du PORTB :
    TRISB,2 = 1 ==> PORTB,2 = entrée
    TRISB,2 = 0 ==> PORTB,2 = SORTIE

    moyen mnémotechnique pour se souvenir :
    I comme 1 (I = Input = Entrée)
    O comme 0 (O = Output = Sortie)

    Dans ton cas il faudrait donc ajouter les lignes suivantes :
    #DEFINE LEDsortie TRISB,2 ; Led rouge

    et pour initialiser en mode SORTIE le bit 2 du PORTB :
    BCF LEDsortie

    Le PORTB et le registre TRISB sont décrits page 36 dans le document référencé dans mon poste précédent.

    La valeur au RESET des registres PORTB/TRISB est décrite page 43. Toutes les broches sont en entrée...

    Tiens nous au courant ;=)

  13. #9
    dome45

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Citation Envoyé par laminttikia Voir le message
    Salut,

    en fait PORTB,2 est configuré en sortie par ces deux lignes car on est en banque1
    Code HTML:
    	bsf	STATUS,RP0
    	bcf	LED	
    Je crois que tu ne pars pas sur de bonnes bases et te conseille de lire le cours de Bigonoff sur le 16F84 ( facilement adaptable pour le 16F627)
    page 71 : clignotement d'une led
    @@@

  14. #10
    laminttikia

    Re : [PIC]PORTA en entrée?

    Bonjour,
    J'ai essayé de configurer les ports directement par les registres TRISA et TRISB mais cela ne change rien au problème.
    D'ailleurs PORTB fonctionne très bien en entrée et en sortie, c'est PORTA,0,1,2,3 que je n'arrive pas à configurer en entrée.

    Je crois que tu ne pars pas sur de bonnes bases et te conseille de lire le cours de Bigonoff sur le 16F84
    Je suis justement parti de ses programmes pour écrire le mien et d'ailleurs lui non plus n'utilise pas directement TRISA et TRISB

    Merci pour vos réponses

  15. #11
    RISC

    Re : [PIC]PORTA en entrée?

    Bonjour,

    Je pense comprendre d'ou viens ton PB. Dans l'exemple 5-1 du manuel, il faut ajouter la selection de la banque 0 AVANT d'initaliser CMCON ;=)

    BCF STATUS, RP1;
    BCF STATUS, RP0; Sélect. banque0 ou se trouve CMCON
    MOVLW 0x07 ; arrêter les comparateurs et
    MOVWF CMCON ;configurer broches en E/S

    BCF STATUS, RP1; (instr. optionnelle voir NB)
    BSF STATUS, RP0; Sélectionne banque1 ou se trouve TRISA
    MOVLW 0x1F ;Valeur du registre de direction
    MOVWF TRISA ; RA<4:0> en entrée


    Note1 : pour bien comprendre l'initialisation du PORT A qui est partagé avec les comparateurs regarde aussi la page 62, figure 10-1, tout en haut à droite de la table, la configuration comparators off "111"

    Note2 : autre petite difficulté : avant de programmer chaque registre du micro, il faut toujours sélectionner la banque dans laquelle il se trouve...
    Regarde la manuel page 16, figure 4-2

    Je te conseille d'utiliser des macros pour sélectionner la banque dont tu as besoin. C'est beaucoup plus lisible et utilisé par la plupart des programmeurs de PIC en ASM:

    exemple :
    BANK0 macro ; passer en banque0
    BCF STATUS,RP0
    endm

    BANK1 macro ; passer en banque1
    BSF STATUS,RP0
    endm

    Ensuite il suffit d'utiliser BANK0 ou BANK1 juste avant de modifier un registre interne pour être sûr d'être dans la bonne banque (c'est très nécessaire à cause des sauts et branchement...on ne sait pas toujours quelle banque est sélectionnée...)
    Par chance les compilateurs C savent ou se trouvent chaque registre et insère automatiquement la bonne banque ;=)

    NB:les banques 2 et 3 répliquent partiellement les 0 et 1 donc il est normalement pas nécessaire de jouer avec STATUS,RP1...
    Dernière modification par RISC ; 06/01/2007 à 13h58.

  16. #12
    dome45

    Re : [PIC]PORTA en entrée?

    Bonjour
    Je suis justement parti de ses programmes pour écrire le mien et d'ailleurs lui non plus n'utilise pas directement TRISA et TRISB
    Page 81 du cours
    Premièrement, nous devons configurer TRISA et mettre le bit2 (RA2) en sortie.

    Ensuite, nous pourrons envoyer un niveau ‘1’ sur PORTA, correspondant à 5V sur la pin RA2. La séquence correcte sera donc :

    bsf STATUS , RP0 ; on passe en banque 1
    bcf TRISA , 2 ; bit 2 de TRISA à 0 = sortie pour RA2
    bcf STATUS , RP0 ; on repasse en banque 0
    bsf PORTA , 2 ; on envoie 5V sur RA2 : la LED s’allume
    .
    .
    .
    bcf PORTA , 2 ; 0V sur RA2, la LED s’éteint
    Bonne lecture de toute les pages du cours BigOnOff
    @@@

  17. Publicité

Discussions similaires

  1. memorisation etat entrée pic
    Par alainav1 dans le forum Électronique
    Réponses: 19
    Dernier message: 09/11/2007, 16h54
  2. Microcontroleur Pic(entrée sortie)
    Par Mikaeltrigo dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 06/10/2007, 09h56
  3. Entrée sortie Microncontroleur Pic
    Par Mikaeltrigo dans le forum Électronique
    Réponses: 6
    Dernier message: 03/04/2007, 16h08
  4. Entrée analogique sur Microcontorleur PIC
    Par Toofik dans le forum Électronique
    Réponses: 1
    Dernier message: 27/01/2006, 21h47
  5. entree pic
    Par gari dans le forum Électronique
    Réponses: 1
    Dernier message: 05/01/2005, 18h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.