Problème bête pour l'utilisation d'un PIC16F819
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème bête pour l'utilisation d'un PIC16F819



  1. #1
    invite953f8104

    Problème bête pour l'utilisation d'un PIC16F819


    ------

    Bonsoir à tous,

    Voilà j'ai un problème assez bête, cela fait 1semaine que je cherche en me disant que je vais trouvé mais la je ne trouve vraiment pas d'où vient mon erreur!

    J'initialise mon PIC 16F819 de la manière suivante :

    OPTIONVAL EQU B'10000000'
    INTCONVAL EQU B'10101010'
    PIE1VAL EQU B'00000000'
    OSCCONVAL EQU B'01000101'
    ADCON0VAL EQU B'0000000'
    ADCON1VAL EQU B'00000111'

    DIRPORTA EQU B'00011111' ; Direction PORTA (1=entrée)
    DIRPORTB EQU B'00000000' ; Direction PORTB (0=sortie)
    init
    clrf PORTA ; sorties portA à 0
    clrf PORTB ; sorties portB à 0
    BANK1
    movlw OPTIONVAL ; charger masque
    movwf OPTION_REG ; initialiser registre option
    movlw OSCCONVAL ; initialiser resgistre osccon
    movwf OSCCON
    movlw DIRPORTA ; Direction PORTA
    movwf TRISA ; écriture dans registre direction
    movlw DIRPORTB ; Direction PORTB
    movwf TRISB ; écriture dans registre direction
    movlw PIE1VAL ; initialiser registre d'activation des interruptions
    movwf PIE1
    clrf OSCTUNE
    BANK0
    movlw INTCONVAL ; initialiser registre interruptions
    movwf INTCON
    bcf DIR_VAL0
    bcf DIR_VAL1
    bcf DIR_VAL2
    bcf DIR_VAL3
    bcf DIR_VAL4
    bcf DIR_VAL5
    movlw ZERO
    movwf VAL_SEC ; Mise à 0 du compteur val_sec
    movwf VAL_10SEC ; Mise à 0 du compteur val_10sec
    movwf VAL_MIN ; Mise à 0 du compteur val_min
    movwf VAL_10MIN ; Mise à 0 du compteur val_10min
    movwf VAL_HEUR ; Mise à 0 de val_heur
    movwf VAL_10HEUR ; Mise à 0 de val_10heur
    movlw BASE_TEMPS1
    movwf CMP_TIMER1
    clrf TMR0]
    Ensuite mon programme principal :

    start
    .
    .
    . quelques instructions....qui fonctionnent!
    .
    puis arrive les tests suivants:

    btfss SW_MIN ;Test sw_min, si à 0 va à inc_min
    call inc_min
    btfss SW_HEUR ;Test sw_heur, si à 0 va à inc_heur
    call inc_heur

    goto start ; Retourne à start
    Cependant mon PIC va tout le temps dans les 2 sous-programmes(inc_min et inc_heur) si je change par btfsc(le contraire de btfss) mon programme ne fait rien du tout lorsque je presse les boutons....

    voici les 2 sous-programmes:

    inc_min

    bcf INTCON,TMR0IE ; Interdit les interruptions TMR0
    CALL TEMPO2
    incf VAL_MIN,F ; Val_MIN + 1
    movf VAL_MIN,W
    sublw H'A' ; Soustrait 10
    btfss STATUS,Z ; Test le bit Z si Z=0 retourne
    RETURN
    CLRF VAL_MIN

    CALL TEMPO2
    movlw ZERO
    movwf VAL_MIN ; Mise à 0 du compteur val_MIN
    incf VAL_10MIN,F ; Val_10MIN +1
    movf VAL_10MIN,W
    sublw 6 ; Soustrait 7
    btfss STATUS,Z ; Test le bit Z si Z=0 retourne
    RETURN
    CLRF VAL_10MIN

    inc_heur

    bcf INTCON,TMR0IE ; Interdit les interruptions TMR0
    CALL TEMPO2
    incf VAL_HEUR,F ; Val_HEUR + 1
    movf VAL_HEUR,W
    sublw H'A' ; Soustrait 10
    btfss STATUS,Z ; Test le bit Z si Z=0 retourne
    RETURN
    CLRF VAL_HEUR

    CALL TEMPO2
    movlw ZERO
    movwf VAL_HEUR ; Mise à 0 du compteur val_HEUR
    incf VAL_10HEUR,F ; Val_10HEUR +1
    movf VAL_10HEUR,W
    sublw 3 ; Soustrait 3
    btfss STATUS,Z ; Test le bit Z si Z=0 retourne
    RETURN
    CLRF VAL_10HEUR
    RETURN
    Dans un 1er temps je pensais que l'erreur venais du fait que je ne ressortais pas correctement de mes sous-programmes mais lorsque je fais du pas-à-pas dans MPLAB tout semble fonctionner, le programme retourne correctement a la fin de l'interruption TMR0 ou en ressortent de n'importe quels sous-programme.

    Donc un petit peu d'aide ne serait pas de refus!

    Merci d'avance A++

    -----

  2. #2
    sdec25

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Salut.

    btfss SW_MIN ;Test sw_min, si à 0 va à inc_min
    call inc_min
    btfss SW_HEUR ;Test sw_heur, si à 0 va à inc_heur
    call inc_heur
    sw_min et sw_heur sont à 0 du début à la fin ?
    Quand est-ce qu'ils sont à 1 ?

  3. #3
    cherwam07

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Donc s'il y a des boutons...il y a une carte !!

    C'est quoi cette carte ? Tu l'as faite toi même ?? Tu as un schéma ??

    Et puis SW_MIN et SW_HEUR il faudrait que tu nous dise ce que c'est, sur quel port tu as cablé tes BP quoi.

    Pour finir, les :
    . quelques instructions....qui fonctionnent!
    il faudrait que tu les mette aussi. Rien ne dit qu'elles fonctionnent bien, et qu'elles ne créent pas un souci qui perturbe la suite.

    A+

  4. #4
    invite953f8104

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Citation Envoyé par sdec25 Voir le message
    Salut.



    sw_min et sw_heur sont à 0 du début à la fin ?
    Quand est-ce qu'ils sont à 1 ?
    C'est a la fin de mon programme principal(au début je l'avais mis au début du programme mais cela ne changeais rien a mon problème!)

    Au repos, ils sont à l'état haut. Une fois pressé il sont a l'état bas.
    Citation Envoyé par cherwam07 Voir le message
    Donc s'il y a des boutons...il y a une carte !!

    C'est quoi cette carte ? Tu l'as faite toi même ?? Tu as un schéma ??

    Et puis SW_MIN et SW_HEUR il faudrait que tu nous dise ce que c'est, sur quel port tu as cablé tes BP quoi.

    Pour finir, les :
    Citation:
    . quelques instructions....qui fonctionnent!

    il faudrait que tu les mette aussi. Rien ne dit qu'elles fonctionnent bien, et qu'elles ne créent pas un souci qui perturbe la suite.

    A+
    Certe, pour ma phase de test j'utilise les boutons de la carte "EasyPIC4" j'ai crée une carte à part pour le produit final(mais si cela ne marche pas sur l' "EasyPIC4" rien ne me sert d'utilisé ma carte externe.)

    Effectivement voici le reste du programme principal :

    bsf INTCON,TMR0IE ; Autorise les interruptions TMR0
    DIR_VAL_SEC ; Active la colonne seconde
    MOVF VAL_SEC,W ; Charge dans W la valeur à envoyé
    movwf SEND_VAL ; Valeur à envoyé dans SEND_VAL
    call send_valeur ; Va au sous-programme send_valeur
    call TEMPO

    bsf OUT_VAL0 ; Toutes les sorties à 1(led allumé si 0)
    bsf OUT_VAL1 ; Evite que la colonne suivant ne s'allume
    bsf OUT_VAL2 ; Pendant un court instant(visible à l'oeil)
    bsf OUT_VAL3
    voilà, cette partie est présente 6 fois, seul la direction(DIR_VAL...) et la valeur (VAL_...) sont modifié dans chaque partie.

    Reste juste le sous-programme send_valeur :

    send_valeur

    bsf OUT_VAL0 ; Toutes les sorties à 1(led allumé si 0)
    bsf OUT_VAL1
    bsf OUT_VAL2
    bsf OUT_VAL3

    btfsc SEND_VAL,0 ; Si le bit 0 de la variable = 1, alors la
    bcf OUT_VAL0 ; led 0 est allumée.
    btfsc SEND_VAL,1
    bcf OUT_VAL1
    btfsc SEND_VAL,2
    bcf OUT_VAL2
    btfsc SEND_VAL,3
    bcf OUT_VAL3

    RETURN
    Voilà merci beaucoup de votre aide!!!

    A++

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

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Salut,

    Au repos, ils sont à l'état haut. Une fois pressé il sont a l'état bas.
    C'est pas si sur sinon ça marcherait. Peux tu nous montrer ou tu as déclaré sw_min et sw_heur?

    A+

  7. #6
    invite953f8104

    Re : Problème bête pour l'utilisation d'un PIC16F819

    voilà:

    #DEFINE POT PORTA,0
    #DEFINE CAPTEUR PORTA,1

    #DEFINE OUT_VAL0 PORTA,6
    #DEFINE OUT_VAL1 PORTA,7
    #DEFINE OUT_VAL2 PORTB,6
    #DEFINE OUT_VAL3 PORTB,7

    #DEFINE DIR_VAL0 PORTB,0
    #DEFINE DIR_VAL1 PORTB,1
    #DEFINE DIR_VAL2 PORTB,2
    #DEFINE DIR_VAL3 PORTB,3
    #DEFINE DIR_VAL4 PORTB,4
    #DEFINE DIR_VAL5 PORTB,5

    #DEFINE SW_MIN PORTA,2
    #DEFINE SW_HEUR PORTA,4

    Que le portA je le configure tout en digital ou que je choisis seulement RA0,1 et 3 en analogique(ce qui sera le cas dans mon projet) rien a faire!(Sachant que capteur et POT ne sont pas branché pour le moment!)

    Merci de votre attention
    A+

  8. #7
    katmai

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Je ne vois pas ou tu initialises ton ADCON1 dans l'init (0x06 pour tout en digital) mais je pense que tu l'as fais. Tu devrais faire un petit schéma des boutons pour voir.

    A+

  9. #8
    invite953f8104

    Re : Problème bête pour l'utilisation d'un PIC16F819

    Ahhhhhh ca m'énerve je savais que c'était tout con mais je ne trouvais vraiment pas.... enfin voilà j'avais "juste" oublié d'initialiser ADCON1....

    Enfin voilà quoi mnt ça marche reste plus qu'a faire la partie conversion AD dans mon programme et c'est terminé!

    Merci à toi Katmai

    @++

  10. #9
    katmai

    Re : Problème bête pour l'utilisation d'un PIC16F819

    ... de rien.

    A+

Discussions similaires

  1. L'utilisation d'un pc =)
    Par invitea31b1dd7 dans le forum Orientation avant le BAC
    Réponses: 4
    Dernier message: 17/06/2016, 12h03
  2. quelques questions concernant l'utilisation d'un telescope
    Par totor9 dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 8
    Dernier message: 30/05/2007, 15h34
  3. Comment optimiser l'utilisation d'un poêle à bois.
    Par invite1274aec8 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 2
    Dernier message: 01/02/2006, 14h49
  4. Information sur l'utilisation d'un rack
    Par invite4f31e209 dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 11/05/2005, 21h51
  5. L'utilisation d'un transistor BiP
    Par invite4e8412ad dans le forum Physique
    Réponses: 5
    Dernier message: 28/01/2004, 19h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...