Clignoter LED avec 12F675
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Clignoter LED avec 12F675



  1. #1
    invite3ec71600

    Clignoter LED avec 12F675


    ------

    Bonjour,

    Je débute dans la programmation des PICs. Je cherche à faire clignoter une LED.
    Pour cela, je dispode de :
    - un PIC 12F675, led rouge, résistances...
    - MPLAB
    - compilateur HI TECH
    - Ic Prog
    - un programmateur

    Je précise que je sais écrire un .hex dans le PIC.

    Mon problème concerne l'écriture d'un programme et je souhaite programmer en C

    Voilà mon programme :
    Code:
    #include <pic.h>
    #include <htc.h>
    #include <delay.h>
    #include <delay.c>
    
    void main(void)
    {
    TRISIO = 0b111000; // entree sorties
    //ANSEL = 0;
    CMCON = 0x07; //comparateur desactives
    
    while (1) // boucle infini
       {
         GPIO2 = 1; // sortie GP2 active
         DelayMs(100); // attente
         GPIO2 = 0; // sortie GP2 désactivée
         DelayMs(100); // attente
       }
    }
    (delay.h et delay.c sont fournit avec le compilateur)
    La fonction DelayMs() est definit dans "delay.c"

    La compilation marche sans aucun problème, mais une fois le .hex écrit dans le PIC, il ne se passe rien.
    Y'a til une grossière erreur dans mon programme ?

    Merci d'avance.

    -----

  2. #2
    invite00e5225f

    Re : Clignoter LED avec 12F675

    Salut

    Dans ton programme je vois pas où tu as défini la vitesse de ton horloge (interne, externe?) peut être un début de piste..?

  3. #3
    invitefaaca50b

    Re : Clignoter LED avec 12F675

    definir a l'adresse 2007 dans le registre CONFIG
    ;_INTRC_OSC_NOCLKOUT oscillateur interne I/O sur GP4 et GP5 (4MHz)

  4. #4
    invite3ec71600

    Re : Clignoter LED avec 12F675

    Je souhaite utiliser le timer interne
    Je vais essayer de rajouter la ligne indiquée dans le post précédent.

    Est ce que je peux utiliser la sortie GP2 ou il faut obligatoirement prendre GP4 ou GP5

    Merci

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

    Re : Clignoter LED avec 12F675

    Slt,

    Là tu n'utilises pas le timer !

    Commence par faire clignoter ta LED en utilisant simplement tes ports et les " dalay " ensuite pour le timer on verra car c'est un peu plus compliqué.

    Écris la ligne comme Franck te l'a dis, c'est une ligne qui permet d'initialiser quelques fonctions du µC.

  7. #6
    invite3ec71600

    Re : Clignoter LED avec 12F675

    Je suis tomber sur un truc interressant sur le net et je suis arrivé à ce code et ca marche !

    Je n'ai pas réussi à compiler la ligne de franck 026
    Est ce qu'elle est compatible avec le compilateur HI TECH ?
    Je n'ai pas compris pourquoi je n'utilise pas le timer.

    En tout cas, merci pour tout.


    Code:
    #include <pic.h>
    #include <htc.h>
    #include <delay.h>
    #include <delay.c>
    
    __CONFIG(UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);
    
    void main(void)
    {
       ANSEL = 0;		// Set ports as digital I/O, not analog input
       ADCON0 = 0;		// Arret convertisseur A/D
       CMCON = 7;		// Arret du comparateur
       VRCON = 0;		// Arret Voltage Reference
       GPIO = 0;		// GPIO à 0
       TRISIO = 0x08;
    
    while (1) // boucle infini
       {
         GPIO4 = 1; // sortie GP4 active
         DelayMs(100); // attente
         GPIO4 = 0; // sortie GP4 désactivée
         DelayMs(100); // attente
       }
    }
    Sinon le détail de "delay.c"
    Code:
    #include	"delay.h"
    
    void
    DelayMs(unsigned char cnt)
    {
    #if	XTAL_FREQ <= 2MHZ
    	do {
    		DelayUs(996);
    	} while(--cnt);
    #endif
    
    #if    XTAL_FREQ > 2MHZ	
    	unsigned char	i;
    	do {
    		i = 4;
    		do {
    			DelayUs(250);
    		} while(--i);
    	} while(--cnt);
    #endif
    }
    et celui de "delay.h"
    Code:
    #ifndef	XTAL_FREQ
    #define	XTAL_FREQ	4MHZ		/* Crystal frequency in MHz */
    #endif
    
    #define	MHZ	*1000L			/* number of kHz in a MHz */
    #define	KHZ	*1			/* number of kHz in a kHz */
    
    #if	XTAL_FREQ >= 12MHZ
    
    #define	DelayUs(x)	{ unsigned char _dcnt; \
    			  _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
    			  while(--_dcnt != 0) \
    				  continue; }
    #else
    
    #define	DelayUs(x)	{ unsigned char _dcnt; \
    			  _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
    			  while(--_dcnt != 0) \
    				  continue; }
    #endif
    
    extern void DelayMs(unsigned char);

  8. #7
    invite3ec71600

    Re : Clignoter LED avec 12F675

    En fait, après lecture des datasheet du composant, je viens de comprendre : je n'utilise pas le timer mais l'oscillateur interne qui tourne à 4MHz.
    L'oscillateur est disponible uniquement sur les pattes GP4 et GP5.

    Il y a juste la ligne d'initialisation ou je ne comprend pas tout.

    Merci

  9. #8
    invitefaaca50b

    Re : Clignoter LED avec 12F675

    en utilisant l'option donnée, ca libere GP4 GP5 en I/O...
    Par contre je ne connais pas la maniere de parametrer l'adresse 2007 (config) en C. Juste en asm.
    Par contre, avec winpic, en allant dans le tableau des fuse, on peut le parametrer a la main en clickant sur la bonne option avant de flasher le pic.

Discussions similaires

  1. Code en C pour faire clignoter une led avec un Pic
    Par invitedd558ae9 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/04/2009, 16h30
  2. Clignoter une LED avec intel 8051
    Par invite0d115dab dans le forum Électronique
    Réponses: 2
    Dernier message: 16/12/2007, 13h57
  3. Clignoter une LED avec intel 8051
    Par invite0d115dab dans le forum Électronique
    Réponses: 0
    Dernier message: 16/12/2007, 09h42
  4. clignoter une led avec pic 16F873
    Par invite0ff982b6 dans le forum Électronique
    Réponses: 5
    Dernier message: 26/05/2007, 12h25
  5. COMMENT ,faire clignoter 4 LED avec un microswitch ?
    Par invite6022410d dans le forum Électronique
    Réponses: 3
    Dernier message: 03/05/2006, 18h14
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...