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

debutant avec pic



  1. #1
    invite13ed46c1

    debutant avec pic


    ------

    Bonjour,

    voila je me lance a la programmation de pic ,
    je commance avec le cours de bigonoff

    Cours sur les PIC® - Part1 (le 16F84)

    * Vous désirez apprendre le PIC® 16F84?
    * Vous êtes débutants ou vous désirez vous remettre à niveau?
    * En cliquant ici,vous pourrez télécharger le cours.
    * A partir de la révision 13, utilisation de MPLAB® 6 en remplacement de MPLAB® 5.50 devenu complètement obsolète.

    j'ai fais mon 1er montage page 86
    j'ai un pic 16f84a

    je met ici le code asm pour info meme si je pense pas avoir de problemme puisque c'est le code du cours et la compilation ce passe bien .

    Code:
    ;**********************************************************************
    ;   PROGRAMME DE CLIGNOTEMENT D'UNE LED CONNECTEE SUR LE PORTA.2      *
    ;   D'UNE PIC16F84. PROGRAMME D'ENTRAINEMENT AU FONCTIONNEMENT        *
    ;   DES PICS.                                                         *  
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    NOM:      LED-CLI                                                *
    ;    Date:     09/02/2001                                             *
    ;    Version:  1.0                                                    *
    ;    Circuit:  Platine d'essais                                       *
    ;    Auteur:   Bigonoff                                               *
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    Fichier requis: P16F84.inc                                       *
    ;                                                                     *
    ;**********************************************************************
    ;                                                                     *
    ;    Notes: Ce petit programme permet de faire clignoter une LED      *
    ;           sur le port A.2 à une fréquence de 1Hz                    *
    ;           Ce programme fait partie de la leçon 6 des cours          *
    ;                                                                     *
    ;**********************************************************************
    
    
    	LIST      p=16F84a            ; Définition de processeur
    	#include <p16F84a.inc>        ; Définitions de variables
    
    	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
    
    ; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
    ; la programmation. Les définitions sont dans le fichier include.
    ; Voici les valeurs et leurs définitions :
    ;	_CP_ON				Code protection ON : impossible de relire
    ;	_CP_OFF				Code protection OFF
    ;	_PWRTE_ON			Timer reset sur power on en service
    ;	_PWRTE_OFF			Timer reset hors-service
    ;	_WDT_ON				Watch-dog en service
    ;	_WDT_OFF			Watch-dog hors service
    ;	_LP_OSC				Oscillateur quartz basse vitesse
    ;	_XT_OSC				Oscillateur quartz moyenne vitesse
    ;	_HS_OSC				Oscillateur quartz grande vitesse
    ;	_RC_OSC				Oscillateur à réseau RC
    
    ;*********************************************************************
    ;                              ASSIGNATIONS                          *
    ;*********************************************************************
    
    OPTIONVAL	EQU	H'0008'			; Valeur registre option
                                    ; Résistance pull-up ON
                                    ; Pas de préscaler
    
    ;*********************************************************************
    ;                             DEFINE                                 *
    ;*********************************************************************
    
    #DEFINE LED	PORTA,2				; Led rouge
    #DEFINE BOUTON	PORTB,2			; bouton-poussoir
    
    
    ;*********************************************************************
    ;                             MACRO                                  *
    ;*********************************************************************
    
    LEDON 	macro	
    		bsf	LED
    		endm
    
    LEDOFF 	macro
    		bcf	LED
    		endm
    
    ;*********************************************************************
    ;                   DECLARATIONS DE VARIABLES                        *
    ;*********************************************************************
    
    	CBLOCK 0x00C   				; début de la zone variables
    	
    	cmpt1 : 1					; compteur de boucles 1
    	cmpt2 : 1					; compteur de boucles 2
    	cmpt3 : 1					; compteur de boucles 3
    
    	ENDC						; Fin de la zone                        
    
    ;**********************************************************************
    ;                      DEMARRAGE SUR RESET                            *
    ;**********************************************************************
    
    	org 	0x000 				; Adresse de départ après reset
      	goto    init				; Adresse 0: initialiser
    
    ;*********************************************************************
    ;                       INITIALISATIONS                              *
    ;*********************************************************************
    
    init
    	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
    
    					; Effacer RAM
    					; ------------
    	movlw	0x0c				; initialisation pointeur
    	movwf	FSR					; pointeur d'adressage indirec
    init1
    	clrf	INDF				; effacer ram
    	incf	FSR,f				; pointer sur suivant
    	btfss	FSR,6				; tester si fin zone atteinte (>=40)
    	goto	init1				; non, boucler
    	btfss	FSR,4				; tester si fin zone atteinte (>=50)
    	goto	init1				; non, boucler
    
    					; initialisations spécifiques
    					; ---------------------------
    	bcf		LED					; LED en sortie (banque1)
    	bcf		STATUS,RP0			; repasser banque 0
    	goto	start				; sauter au programme principal
    
    ;*********************************************************************
    ;                      SOUS-ROUTINE DE TEMPORISATION                 *
    ;*********************************************************************
    ;---------------------------------------------------------------------
    ; Cette sous-routine introduit un retard de 500.000 µs.
    ; Elle ne reçoit aucun paramètre et n'en retourne aucun
    ;---------------------------------------------------------------------
    tempo
    	movlw	2					; pour 2 boucles
    	movwf	cmpt3				; initialiser compteur3
    boucle3
    	clrf	cmpt2				; effacer compteur2
    boucle2
    	clrf	cmpt1				; effacer compteur1
    boucle1
    	nop							; perdre 1 cycle
    	decfsz	cmpt1,f				; décrémenter compteur1
    	goto	boucle1				; si pas 0, boucler	
    	decfsz	cmpt2,f 			; si 0, décrémenter compteur 2
    	goto	boucle2				; si cmpt2 pas 0, recommencer boucle1
    	decfsz	cmpt3,f				; si 0, décrémenter compteur 3
    	goto	boucle3				; si cmpt3 pas 0, recommencer boucle2
    	return						; retour de la sous-routine
    
    ;*********************************************************************
    ;                      PROGRAMME PRINCIPAL                           *
    ;*********************************************************************
    
    start
    	bsf		LED					; allumer la LED : on aurait pu écrire
    								; LEDON (voir les macros)
    	call 	tempo				; appeler la tempo de 0.5s
    	bcf		LED					; éteindre LED (LEDOFF)
    	call	tempo				; appeler la tempor de 0.5s
    	goto 	start				; boucler
    
    
    	END 			; directive fin de programme
    j'ai un programmateur px-700
    pickit2 detecte bien mon pic , j'efface le pic et je charge le fichier hex generais avec mplab ide , le write et le verify ce passe bien , donc normalement mon pic est pas vide ,

    je cable tout cela sur une plaquette d'essaye , je verifie le tout et l'allume mon alimentation stabilise a 5v

    voila le led s'allume bien mais ne clignote pas

    je sais plus d'ou cela peut venir j'ai essayer avec un autre pic 16f628a
    je modifie juste les deux lignes

    Code:
    	LIST      p=16F628a            ; Définition de processeur
    	#include <p16F628a.inc>        ; Définitions de variables
    avec le 16f628a la led ne s'allume meme pas

    donc je sais pas ou chercher j'ai essayer de modifier le quarzt de 4.Mhz par un autre rien ne change .

    donc je sais que la led marche , mon cablage est minimal avec 3 files , donc en compos il me reste plus que les deux condo de 27pf sur le quarzt pas teste cela peut venir de la , je peut les changer par d'autre condos plus puissant ?

    je sais plus ou chercher alors je me remet a vous

    merci pour vos idees d'avance

    -----

  2. #2
    invite3c59dc04

    Re : debutant avec pic

    Salut,

    Peut-tu mettre un schéma du montage que tu effectues avec le pic16F84 pour qu'on puisse vérifier ton schéma ?

    @+

  3. #3
    invite3c59dc04

    Re : debutant avec pic

    Salut,

    Je viens de voir que le programme est fait pour un 16F84A et tu utilises un 16F84.
    C'est parfois la cause de bug.

    @+

  4. #4
    invite13ed46c1

    Re : debutant avec pic

    normalement il y a pas de problemme entre ces deux pic c'est les memes et le code de plus est tres simpre
    oiur le schema c'est un schema de base avec une led sur le porta2

    j'ai mis le fichier pda du cours en piece joint il y a le schema page 86

    je commance a me demander si mes deux pic ne sont pas grilleou alors il y a un pb avec ma plaquette d'essaye .

    une idee ?
    Images attachées Images attachées

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

    Re : debutant avec pic

    Bonjour,

    Dans Init, l'instruction
    movlw OPTIONVAL
    est_elle_correcte?

  7. #6
    Gérard

    Re : debutant avec pic

    Bonjour,
    Peux-tu vérifier à l'oscillo que le quartz oscille ?

    Si tu utilises le 628, il faut écrire :
    CMCON = 7 pour inhiber les comparateurs analogiques.

  8. #7
    invite13ed46c1

    Re : debutant avec pic

    aiaiae je debute moi lol

    pour le OPTIONVAL EQU H'0008'
    cela a l'air correct

    "Peux-tu vérifier à l'oscillo que le quartz oscille ?"

    ajouter CMCON = 7 dans __config c'est ça ? je peut essayer

    http://claude.dreschel.free.fr/compo...F84_16F628.htm

    Le PIC16F628 possède deux modes qui permettent de libérer des lignes de ports (RA6 et RA7), le mode ER qui ne nécessite qu'une seule résistance sur RA7 et le mode INTRC (4MHz) qui ne nécessite aucun composant externe libérant ainsi RA6 (sans clockout) et RA7.

    au pire je pourais essayer sur mon 628a de supprimer mon quartz de 4Mhz par celui fourni par le pic enfin non j'arrive meme pas a le faire marche normallement

    pas facile d'apprendre quand on sais meme pas si le composant marche .

  9. #8
    invite092cb13c

    Re : debutant avec pic

    Bonjour
    Tu peux utiliser les feuilles maquettes que j'ai ecrites pour le 16F628, on la trouve sur le site de Bigonoff, je ne me souviens plus si la feuille pour le 16F628A est sur le site de Bigonoff aussi tu peux la trouver sur mon site: http://gedonet.free.fr/aide_pic/aide_pic.htm .
    Bien faire attention à la ram (pour les variables) qui est mappée sur le 16F84 et en trois banks distinctes (sauf les 16 derniers octets) sur le 16F628 ainsi qu'au registre CMCON comme indiqué par Gérard, ces details sont indiqués dans mes fichiers maquettes.
    Gilles

  10. #9
    invite13ed46c1

    Re : debutant avec pic

    tien j'ai essayer avec mon 84a le schema ci dessus avec le hex mais ça ne marche pas non plus

    http://fribotte.free.fr/bdtech/pic/pic.html

    voici le code asm

    Code:
    ; Clignotement d'une LED a l'aide du TIMER
    ;
    ; Ce programme utilise une interruption générée par le timer toutes les 256µs .
    ; A chaque interruption il execute la routine ServiceRtcc qui décremente la variable
    ; TIME.
    ; Le programme principal (dans ce cas BL1) est une boucle qui teste dans
    ; la routine SecondOver si TIME est égal à 0. Si oui, il incrémente le
    ; PORTB. Une LED branchée à la voie 0 du PORTB changera d'état toutes
    ; les 2ms (256µs * 8). Sur la voie 1, toutes les 4 ms ...., sur la voie 7
    ; toutes 256ms (2ms * 128)
    ;
    ; Quartz = 4Mhz
    ;
    
    	list p=16f84,f=inhx8m
    
            __config  B'00000000000001'    ; WDT Disabled, XT Oscillator
    ;
            #include "p16f84.inc"
    ;
    TIME    equ     0x10
    ;
    	org     0
    	goto    Start
    ;
    	org     4
    	goto    ServiceRtcc
    ;
    	org     10
    Start
    	movlw   0     ;make port b outputs
            movwf   PORTB
    ;	movwf	PORTA
    	tris	PORTB
    	tris 	PORTA
    	call    InitRtcc
            clrf    PORTB          ;turn off leds
    	clrf	PORTA
    BL1
    	call    SecondOver      ;wait for 1/2 second
            incf    PORTB,1          ;toggle leds
    	goto    BL1
    ;
    InitRtcc
    	movlw	B'10000000'
    	option
            clrf    TMR0            ;start time
    	movlw   B'10100000'     ;enable interrupts
    	movwf   INTCON          ;       /
            movlw   .8              ;initialize time
    	movwf   TIME
    	return
    ;
    ServiceRtcc
            btfsc   INTCON,T0IF     ;rtcc interrupt?
    	decf    TIME,1            ;yes then dec time
    	clrf    INTCON          ;clr all interrupts
            bsf     INTCON,T0IE     ;enable RTIE
    	bcf	STATUS,Z	; Z=0
    	retfie                  ;not zero then return
    ;
    SecondOver
    	movf    TIME,1          ;check if time = 0
    	btfss   STATUS,Z        ;       /
    	goto    SecondOver      ;no then loop
            movlw   .8              ;load for 1/2 second
    	movwf   TIME
    
    
    
    	return                  
    
    	end
    donc je commance vraiment a me dire que mes pics ne marche pas quelq'un as une methode pour les teste ?

    merci encore de vos aides

    gedonet j'ai pas trop compris pour tes maquetes comment je peut ajouter le code pour la led dans la maquete

  11. #10
    Gérard

    Re : debutant avec pic

    Bonjour,
    Es-tu sûr du programmateur ?

    Fais un essai avec un prog dont tu sois sûr.

    Si tu veux, je peux t'envoyer un hex de cligotement de LED avec IRQ TMR0.

  12. #11
    invite13ed46c1

    Re : debutant avec pic

    je veu bien des hex pour clingotement de led
    cela m'aiderais a ecarte les erreur d'assemblage , et de cablage .

    j'ai les pics suivant 16f84a, 16f628a ,16f876 et le 16f877

    les deux dernier j'ai pas trop toucher

    j'ai le programmateur tout neuf px-700 sur usb c'est un pickit 2 acheter chez selectronics
    http://www.selectronic.fr/article.as...er=80.3535-USB

    j'avais commance par essayer de me faire mon programmateur mais cela n'as jamais marche sur mon port serie j'ai pas de parallele sur mon pc ,

    voila merci pour vos aides

  13. #12
    invite092cb13c

    Re : debutant avec pic

    Bonjour
    Je t'ai ecrit un programme pour faire clignoter une led sur le port A sortie 0, c'est la pin 17, pour un 16F628A avec l'oscillateur interne à 4MHz.
    Il suffit de connecter l'alim 5V sur 5 et 14, la led avec une resistance sur 17, ne rien connecter sur MCLR , pas de quartz.
    La led s'allume 500mS et s'eteind 500mS et ainsi de suite, il y a le source et le HEX.
    Gilles
    Fichiers attachés Fichiers attachés

  14. #13
    invite13ed46c1

    Re : debutant avec pic

    ha merci beaucoup Gillles c'est tres gentil de ta part je vais essayer cela apres pour mon 628

    sinon dans le cours de bigonoff part 1 je n'es pas pu faire marcher mon 16f84,
    hier j'ai continuer a lire la parti 2 et le passage du 84 au 16f876...

    la j'ai tout fais et surprise tout marche impecable , youpi

    donc cela veut dire que mon programmateur marche, que j'ai compris la methode .... et ne laisse pas beaucoup de chance a mon 84 et le 628 ,
    j'ai pas eu de chance a mon debut avec les pic programmateur maison qui a jamais voullu marche deux pic de suite ... "Là où il y a la volonté, il y a un chemin"

    j'espere que mes problemes s'arrete ici , merci a tous pour vos aider
    et a bientot

  15. #14
    Gérard

    Re : debutant avec pic

    Bonjour,
    Comme promis (mais avec un peu de retard), ci joint un zip avec un fichier de clignotement de LED avec interruption Timer0 pour 16F84A.
    C'est écrit en Basic mais la routine d'IRQ est en asm.
    Fichiers attachés Fichiers attachés

  16. #15
    invite13ed46c1

    Re : debutant avec pic

    hooo vraiment il y a du coeur et du partage ici ,
    ça me fais plaisir ces gestes personneles , j'ai reussi a faire marche un de mes pics ce qui laisse les deux 1er comme en panne mais pas sure je vais essayer vos hexa , ça me permetras d'etre sure s'ils sont mort ou pas

    sinon mon idees de avoir une base avec des hex pour plusieurs type de pic pour teste le fonctionement de pic ça pourais etre simpa , pour des gens qui ce trouve seul devant un pic qui marche pas et qui envoyer plusieurs possibilite de disfoctionement soit pic, programmateur , assemblage ...

    enfin bon je vous tien au courant quand meme

    merci encore

  17. #16
    invitee86643f9

    Re : debutant avec pic

    Citation Envoyé par taz6cle Voir le message
    normalement il y a pas de problemme entre ces deux pic c'est les memes
    Le logiciel de programmation "voit" les choses autrement:
    PIC16F84 et PIC16F84A sont deux puces différentes.

  18. #17
    invite092cb13c

    Re : debutant avec pic

    Citation Envoyé par maxitec Voir le message
    Le logiciel de programmation "voit" les choses autrement:
    PIC16F84 et PIC16F84A sont deux puces différentes.
    Bonjour
    Je ne pense pas que l'on puisse vraiment dire que le F84 et F84A soient des puces differentes, il y a tres peux de changement entre les deux, voir la note DS30072, de toute façon si tu choisis 16F84, il n'y aurra pas de probleme pour programmer un 16F84A, je l'ai souvent fait (l'inverse pourrait poser des problemes).
    Ceci dit, ce n'est pas une bonne habitude de selectionner une version pour une autre, car avec d'autres modeles les differences sont plus grandes, par exemple entre 16F628 et 16F628A ou entre 16F87X et 16F87XA.
    Gilles

  19. #18
    invite13ed46c1

    Re : debutant avec pic

    oui vue le code et le projet a etais recompiler avec le bon include je ne passe pas que ça peut poser problemme ,

  20. #19
    invite092cb13c

    Re : debutant avec pic

    Salut
    Attention à la methode de simplement changer les "include" d'un µC pour un autre, cela marche peut etre en C, mais en assembleur, c'est un peut plus subtil, il peut y avoir des differences importantes, la ram n'est probablement pas la même, ni même mappée pareille, certains modules doivent etre desactivés,etc.
    Gilles

  21. #20
    invitef9ed8fd4

    Re : debutant avec pic

    je veux faire le méme programme celui de faire clignoter une led mais avec le pic 16F876 si quelqu'un peut m'expliquer le programme ou bien me donner le programme pour le simuler sur proteus je suis encore débutant en programmation du pic 16F876

  22. #21
    inviteee104586

    Re : debutant avec pic

    Si tu veux des fichiers .hex basiques (led qui clignotte) et les schémas qui correspondent pour tester plusieurs sortes de pic, va voir là : http://www.voti.nl/blink/n_index.html
    Au passage, son programmeur (wisp648) est très bien et marche aussi bien sous windows que sous linux. Pour les connaisseurs, ce type est l'auteur de JAL.

  23. #22
    Gérard

    Re : debutant avec pic

    Citation Envoyé par abdoucasa Voir le message
    je veux faire le méme programme celui de faire clignoter une led mais avec le pic 16F876 si quelqu'un peut m'expliquer le programme ou bien me donner le programme pour le simuler sur proteus je suis encore débutant en programmation du pic 16F876
    Bigonoff explique très bien. Et c'est en français.
    http://www.abcelectronique.com/bigonoff/

Discussions similaires

  1. Débutant en robotique : programmation PIC
    Par invite46fed9ea dans le forum Électronique
    Réponses: 22
    Dernier message: 17/06/2012, 10h59
  2. [Debutant] PIC, PWM, Buzzer, et questions diverses
    Par inviteb52e2270 dans le forum Électronique
    Réponses: 4
    Dernier message: 20/07/2008, 13h12
  3. Débutant perdu avec multisim et pic
    Par invitefff2714a dans le forum Électronique
    Réponses: 11
    Dernier message: 24/04/2008, 22h19
  4. choix d'un PIC (pour un débutant)
    Par invite12a2c7c4 dans le forum Électronique
    Réponses: 11
    Dernier message: 31/12/2007, 19h32
  5. PIC: Adresse des Ports .... pour un débutant
    Par invite259f8526 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/10/2007, 19h18
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...