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

probléme programation PIC 16f84



  1. #1
    NEOROBOT

    Angry probléme programation PIC 16f84


    ------

    bonne soir

    j'ai un problème
    voila le programme

    "
    LIST p=16F84
    #include <p16F84.inc>

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

    ;---- définition --------------------------------

    #DEFINE c PORTA,2 ;commune
    #DEFINE patte PORTA,3
    #DEFINE spatte PORTA,4


    ;---- initialisations --------------------------


    clrf EEADR
    bsf STATUS,RP0
    bcf TRISA,2
    bcf TRISA,3
    bcf TRISA,4
    clrf OPTION_REG
    bcf STATUS,RP0
    goto start

    ;-----------------------------------------------

    start

    bsf c
    bsf spatte
    bsf patte

    END "


    oui je sais ce programme ne fait pas marcher grand chose , c'est juste un test
    voila le problème:
    y a que le port 2 et 3 qui envois +5v ! le 4 rien ! j'ai tout essayai je comprend pas !!! ça m'énerve !
    et c'est le même problème quand j'utilise les port1, 2, 3 y a que le 1 et le 2 qui son a 5v

    aider moi SVP c'est a devenir fouuut !!!
    merci pour votre aide

    -----

  2. #2
    DavidDB

    Re : probléme programation PIC 16f84

    Salut,

    RA4 est à collecteur ouvert...

    Donc, passer RA4 à 1, c'est la mettre à GND.

    De plus, n'oublie pas de boucler sur la routine 'start', sinon tu vas lire la mémoire qui n'est pas programmée...

    David.

  3. #3
    NEOROBOT

    Re : probléme programation PIC 16f84

    Citation Envoyé par DavidDB Voir le message
    Salut,

    RA4 est à collecteur ouvert...

    Donc, passer RA4 à 1, c'est la mettre à GND.

    De plus, n'oublie pas de boucler sur la routine 'start', sinon tu vas lire la mémoire qui n'est pas programmée...

    David.
    merci pour ton aide
    mais pourquoi alors j'ai le même problème quand j'utilise RA1, 2 , 3 ??

  4. #4
    gedonet

    Re : probléme programation PIC 16f84

    Citation Envoyé par DavidDB Voir le message
    Salut,

    RA4 est à collecteur ouvert...

    Donc, passer RA4 à 1, c'est la mettre à GND.
    David.
    Bonjour David
    Il me semble que mettre RA4 à 1 (bsf PORTA,4), sans pullup ou pulldown, c'est mettre la pin en haute impedance, c'est mettre RA4=0 qui correspond à mettre la masse sur la pin.
    Gilles

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

    Re : probléme programation PIC 16f84

    Salut Gilles,

    Regarde le datasheet du 16F84, il y a le schéma de principe de la broche RA4.

    Sans pull-up, le drain du transistor est ouvert, et donc il n'est pas polarisé. Impossible de mettre cette broche à haute impédance sans l'ajout de la pull-up.

    Pour RA4, un BSF la met à GND et un BCF la met à la tension de la pull-up si elle est présente.

    David.

  7. #6
    freepicbasic

    Re : probléme programation PIC 16f84

    Citation Envoyé par DavidDB Voir le message
    Sans pull-up, le drain du transistor est ouvert, et donc il n'est pas polarisé. Impossible de mettre cette broche à haute impédance sans l'ajout de la pull-up.
    A l'état haut ! (avec résistance)
    Haute impédance signifie non connecté.
    (sans résistance)
    il sera haute impédance si non connecté et si le mosfet est bloqué.

    Pour RA4, un BSF la met à GND et un BCF la met à la tension de la pull-up si elle est présente.
    La logique externe n'est pas inversée que sur cette unique pin.
    Le bsf mettra un 0 sur le mosfet, et la sortie sera conductrice donc à 1.
    La logique interne est inversée mais cela est transparent pour l'utilisateur.

    Un bsf met un état haut si la résistance est présente.
    A+, pat

  8. #7
    DavidDB

    Re : probléme programation PIC 16f84

    Salut,

    Non, je ne suis pas d'accord...

    Un BSF RA4 connecte à GND, donc broche à 0.
    Un BCF RA4 "connecte" à la pull-up(si présente) donc broche à 1

    RA4 fonctionne en inverse de toutes les autres sur ce µC et ce n'est pas transparent pour l'utilisateur.

    Ou alors je me goure complètement...

    David.

  9. #8
    freepicbasic

    Re : probléme programation PIC 16f84

    sur la doc du Pic16F87x page 29 il y a le schema interne de la sortie RA4.
    figure 3.1 et 3.2
    (chapitre 3.0 I/O port)

    La connexion de la partie basse de la sortie est identique aux autres sorties.
    Manque juste la partie haute.

    La logique est donc identique.

    D'ailleurs la pin serait une (I/O) / (barre = inversée) , ce qui n'est pas indiqué dans le datasheet.

    Je l'ai déjà utilisé en oubliant que cette pin est "open drain" , le fait de mettre une 1K ou une 330 ohms au plus (montée en volant après coup) et tout devient correct.
    Dernière modification par freepicbasic ; 21/12/2008 à 10h21.
    A+, pat

  10. #9
    DavidDB

    Re : probléme programation PIC 16f84

    Bon,

    Je viens de tester sur un 16F628A(avec CMCON =7), je n'ai pas de 16F84A sous la main.

    Je confirme ce que je disais (test avec pull-up 1K) :

    BSF RA4 -> niveau bas sur la broche RA4 (proche de 0Volts)
    BCF RA4 -> niveau haut sur la broche RA4 (VDD sur la broche).

    C'est bien exactement l'inverse des autres I/O, du moins sur le 16F628A.

    David.

  11. #10
    freepicbasic

    Re : probléme programation PIC 16f84

    Bon je sais que parfois je me plante ,
    et ton insistance me fais douter, donc je fais un TEST !

    Sur un Pic16F84
    Je met 2 leds connectés au +5V avec 150 ohms et connectée à RA3 et RA4.

    je met portA à 255 puis à 0 avec 200ms d'attente entre 2.

    Si la pin RA4 est inversée elle doivent clignoter alternativement.

    Et elle clignotent ensemble !

    ci dessous prog asm et hex pour tester si besoin.



    Code:
    ;*******************************************
    ;* PICBASIC.EXE version 3.20 (Win32 Console)  du 13/05/2008
    ;*         Compatible Basic Stamp
    ;* Auteur: Deaubonne Patrick 
    ;* Email:  Freepicbasic@hotmail.fr
    ;* url:
    ;*   http://perso.wanadoo.fr/pat.deaubonne
    ;*        ' '              /pic/index.htm
    ;*******************************************
    ;* C:\PIC\PICBASIC\TestRA4.ASM
    ;*******************************************
    
    W	equ	00
    F	equ	01
    
    CY	equ	00
    Z	equ	02
    ;' v * * * * * * * * * * * * * * debut d'entète * * * * * * * * * * * * * * v
    ;' nom                   : TestRA4.bas
    ;' Alias                 : 
    ;' créer   le    : 21 / 12 / 2008
    ;' Modifier le   : 21 / 12 / 2008
    ;' Créé Par      : Deaubonne Patrick
    ;' 
    ;' commentaire: 
    ;'
    ;'
    ;' ^ * * * * * * * * * * * * * * * fin d'entète * * * * * * * * * * * * * * ^
    ;-------- define PORTB 6 --------
    PORTB	EQU	6
    ;-------- device  16f84 --------
    
    	List	p=16F84 ,r=DEC
    
    #include <P16F84.INC>
    
    BNK0	macro
    	bcf	STATUS,RP0
    	bcf	STATUS,RP1
    	endm
    
    BNK1	macro
    	bsf	STATUS,RP0
    	bcf	STATUS,RP1
    	endm
    
    BNK2	macro
    	bcf	STATUS,RP0
    	bsf	STATUS,RP1
    	endm
    
    BNK3	macro
    	bsf	STATUS,RP0
    	bsf	STATUS,RP1
    	endm
    
    w_temp  	EQU 071H ; svg registre W
    status_temp	EQU 072H ; svg status swappé
    FSR_temp	EQU 073H ; svg FSR
    PCLATH_temp	EQU 074H ; svg PCLATH
    
    	goto _START_PIC
    	nop
    	nop
    	nop
    	GOTO _INT_PIC
    _START_PIC
    ;-------- ASM { __CONFIG  03FF9H } --------
     __CONFIG  03FF9H 
    ;' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
    ;-------- Init portA = 11100000 --------
    	bsf	STATUS,RP0
    	movlw	D'224'
    	movwf	TRISA
    	bcf	STATUS,RP0
    ;-------- Init portB = 11111111 --------
    	bsf	STATUS,RP0
    	movlw	D'255'
    	movwf	TRISB
    	bcf	STATUS,RP0
    ;-------- reset portA --------
    	clrf	PORTA
    ;-------- Main:  --------
    MAIN
    ;-------- portA = 255 --------
    	movlw	D'255'
    	movwf	PORTA
    ;-------- delayms( 250 ) --------
    	movlw	250
    	call	_DELAYMS
    ;-------- portA = 0 --------
    	clrw
    	movwf	PORTA
    ;-------- delayms( 250 ) --------
    	movlw	250
    	call	_DELAYMS
    ;-------- goto main --------
    	goto	MAIN
    ;-------- end --------
    	sleep
    	goto	_START_PIC
    ;**************************
    ;****** Library Area ******
    _RAM equ 12
    _RAM1 equ 13
    _RAM2 equ 14
    _RAM3 equ 15
    _RAM4 equ 16
    _RAM5 equ 17
    _RAM6 equ 18
    _RAM7 equ 19
    _FLAGS equ 20
    _PIN equ 21
    _DELAYMS
    	movwf	_RAM1
    	clrf	_RAM
    pb_lab3
    	nop
    	nop
    	decfsz	_RAM,F
    	goto	pb_lab3
    	decfsz	_RAM1,F
    	goto	pb_lab3
    	retlw	0
    ;****** Library Area ******
    ;**************************
    ;
    
    ;
    ;***************************
    ;******* PRINT AREA *******
    ;******* PRINT AREA *******
    ;******* STRING AREA *******
    ;=======  No String  =======
    ;******* STRING AREA *******
    ;***************************
    ;
    
    _INT_PIC
    	RETFIE
    	end
    [CODE]
    :10000000052800000000000022288 316E03085004B
    :1000100083128316FF30860083128 501FF3085002E
    :10002000FA30192000018500FA301 9200E286300EB
    :1000300005288D008C01000000008 C0B1B288D0B07
    :060040001B28003409003A
    :02400E00F93F78
    :00000001FF
    [/C0DE]
    Dernière modification par freepicbasic ; 21/12/2008 à 11h32.
    A+, pat

  12. #11
    freepicbasic

    Re : probléme programation PIC 16f84

    autre test
    j'inverse le sens des Leds anodes vers le pic et connecte la resistance à la masse.

    RA3 clignote
    RA4 reste éteinte.

    RA4 est bien "open drain".
    A+, pat

  13. #12
    freepicbasic

    Re : probléme programation PIC 16f84

    Le schéma de la doc microchip
    En rouge les 2 signaux de commande logique.
    Identique en mode "I/O standard" et "open drain"
    commande du mosfet canal N
    Images attachées Images attachées  
    A+, pat

  14. #13
    DavidDB

    Re : probléme programation PIC 16f84

    Oui, je te fais confiance pour le 16F84, il ne travaille pas en logique inverse...

    Par contre, je confirme que le 16F628A travaille bien en logique inverse, comme me l'a démontré mon test.

    Une réponse de Bigonoff sur RA4 d'un 16F628 :
    Et surtout que si on a peur que son programme ne soit pas clair, il suffit de créer une macro "Led_On" et une "Led_Off" qui cachent le fait qu'on travaille en logique négative
    Le lien sur abc :

    http://www.abcelectronique.com/forum...ad.php?t=51077

    David.

  15. #14
    freepicbasic

    Re : probléme programation PIC 16f84

    ATTENTION
    il ne faut pas confondre la conduction du mosfet et l'état logique de sortie

    L'allumage dépend de la façon de connexion de la LED
    Sur cette exemple on est en phase 1 = LED allumée;
    http://www.abcelectronique.com/forum...chmentid=19082

    Nota Bene;
    Si l'on connecte sur RA3 de la même façon cela pose un problème puisque
    la led sera reliée au plus a travers le pic , la résistance ne servant pas.
    On aurait donc un court circuit led +5V à travers le pic.


    Si l'on met un scope sur les 2 RA3 et RA4 les 2 niveaux logiques sont identiques.

    Je parle d'une connexion identique sur RA3 et RA4 en utilisant 0 pour allumé la LED effectivement la logique est inverse si on considère que 1 devrait allumé la LEd et 0 l'éteindre.
    Cathodes vers RA3 et RA4 et anode vers le +5V a travers une résistance.
    Dans l'autre sens on ne peut pas .

    BigOnOff parle d'allumer les LEDs en logique inverse , si on veut que ce soit cohérent avec les autre Leds si elles sont connectées au port on est obligé, mais cele ne signifie pas que la logique de la pin est inversée.
    Mais simplement cela signifie que la partie positive du push pull de sortie n'existe pas.

    Je viens de faire le Test sur un Pic16F628 , c'est identique.
    en rajoutant le CMCOM dans l'asm , et la bonne config ,bien sur...
    Code:
    :1000000005280000000000002628831607309F0006
    :1000100083128316E030850083128316FF3086003A
    :1000200083128501FF308500FA301D200001850014
    :10003000FA301D20122863000528A100A00100004D
    :0E0040000000A00B1F28A10B1F280034090090
    :02400E00093F68
    :00000001FF
    Dernière modification par freepicbasic ; 21/12/2008 à 15h21.
    A+, pat

  16. #15
    DavidDB

    Re : probléme programation PIC 16f84

    J'ai du mal à te suivre, de plus j'ai l'impression que l'on ne se comprend pas, désolé si je suis dur d'oreilles...

    C'est vrai, que pour ma part, j'ai ignoré la conduction du transistor, vu que c'est transparent pour l'utilisateur, et la confusion est probablement là. Vu que tu sembles parler de la commande de ce transistor et que moi je te parle de l'état logique de la sortie en fonction d'un opercode!!!

    Sur RA4, pour allumer une led, il faut être en logique inverse comme tu le soulignes.

    Vdd->résistance->led(anode à VDD et cathode sur RA4)->RA4.
    Là je suis entièrement d'accord avec toi pour l'allumer un simple BSF suffit et la commande "semble identique" aux autres.
    Sauf que ce BSF fait passer la sortie à l'état logique 0, alors que sur le reste des I/O du µC ce même BSF fait passer la sortie à l'état logique 1.

    C'est peut-être de là que j'ai un problème de compréhension avec ton explication.

    J'en reste toujours à ce que j'ai écrit dans le post#9, l'état logique de la sortie est inversé sur la broche RA4, même si la commande logique du transistor n'est pas différente des autres I/O.

    David.

  17. #16
    freepicbasic

    Re : probléme programation PIC 16f84

    Sauf que ce BSF fait passer la sortie à l'état logique 0, alors que sur le reste des I/O du µC ce même BSF fait passer la sortie à l'état logique 1.
    Non,

    Sinon Alors pourquoi les 2 leds s'allument et s'éteignent en même temps ?
    avec les hex postés précédement.
    en faisant ;

    main:
    porta = 255
    delayms(200)
    porta = 0.
    delayms(200)
    goto main

    si la logique de RA4 était différente elles devraient être à l'inverse l'une de l'autre.

    fais un essai en mettant 2 leds relié au + sur RA3 et RA4 , et tu verra.
    A+, pat

  18. #17
    gedonet

    Re : probléme programation PIC 16f84

    Bonjour
    Je confirme ce que j'ai dit et que freepicbasic a confirmé, et pour tout les pics que je connais, BCF RA4 donne gnd sur la pin, comme sur les autre I/O, tu te rends compte des problemes si cette sortie etait en logique inverse des autres.
    Un BSF RA4 donne un etat haute impedance, le même etat qu'une I/O en entrée.
    L'interret de cette pin en opendrain est, par exemple, de pouvoir faire des liaisons du genre I2C en soft et simplement sans risque de court circuit, soit on envoie la masse (bcf), soit on envoie rien (bsf), c'est la pullup externe qui agit.
    Le schema proposé par freepicbasic en #12 indique bien que la partie mise à la masse est identique aux autres I/O, quelque soit le pic.
    Gilles

  19. #18
    DavidDB

    Re : probléme programation PIC 16f84

    Mea-culpa...

    Je viens de refaire le test sur RA4 avec le 628(sans les leds et avec un programme sans boucle qui fixe simplement l'état de la sortie, c'est bien :
    BCF RA4 -> sortie à GND et BSF RA4-> sortie à VDD

    Avec l'ICD2, l'arrêt du programme en mode programmateur, ne garde apparemment pas l'état des I/O...
    C'est ce qui m'a induit en erreur, en plus de ma conviction erronée du départ...

    David.

  20. #19
    DavidDB

    Re : probléme programation PIC 16f84

    Citation Envoyé par gedonet Voir le message
    L'interret de cette pin en opendrain est, par exemple, de pouvoir faire des liaisons du genre I2C en soft et simplement sans risque de court circuit, soit on envoie la masse (bcf), soit on envoie rien (bsf), c'est la pullup externe qui agit.
    Oui et non...

    Sur les 18F, plus de drain ouvert au niveau des I/O et l'i2C soft et hard fonctionne sans problème.

    David.

  21. #20
    freepicbasic

    Re : probléme programation PIC 16f84

    doc microchip pic18F2455/2550/4555/4550
    Les sorties I2C sont en open drain SDA et SCL.

    ça fait partie de la norme I2C.
    Même pour le SCL ce qui d'ailleurs au début m'a surpris , mais c'est (SCL) utilisé dans le protocole, pour tester.
    Images attachées Images attachées  
    A+, pat

  22. #21
    freepicbasic

    Re : probléme programation PIC 16f84

    Citation Envoyé par freepicbasic Voir le message
    Même pour le SCL ce qui d'ailleurs au début m'a surpris , mais c'est (SCL) utilisé dans le protocole, pour tester.
    http://www.planete-sciences.org/robo...sse.html#debut
    Le SCL devrait être scruté par le master pour savoir si d'autres masters interrogent la ligne.
    Donc c'est aussi une entrée.

    évidemment si on a qu'un master et qu'un slave , c'est inutile.
    N'empêche que le pic nécessite ses résistances de pull up sur les 2.
    A+, pat

  23. #22
    gedonet

    Re : probléme programation PIC 16f84

    Citation Envoyé par DavidDB Voir le message
    Oui et non...

    Sur les 18F, plus de drain ouvert au niveau des I/O et l'i2C soft et hard fonctionne sans problème.

    David.
    Salut
    On peut tres bien immiter l'opendrain avec n'importe quelle pin, on place la sortie à 0, bcf PORTX,Y et ensuite au lieu d'agir sur le port on agit sur TRISX,Y de cette façon soit la pin est en sortie =0 soit en haute impedance, on a le même effet qu'un opendrain et de plus comme à 1, elle est en entrée on peut "lire" le bus pour verifier qu'un autre composant n'utilise pas la ligne et donc gerer un arbitrage en mode multi maitre.
    C'est ce que j'ai fait sur ma routine I2C que l'on trouve sur ma page: http://gedonet.free.fr/aide_pic/aide_pic.htm
    Gilles

Discussions similaires

  1. coseils programation pic 16F877
    Par mondir dans le forum Électronique
    Réponses: 4
    Dernier message: 28/02/2008, 06h54
  2. Programation PIC en STI electrotechnique?
    Par alex934mas dans le forum Orientation avant le BAC
    Réponses: 10
    Dernier message: 19/06/2007, 21h01
  3. allumage electronique pic 16F84 probleme
    Par theyoyoland dans le forum Électronique
    Réponses: 6
    Dernier message: 25/01/2007, 09h17
  4. probleme au programation pic 12c508
    Par anass123 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/04/2006, 10h37
  5. Programation d'un pic 16F84
    Par dans le forum Électronique
    Réponses: 3
    Dernier message: 07/03/2003, 18h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.