probleme de gestion du port gpio sur 12F683
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

probleme de gestion du port gpio sur 12F683



  1. #1
    invite3a1051d7

    probleme de gestion du port gpio sur 12F683


    ------

    Bonjour,

    si je veux commander 3 led les sur les ports
    GPIO.0 GPIO.1 GPIO.3 de la façon suivante
    GPIO.0 =1
    GPIO.1 =1
    GPIO.2 =1
    ce qui devarit alllumer les 3 LED sucessivement
    mais l'allumage d'une LED eteint les autres !


    GPIO.0 s'allume
    puis GPIO.1 s'allume mas GPIO.0 s'éteint ?
    ...
    j'ai contourné le probleme en agissant sur tout le port avec les instructions
    GPIO=1
    GPIO=3
    GPIO=7
    on ne peux donc pas gérer les composants du port de façon individuelle ?
    connaissez vous ce problème ?
    cordialement
    Alain

    -----

  2. #2
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    apres differents essais c'est uniquement GPIO.0 et GPIO1 qui posent problemes .j'ai constater qu'ils passent à zero si l'on agit sur une des sorties du port
    exemple
    GPIO.0=1 'GPIO.0 est activé
    GPIO.4=1'lGPIO.4 est activé mais GPIO.0 repasse à zero(par normal)

    alors que
    GPIO.4=1 'GPIO.4 est activé
    GPIO.5=1 ' GPIO.4 est activé et GPIO.4 reste activé (ce qui est normal)


    cordialement
    Alain

  3. #3
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Salut,

    Cela ressemble fort à un problème de read-modify-write...

    Faudrait être certain des niveaux de tension présent sur les sorties à problèmes.
    Donc, entre chaque "GPIO.x =1" être certain que la sortie X soit bien à la tension correspondant à un 1 logique.

    Si cette tension ne correspond pas à ce 1 logique au moment du READ, elle sera automatiquement rebasculée à 0 lors du MODIFY de l'instruction...

    David.

  4. #4
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    quand je fais
    gpio.0=1 la led correspondante s'allume bien je suis donc bien à 1
    quand je passa à gpio.1=1 la ledcorrespondante s'allume bien mais la led précedente s'eteint §
    le programme equivalent sur un 16F88 par exemple fonctionne sans probleme .
    j'ai verifier sur plusieurs pic 12F675 12F683 c'est le même probleme pour GPOI.0 et GPIO.1 .
    les autre sorties (GPIO.2,GPIO.4,GPOI.5 ) ne posent pas de probleme
    GPIO.3 est toujours en entrée ou en reset
    cordialement
    Alain

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

    Re : probleme de gestion du port gpio sur 12F683

    Citation Envoyé par alainav1 Voir le message
    bonjour,
    quand je fais
    gpio.0=1 la led correspondante s'allume bien je suis donc bien à 1

    Alain
    Bof, oui tu vois la led allumée...

    Mais la chute de tension provoquée par le courant nécessaire peut faire chuter la tension de la sortie en dessous du seuil du 1 logique...

    A tester avec une autre led basse consommation...

    David.

  7. #6
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    uneresistance de 1K en serie avec une LED rouge donne le même resultat .
    le simulateur donne aussi le même resultat ?
    cordialement
    Alain

  8. #7
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Il faut minimum 2 volts au niveau de la broche...

    Tu utilises le PicKit2 je pense; donc vire les leds et utilise l'analyseur logique afin de voir si le problème persiste...

    le simulateur donne aussi le même resultat ?
    Avec MPSIM, ce résultat ne me semble pas possible.

    David.

  9. #8
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Sur le datasheet du 12F683, je ne retrouve pas le diagramme de la chute de tension d'une sortie en fonction du courant...

    Mais, avec 3mA on se retrouve déjà avec 0.7volts de chute (paramètre D090)

    David.

  10. #9
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    avez vous essayer de realiser ce type programme avec les sorties
    gpio.0 et gpio.1

    gpio.0=1
    gpio.1=1
    afin de verifier que cela met à 1 ces 2 sorties
    je pense que sous serez surpris du resultat !
    cordialement
    Alain

  11. #10
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    RE:

    Bon, je viens à l'instant de simuler GPIO0 et GPIO1, avec un code assembleur et cela fonctionne correctement...
    Code:
    	ORG     0x000             ; processor reset vector
    	BANKSEL GPIO ;
    	CLRF GPIO ;Init GPIO
    	MOVLW 07h ;Set GP<2:0> to
    	MOVWF CMCON0 ;digital I/O
    	BANKSEL ANSEL ;
    	CLRF ANSEL ;digital I/O
    	clrf	TRISIO
    	BANKSEL GPIO
    	bsf	GPIO, 0
    	bsf	GPIO, 1
    Je suis persuadé que ton problème réside dans le read-modify-write.

    Je ne sais pas tester en réel ton montage, vu que je n'ai sous la main que des 12F675...

    David.

  12. #11
    RISC

    Re : probleme de gestion du port gpio sur 12F683

    Salut David
    Citation Envoyé par DavidDB Voir le message
    RE:

    Bon, je viens à l'instant de simuler GPIO0 et GPIO1, avec un code assembleur et cela fonctionne correctement...
    Code:
            ORG        0x000             ; processor reset vector
    	BANKSEL GPIO ;
    	CLRF       GPIO ;Init GPIO
    	MOVLW   07h ;Set GP<2:0> to
    	MOVWF   CMCON0 ;digital I/O
    	BANKSEL ANSEL ;
    	CLRF       ANSEL ;digital I/O
    	clrf	      TRISIO
    	BANKSEL GPIO
    	bsf	       GPIO, 0
    	bsf	       GPIO, 1
    Je suis persuadé que ton problème réside dans le read-modify-write.

    Je ne sais pas tester en réel ton montage, vu que je n'ai sous la main que des 12F675...

    David.
    Enièrement d'accord sur le RMW....c'est pour cela qu'il existe les LATx à la place des PORTx sur les PIC plus rapides (ce qui n'empêche pas le PB de se manisfester sur un PIC12 ou PIC16 à 20MHz voire moins en fonction de la charge capacitive sur les broches de sortie.
    si vous voulez vraiment vous arracher les cheveux :

    Code:
            ORG        0x000             ; processor reset vector
    	BANKSEL GPIO ;
    	CLRF       GPIO ;Init GPIO
    	MOVLW   07h ;Set GP<2:0> to
    	MOVWF   CMCON0 ;digital I/O
    	BANKSEL ANSEL ;
    	CLRF       ANSEL ;digital I/O
    	clrf	      TRISIO
    	BANKSEL GPIO
    GPchange:
    	bsf	       GPIO, 0
    	bsf	       GPIO, 1
            goto        GPchange
    Ma prédiction...sur un vrai prototype à 20MHz : la broche GPIO 0 devrait changer d'état à chaque cycle alors que GPIO 1 ne devrait pas. Je suis pas sur que le simulateur "assure" sur le RMW

    a+

  13. #12
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Citation Envoyé par RISC Voir le message
    Ma prédiction...sur un vrai prototype à 20MHz : la broche GPIO 0 devrait changer d'état à chaque cycle alors que GPIO 1 ne devrait pas. Je suis pas sur que le simulateur "assure" sur le RMW

    a+
    Salut Risc,

    Sans charge sur la sortie, même à 20Mhz cela ne posera pas de problème à mon sens, car le temps de montée et la tension seront corrects...

    Pour palier à ce genre de problème, soit écrire l'entièreté du PORT ou ajouter un nop entre les deux changements d'état si l'application le permet.

    Un certitude, MPSIM n'est pas capable de gérer le RWM.

    David.

  14. #13
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    Bonjour,
    comment peux t on regler le "read-modify-write" ?
    un interfaçant la sortie avec un transisor pour limiter l'ntensité est une solution ?
    pour info j'ai simulé le programme avec le simulateur de picsimulor (c'est du basic) il provoque le defaut en simulation ,
    cordialement
    Alain

  15. #14
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Salut,

    Par définition, un simulateur ne sais pas gérer le RMW, vu qu'il ne connait pas ce qui est derrière la broche...

    Donne nous le programme Assembleur de ta fonction Basic, car c'est anormal d'avoir ce défaut en simulation.

    David.

  16. #15
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    voici le programme basic et assemblé
    basic

    start0:
    GPIO.0 = 1
    GPIO.1 = 1
    End

    assembleé
    ; 32: start0:
    L0001:
    ; 33: GPIO.0 = 1
    BSF 0x05,0
    ; 34: GPIO.1 = 1
    BSF 0x05,1
    ; 35: End
    L0003: GOTO L0003
    ; End of program

    si je remplace GPIO.0 par GPIO.4 et GPIO.01par GPIO.5
    ça marche !
    basic

    start0:
    GPIO.4 = 1
    GPIO.5= 1
    End

    assemblé
    L0001:
    ; 33: GPIO.4 = 1
    BSF 0x05,4
    ; 34: GPIO.5 = 1
    BSF 0x05,5
    ; 35: End
    L0003: GOTO L0003
    ; End of program

    cordialement
    Alain

  17. #16
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    pour que vous ayez tous les élément
    j'ai réaliser la même chose avec un 12F675 (plus commun mais de même structure que le 12F683)
    ci joint le un document qui reprend le programme complet et la vue du simulateur (une seul sortie est à 1 alors que les deux devraient l'etre )
    cordialement
    Alain
    Images attachées Images attachées  

  18. #17
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Bon,

    Sur 12F675, en réel quartz 10mhz :

    Sans charge sur les sorties, fonctionnement normal.
    Avec résistance de 0.27K à GND, le premier GPIO reste à zéro et le deuxième reste bien à un...

    David.

  19. #18
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    merci bien pour le temps consacré à resoudre ce probleme et pour ces infos .
    je dois m'absenter mais des que je peux (sous quelques jours )je fais les manip en réel en suivant tes directives (charge grande impédance , faible impedance ) et je vous fais part des resultats .
    donc si j'ai bien compris l'origine du defaut une sortie sur un transitor devrait resoudre le probleme puisque la consommation serait reduite .
    cependant le simulateur genere l'erreur , lui il ne connait pas l'impedance de sortie ?
    cordialement
    Alain

  20. #19
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Pourquoi tu veux absolument utiliser l'une à la suite de l'autre deux instructions qui modifient un unique bit du PORT?

    Dans le datasheet du 12F683 c'est bien écrit que GPIO est sensible à RMW, et dans ton programme, tu tentes le diable avec deux instructions l'une à la suite de l'autre qui sont sensible à cette méthode d'écriture du PORT...

    Utilise un masque, ou écrit l'intégralité du PORT, mais ne place pas l'une à la suite de l'autre deux instructions qui modifient un bit du port GPIO.

    David.

  21. #20
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    pour info :
    je viens d'avoir une info d'un de mes amis electronicien il explique ça de la façon suivante

    c"e probléme est recirant , quand on ecrit dans une patte ,le pic relie le port puis modifie le bit concerné ,
    puis reécrit le port , gpio a une charge qui le raméne a zero donc il lit 0 et reécrit un zero , si on peut on modifie le port complet,
    ou alors on ecrit gpio dans w ,on modifie le bit dans w et on transfére w dans gpio ,
    ce genre de chose se produit sur tout le microcontroleur je l'avais sur les ST62 ,"
    cordialement
    Alain

  22. #21
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Cela s'appèle le READ-MODIFY-WRITE...

    LECTURE du port - MODIFICATION du bit concerné par l'instruction sur la lecture - ECRITURE de la lecture modifiée sur le port.

    David.

  23. #22
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    promis je le ferais plus -
    je suis pas un specialiste donc pour moi c'etait facile en basic d'écrire
    ..
    led1=1
    waitms 1000
    led2=1
    ..

    mais maintenant j'ai bien compris le pourquoi du comment .
    si je peux encore abuser de tes compétences.
    une petite precision peux tu m'expliquer la technique du masque .(par un exemple )
    cordialement
    Alain

  24. #23
    invitef26bdcba

    Re : probleme de gestion du port gpio sur 12F683

    Voici un lien (mieux que mes explications) sur l'utilisation d'un masque (point 8) :

    http://pagesperso-orange.fr/fabrice....que_prog.htm#8

    David.

  25. #24
    invite3a1051d7

    Re : probleme de gestion du port gpio sur 12F683

    bonjour,
    apres une synthese de plusieurs recherches voila comment je fais en basic (mais à mon avis le principe s'applique à tous les langages )
    pour forcer un bit à 1 ou à 0 en conservant l'état des autres bits

    'initialisation du port à une valeur désirée
    GPIO = %00010010
    etat = %00010010 'memorisation de l'etat du port

    'mise à 1 de gpio.0 en conservant l'état precedant
    etat = etat or %00000001
    GPIO = etat 'transfert vers le port

    'mise à 0 de gpio.0 en conservant l'état precedant
    etat = etat And %11111110
    GPIO = etat 'transfert vers le port
    End

    merci encore pour toutes ces explications sur le fonctionnement des lecture et ecriture de ports /
    je progresse
    cordialement
    Alain

Discussions similaires

  1. Problème de gestion de fichier sur carte FPGA
    Par invitefdead068 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 06/05/2010, 13h52
  2. GPIO.0 en entrée sur pic 12F675 et 629
    Par invite19d2f999 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/07/2009, 11h42
  3. Gestion entrée/sortie sur port parallèle avec VBA
    Par invitea97b4264 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 21/03/2009, 17h06
  4. Programmation 12F683
    Par invite1ba9e12c dans le forum Électronique
    Réponses: 0
    Dernier message: 11/02/2009, 19h39
  5. Probléme initialisation port A et E sur station easypic3
    Par invite3d33f9e2 dans le forum Électronique
    Réponses: 1
    Dernier message: 19/06/2006, 21h12
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...