Pic16F88 Problème
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Pic16F88 Problème



  1. #1
    mgduc

    Pic16F88 Problème


    ------

    Bonjours, J’essaie de programmer une pic 16F88 avec un programmateur OLIMEX qui est basé sur programmateur JDM. Mon programme est piklab sur linux. la pic est sur un protoboard OLIMEX qui comporte deja une led et un bouton poussoir. La led est sur RB3 et le bouton sur RB2. J'ais les example officiel du protoboard OLIMEX PIC-P18 mais quand je les envoi dans le pic rien ne fonctionne. j'ais tester au multimètre les voltage au pin et RB2 as toujours 5V. Même lorsque je l'efface et que je vérifie, RB2 est toujours à 5V. peut importe la programmation ou l'éffacment, la pic as toujours le même état.

    Est-ce que c'est le Pic qui est brisée ou le problême vien du programmateur ou alors mon logiciel ne fonctionne pas corectement...

    Merci de m'aider...

    -----

  2. #2
    alainav1

    Re : Pic16F88 Problême

    bonjour,
    apres avoir galeré avec les programmateur JMD
    j'ai un pickit 2 et resolu tous mes problemes !
    (pickit est je crois compatible linux ?)
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  3. #3
    vincent66

    Re : Pic16F88 Problême

    Bonjour,
    Le bouton poussoir est sur RB2, arrivez vous à nous faire un petit schéma du branchement du bouton à RB2 ?
    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  4. #4
    mgduc

    Re : Pic16F88 Problême

    Bonjours, Le problème étais donc moi, j'avais bien sélectionner la pic 16F88 mais je compillais un programme pour 16F667... j'ais donc réussi à faire clignoter ma led mais j'aimerais savoir comment y arriver seul car je ne comprend pas. Je croyais qu'il suffisais d'écrire (BSF PORTB, 3) pour activer RB3 mais ce n'est pas aussi simple. Je croix qu'il faux la configurer en sortie et non en entrer mais ou et comment? j'ai suivi des tutoriel mais ça ne répondais pas à ma question...

    J'ai déjà une base en Assembleur c'est pourquoi j'ai choisie se langage mais contrairement as un ordinateur, c'est beaucoup plus physique...

    Voila ce que j'ais essayer...

    #include <p16f88.inc>

    ; -----------------------------------------------------------------------
    ; Bits de configuration: adapté à votre dispositif et à vos besoins
    __CONFIG _CONFIG1, _WDT_ON & _PWRTE_OFF & _EXTRC_CLKOUT & _MCLR_ON & _BODEN_ON & _LVP_ON & _CPD_OFF & _WRT_PROTECT_OFF & _DEBUG_OFF & _CCP1_RB0 & _CP_OFF
    __CONFIG _CONFIG2, _FCMEN_ON & _IESO_ON

    ; -----------------------------------------------------------------------
    ; Déclaration des variables
    INT_VAR UDATA_SHR
    w_saved RES 1 ; variable utilisée pour la sauvegarde de contexte
    status_saved RES 1 ; variable utilisée pour la sauvegarde de contexte
    pclath_saved RES 1 ; variable utilisée pour la sauvegarde de contexte

    var1 RES 1 ; Exemple de variablezzz

    ; -----------------------------------------------------------------------
    ; vecteur de redémarrage
    STARTUP CODE 0x000
    nop ; nécessaire pour le débogage avec l'ICD2
    movlw high start ; charge l'octet supérieur de l'étiquette « start »
    movwf PCLATH ; initialise PCLATH
    goto start ; va au début du code principal

    ; vecteur d'interruption
    INT_VECTOR CODE 0x004
    goto interrupt ; va au début du code d'interruption

    ; code relogeable
    PROG CODE
    interrupt
    movwf w_saved ; sauvegarde du contexte
    swapf STATUS,w
    movwf status_saved
    movf PCLATH,w ; nécessaire seulement si on utilise plus que la première page
    movwf pclath_saved
    clrf PCLATH
    ; << insérer le code d'interruption >>
    movf pclath_saved,w ; restauration du contexte
    movwf PCLATH
    swapf status_saved,w
    movwf STATUS
    swapf w_saved,f
    swapf w_saved,w
    CLRF TRISB ; CECI EST MA TENTATIVE POUR RENDRE RB3 EN SORTIE...
    retfie

    start
    BSF PORTB, 3 ; CE QUE J'AIS ESSAYER POUR FAIR ALLUMER MA LED
    ; << insérer le code principal >>
    goto $ ; boucle indéfiniment

    END

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

    Re : Pic16F88 Problême

    Bon j'ais fais un test.

    j'ais écrit cela dans mon programme principale pour rendre active toute les sortie. (je sais qu'elle ne peux pas étre toute active)

    BSF STATUS, RP0
    BCF TRISB, 0
    BCF TRISB, 1
    BCF TRISB, 2
    BCF TRISB, 3
    BCF TRISB, 4
    BCF TRISB, 5
    BCF TRISB, 6
    BCF TRISB, 7
    BCF TRISA, 0
    BCF TRISA, 2
    BCF TRISA, 3
    BCF TRISA, 4
    BCF TRISA, 5
    BCF TRISA, 6
    BCF TRISA, 7
    BCF STATUS, RP0
    BSF PORTB, 0
    BSF PORTB, 1
    BSF PORTB, 2
    BSF PORTB, 3
    BSF PORTB, 4
    BSF PORTB, 5
    BSF PORTB, 6
    BSF PORTB, 7
    BSF TRISA, 0
    BSF TRISA, 1
    BSF TRISA, 2
    BSF TRISA, 3
    BSF TRISA, 4
    BSF TRISA, 5
    BSF TRISA, 6
    BSF TRISA, 7
    Conclusion. pin 1 = 0V, pin 2 = 0V, pin 3 = 0V, pin 4 = 5V, pin 6 = 5V, pin 7 = 5V, pin 8 = 5V, pin 9 = 0V, pin 10 = 5V, pin 11 = 5V, pin 12 = 0V, pin 13 = 5V, pin 15 = 2,5V (normal quartz), pin 16 = 0V, pin 17 = 0V, pin 18 = 0V

    Donc seulement 7 sortie sont active (RA5, RB0, RB1, RB2, RB4, RB5, RB7)

    Est-ce normal? Désolé pour cette question, c'est que j'aimerais seulement partir sur une bonne base solide en m'assurent que mon matériel fonctionne adéquatement. Comme cela je pourrai apprendre sans me demander si le problème viens de moi ou du matériel...

    Merci pour la réponse.

  7. #6
    vincent66

    Re : Pic16F88 Problême

    Bonjour,
    Euh mes souvenirs d'assembleur sont un peu flous, mais le 8 dernières lignes ne devraient pas être BSF PORTA,X plutôt que BSF TRISA,X ...?
    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  8. #7
    mgduc

    Re : Pic16F88 Problême

    Oui dsl, c'est une erreur de copier coller, mais le problême reste le même.

  9. #8
    Laboum

    Re : Pic16F88 Problême

    Bonjour mgduc,
    Donc seulement 7 sortie sont active (RA5, RB0, RB1, RB2, RB4, RB5, RB7)
    C'est normal dans ton code, pas de configuration du registre ANSEL et CMCON
    Tu n'a pas choisi le plus facile pour commencer, c'est un µC performant, mais il faut configurer des registres.
    Tes instructions pourrait être grandement simplifiés
    Consulte le site de Bigonoff c'est la bible du Pic
    Bon courage

  10. #9
    mgduc

    Re : Pic16F88 Problême

    Daccord merci Laboum, Je vais étudier cela

  11. #10
    mgduc

    Re : Pic16F88 Problême

    Bon j’ai fais plusieurs essais et je ne comprend rien... j’ai écrit un programme qui doit faire clignoter une led verte et en appuyant sur le bouton c'est une led orange qui clignote. le seul problème, je ne sais pas pourquoi, la led clignote vert et quand j’appuie sur le bouton la led clignote orange 3 fois et reviens à l'étape de la led vert sans aucune autorisation, ce n'est pas écrit dans le programme...

    Voila mon programme

    #include <p16f88.inc>

    INT_VAR UDATA_SHR
    cmpt1 RES 1
    LEDON macro
    BSF PORTB, 4
    endm
    LEDOFF macro
    BCF PORTB, 4
    endm
    LEDON2 macro
    BSF PORTB, 5
    endm
    LEDOFF2 macro
    BCF PORTB, 5
    endm
    STARTUP CODE 0x000
    goto INIT

    INIT
    BSF STATUS, RP0
    BCF TRISB, 4
    BCF TRISB, 5
    BCF TRISB, 3
    BCF STATUS, RP0
    start
    BTFSS PORTB, 2
    goto tetar
    LEDOFF2
    LEDON
    CALL tempo
    LEDOFF
    call tempo
    goto start
    tetar
    LEDOFF
    LEDON2
    call tempo
    LEDOFF2
    CALL tempo
    goto tetar

    tempo
    clrf cmpt1
    boucle1
    nop
    decfsz cmpt1, f
    goto boucle1
    return

    END
    Merci pour votre aide.

  12. #11
    Laboum

    Re : Pic16F88 Problème

    Bonjour mgduc,
    Ton programme manque cruellement de commentaire !
    Il faut absolument revoir tes bases en ASM appliqué au Pic, quand je vois ton code au # 5
    En entête aucune description de la config. hard du projet, malgré cela j'ai quand même réussit ( a deviner) en l'important sous MPLAB, les pins reliées au B/P et aux leds orange et verte. J'ai commencé une ébauche de la modification de ton programme
    Concernant le passage de la led verte à la led orange, il faudrait que tu déclares une variable, en utilisant 1 bit contenant (l'état antérieur du bouton poussoir)
    Ensuite utiliser le mode interruption pour tester cette variable, au deuxième appuie sur B/P tester ce bit puis l'inverser (si nécessaire) et agir en conséquence,
    En bref trop de choses basiques a revoir .
    Exemple ici:
    Code:
    ;*****************************************************************************
    ;                          INITIALISATIONS                                   *
    ;*****************************************************************************
    INIT
    	BSF STATUS, RP0 ; on passe en banque 1 pour accès a TRISB 
    ;---------------- configuration direction du PORTB --------------------------
    ;------ RB2 en entrée pour le B/P, RB3, RB4, RB5 en sortie ------   
    ;---------------------- simplification du code -------------------
            movlw b'11000111' ; on charge dans W la configuration de TRISB 
    	movwf TRISB       ; transfert dans le registre TRISB initialisé !
    ;--------------------- qui remplace celui-ci --------------------------------
    ;	BCF TRISB, 4	; ce n'est valable que si tu veux agir que sur un bit
    ;	BCF TRISB, 5
    ;	BCF TRISB, 3
    ;----------------------- Remarque -------------------------------
    ; Il faut optimiser ton code en utilisant toutes les possibilités des 35
    ; instructions, déjà que les anti ASM se plaignent de la longueur des programmes
    ;-----------------------------------------------------------------------------
    Il est urgent de consulter le site de Bigonoff http://www.abcelectronique.com/bigonoff/, même si tu étudies que le Part:1 , cela te donneras les bases transposables, sur d'autres µC.
    Qui plus est, sur le site de "Gedonet" http://gedonet.free.fr/aide_pic/aide_pic.htmil y a des fichiers maquette, (dédiés aux Pic les plus courant), qui sont une excellente base de départ, pour ne rien oublier en chemin.
    Voila, je suis un débutant moi aussi .
    A bientôt

  13. #12
    alainav1

    Re : Pic16F88 Problème

    Bonjour,
    un résumé très bien fait (et en français)
    http://daniel.menesplier.free.fr/Doc/PIC%2016F88.pdf
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  14. #13
    Laboum

    Re : Pic16F88 Problème

    Bonjour alainav1,
    Citation Envoyé par alainav1 Voir le message
    un résumé très bien fait (et en français)
    http://daniel.menesplier.free.fr/Doc/PIC%2016F88.pdf
    Je sais, j'ai songé a lui proposer le lien, mais j'aimerais que "mgduc" commence par les bases élémentaires.
    Tiens ça me donne l'occasion de lui rappeler, que la datasheet est indispensable

    Merci pour ta contribution

  15. #14
    mgduc

    Re : Pic16F88 Problème

    Bonjours, j'ai beaucoup progresser sans pour au-temps régler mon problème mais j'arrive à faire quelque petite application.

    Voici entre autre une qui ne marche pas. Il vagit d'une led 2 couleur, jaune et vert, a l’appuie d'un bouton la led passe du vert au jaune, apres une autre appuis la led s’éteint et après une autre appuis elle reviens au vert mais en pratique le bouton ne fais qu'éteindre et rallumer la led verte...

    #include <p16f88.inc>
    __CONFIG _CP_OFF & _WDT_OFF
    INT_VAR UDATA_SHR
    tmp res 1 ;Timer
    LEDON macro ;Macro pour Alumer Led Verte.
    BSF PORTB, 4
    endm
    LEDOFF macro ;Macro pour Éteindre Led Verte.
    BCF PORTB, 4
    endm
    LEDON2 macro ;Macro pour Alumer Led Orange.
    BSF PORTB, 5
    endm
    LEDOFF2 macro ;Macro pour Éteindre Led Orange.
    BCF PORTB, 5
    endm
    STARTUP CODE 0x000
    GOTO INIT
    INIT ;Initialisation
    BSF STATUS, RP0 ;Passer en banque1
    BCF TRISB, 4 ;RB4 en sortie
    BCF TRISB, 5 ;RB5 en sortie
    BCF STATUS, RP0 ;Passer en banque0
    goto start ;Passer au début du programme
    tempo ;Séquence de temporisation
    clrf tmp ;Remettre timer a zero
    boucle
    nop
    clrwdt ;Test si le problême ne viendrais pas du WATCHDOG
    decfsz tmp, f ;décrémente le timer jusque au retoure a zero
    goto boucle ;si timer est plus grand que zero, retour en boucle.
    return ;retour au programme.
    start
    goto VERT
    VERT
    BTFSS PORTB, 2 ;Teste si bouton est appuyer
    GOTO JTMP ;Si oui, passer a l'étape suivante
    LEDOFF2 ;Éteindre Led Jaune
    LEDON ;Allumer led verte
    clrwdt ;Test si le problême ne viendrais pas du WATCHDOG
    GOTO VERT ;Passer en boucle
    JAUNE
    BTFSS PORTB, 2 ;Teste si bouton est appuyer
    GOTO NTMP ;Si oui, passer a l'étape suivante
    LEDOFF ;Éteindre led verte.
    LEDON2 ;Allumer led jaune.
    clrwdt ;Test si le problême ne viendrais pas du WATCHDOG
    GOTO NOIR ;Passer en boucle
    NOIR
    BTFSS PORTB, 2 ;Teste si bouton est appuyer
    GOTO VTMP ;Si oui, passer a l'étape suivante
    LEDOFF ;Éteindre led verte
    LEDOFF2 ;Éteindre led jaune
    clrwdt ;Test si le problême ne viendrais pas du WATCHDOG
    goto NOIR ;passer en boucle
    goto start ;Juste au cas ou...
    VTMP ;Temporiser le bouton pour ne pas qu'il soit appuyer plusieur fois par erreur
    call tempo
    call tempo
    call tempo
    call tempo
    GOTO VERT
    JTMP ;Temporiser le bouton pour ne pas qu'il soit appuyer plusieur fois par erreur
    call tempo
    call tempo
    call tempo
    call tempo
    GOTO JAUNE
    NTMP ;Temporiser le bouton pour ne pas qu'il soit appuyer plusieur fois par erreur
    call tempo
    call tempo
    call tempo
    call tempo
    GOTO NOIR
    end
    Merci beaucoup pour votre aide j'en suis très reconnaissant. Ces temps si je parcourt les tutoriel de BIGONOFF de fils en équille. Parfois même quand je crois avoir bien compris quelque chose, une relecture me démontre que non et j'en apprend de plus en plus. C'est pourquoi avant de me lancer dans un projet je veux avoir tout les clef en main.

    J'avais penser que le WATCHDOG me causais des problème en sortent mon programme de ses routine en boucle...

  16. #15
    mgduc

    Re : Pic16F88 Problème

    Merci Laboum pour ce conseille (movlw b'11000111') c'est vrai que c'est beaucoup moin long.

  17. #16
    mgduc

    Re : Pic16F88 Problème

    Pour le problème du programme en #10, c'étais bien le watchdog. j'ais réglé le problème seulement en passent CLRWDT dans la routine de temporisation.

  18. #17
    Laboum

    Re : Pic16F88 Problème

    Bonjour mgduc,
    Citation Envoyé par Laboum Voir le message
    En entête aucune description de la config.
    Comme quoi ma remarque, même si j'évoquais le hard, le soft compte aussi
    Citation Envoyé par mgduc Voir le message
    Pour le problème du programme en #10, c'étais bien le watchdog. j'ais réglé le problème seulement en passent CLRWDT dans la routine de temporisation
    Attention ne te fais pas piéger !
    Logiquement un programme bien conçu, n'a pas besoin du "watchdog" c'est la bouée de sauvetage si le programme se plante.
    Je ne dis pas, que c'est un registre inutile bien au contraire, mais il faut en cadrer le contexte !
    En revanche, dans le cadre d'une configuration spécifique, on peut l'utiliser à bon escient.
    Dans le cours de Bigonoff, auquel il faut avoir sans cesse recours, lorsque l'on débute (comme moi), il y a des exemples d'utilisation.
    Ne pas hésiter à utiliser les possibilités des 35 instructions, qui optimise le code, mais il faut se donner le temps d'apprendre.
    Dans tes programmes dans un premier temps, utilise plutôt le binaire b'00010110' pour les valeurs, cela donne une meilleure appréhension du positionnement des bits.
    Allez courage, tu progresses

  19. #18
    mgduc

    Re : Pic16F88 Problème

    Merci beaucoup pour ton aide, j'ai trouver l'erreur du dernier programme, c'était seulement la boucle jaune qui avais un goto noir au lieu de goto jaune. (erreur d'inattention). Il me reste beaucoup de test a faire pour apprendre toujours à l'aide du manuelle et quand je serais prêt, je me lancerais dans un petit projet EX: robot qui évite les obstacle ou suiveur de ligne... d'ici la, je pratique

Discussions similaires

  1. Programmateur de PIC16f88
    Par anthonydu62 dans le forum Électronique
    Réponses: 23
    Dernier message: 29/10/2012, 12h08
  2. Pic16f88 CAN
    Par cougar73 dans le forum Électronique
    Réponses: 21
    Dernier message: 20/07/2012, 11h02
  3. PIC16F88: sortie RB6
    Par invite61268a46 dans le forum Électronique
    Réponses: 21
    Dernier message: 16/07/2009, 07h20
  4. Pic16F88 pour Compteur
    Par invite68e72f91 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/02/2007, 23h16
  5. programmation Pic16F88
    Par invitee17aeca5 dans le forum Électronique
    Réponses: 9
    Dernier message: 19/11/2006, 20h30
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...