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

PIC en language C : pin d'un port en entree ...??



  1. #1
    guilbut

    PIC en language C : pin d'un port en entree ...??


    ------

    bonjour ,
    je veut me mettre à la programmation de pic en language C et bloque sur un truc tout con.

    je veut juste mettre un pin en entree et pour pouvoir tout simplement lire son etat et le recopier sur une sortie (sans utiliser de quelconques interuption).

    j'ai fait un programme tout con mais ça ne marche pas !...

    voici le main() de mon programe :

    void main (void)
    {
    // on configure le pin 0 du port A en sortie
    TRISAbits.TRISA0 = 0;
    // on configure le pin 1 du port A en entree
    TRISAbits.TRISA1 = 1;

    while(1)
    {
    // on recopie l'etat du port 1 sur le port 0
    PORTAbits.RA0 = PORTAbits.RA1;

    }
    }


    pour info le pic est un 18F252 le meme que celui utiliser par http://mathieu.agopian.free.fr/

    sinon voilà le fichier c en entier :

    #include <delays.h> // fonctions de délais
    #include <p18f252.h>// déclarations pour le PIC18F252

    void main (void)
    {
    // on configure le pin 0 du port A en sortie
    TRISAbits.TRISA0 = 0;
    // on configure le pin 1 du port A en entree
    TRISAbits.TRISA1 = 1;

    while(1)
    {
    // on recopie l'etat du port 1 sur le port 0
    PORTAbits.RA0 = PORTAbits.RA1;

    }
    }


    #pragma romdata CONFIG
    _CONFIG_DECL (
    _CONFIG1H_DEFAULT & _OSC_HSPLL_1H,
    _CONFIG2L_DEFAULT & _PWRT_ON_2L,
    _CONFIG2H_DEFAULT & _WDT_OFF_2H,
    _CONFIG3H_DEFAULT,
    _CONFIG4L_DEFAULT & _STVR_OFF_4L & _LVP_OFF_4L
    & _DEBUG_OFF_4L,
    _CONFIG5L_DEFAULT & _CP0_OFF_5L & _CP1_OFF_5L
    & _CP2_OFF_5L & _CP3_OFF_5L,
    _CONFIG5H_DEFAULT & _CPB_OFF_5H & _CPD_OFF_5H,
    _CONFIG6L_DEFAULT & _WRT0_OFF_6L & _WRT1_OFF_6L
    & _WRT2_OFF_6L & _WRT3_OFF_6L,
    _CONFIG6H_DEFAULT & _WPC_OFF_6H & _WPB_OFF_6H
    & _WPD_OFF_6H,
    _CONFIG7L_DEFAULT & _EBTR0_OFF_7L & _EBTR1_OFF_7L
    & _EBTR2_OFF_7L & _EBTR3_OFF_7L,
    _CONFIG7H_DEFAULT & _EBTRB_OFF_7H
    );
    #pragma romdata

    -----

  2. Publicité
  3. #2
    Gérard

    Re : PIC en language C : pin d'un port en entree ...??

    Je ne connais pas bien ce PIC, mais sur les 16Fxxx, le port A est par défaut en entrées ANA (pour ceux comprenant un CAN), il faut donc le mettre d'abord en 'numérique'.
    Gérard.

  4. #3
    guilbut

    Re : PIC en language C : pin d'un port en entree ...??

    bon ben merci il manquait juste ADCON1 = 0x07 !!!!!!!!

  5. #4
    taz6cle

    Re : PIC en language C : pin d'un port en entree ...??

    j'ai le meme problemme avec ce cours , je peut mettre le hex fourni par le site directement sur mon pic et ça marche mais quand je veut compiler le fichier cource par moi meme ça marche pas

    je pense que ça vien du romdata CONFIG je trouve cette declaration un peut barbare

    je peut l'ajouter ou ce ADCON1 = 0x07 svp

    voici le code
    Code:
    #include <delays.h> // fonctions de délais
    #include <p18f252.h>// déclarations pour le PIC18F252
    
    void main (void)
    {
    	// on configure le pin 0 du port A en sortie
    	TRISAbits.TRISA0 = 0;
    	
    	while(1)
    	{
    		// on allume la led en mettant le pin 0 à l'état haut
    		PORTAbits.RA0 = 1;
    		// on attends environ 0,25s à 40Mhz
    		Delay10KTCYx(0);
    		// on éteint la led en mettant le pin 0 à l'état bas
    		PORTAbits.RA0 = 0;
    		// on attends environ 0,25s à 40Mhz
    		Delay10KTCYx(0);
    	}
    
    }
    
    #pragma romdata CONFIG
    _CONFIG_DECL (
    _CONFIG1H_DEFAULT & _OSC_HSPLL_1H,
    _CONFIG2L_DEFAULT & _PWRT_ON_2L,
    _CONFIG2H_DEFAULT & _WDT_OFF_2H,
    _CONFIG3H_DEFAULT,
    _CONFIG4L_DEFAULT & _STVR_OFF_4L & _LVP_OFF_4L 
       & _DEBUG_OFF_4L,
    _CONFIG5L_DEFAULT & _CP0_OFF_5L & _CP1_OFF_5L 
       & _CP2_OFF_5L & _CP3_OFF_5L,
    _CONFIG5H_DEFAULT & _CPB_OFF_5H & _CPD_OFF_5H,
    _CONFIG6L_DEFAULT & _WRT0_OFF_6L & _WRT1_OFF_6L 
       & _WRT2_OFF_6L & _WRT3_OFF_6L,
    _CONFIG6H_DEFAULT & _WPC_OFF_6H & _WPB_OFF_6H 
       & _WPD_OFF_6H,
    _CONFIG7L_DEFAULT & _EBTR0_OFF_7L & _EBTR1_OFF_7L 
       & _EBTR2_OFF_7L & _EBTR3_OFF_7L,
    _CONFIG7H_DEFAULT & _EBTRB_OFF_7H
    ); 
    #pragma romdata


    Executing: "C:\MCC18\bin\mcc18.exe" -p=18F252 /i"C:\MCC18\h" "led-1.c" -fo="led-1.o" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
    E:\c18\led-1.c:21:Warning [2003] _CONFIG_DECL macro has been deprecated; please utilize #pragma config
    MPLAB C18 v3.21 (demo)
    Copyright 2000-2008 Microchip Technology Inc.
    Days remaining until demo becomes feature limited: 58
    E:\c18\led-1.c:27:Error [1013] error in pragma directive
    Halting build on first failure as requested.
    ----------------------------------------------------------------------
    Release build of project `E:\c18\test-c18.mcp' failed.
    Mon Sep 01 21:16:42 2008
    ----------------------------------------------------------------------
    BUILD FAILED

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

    Post Re : PIC en language C : pin d'un port en entree ...??

    Bonjour,

    Il suffit d'ajouter la ligne de cette manière dans ton programme :

    // Configurer toutes les broches du PORT A en mode entrées digitales
    ADCON1 = 0x07

    // on configure le pin 0 du port A en sortie
    TRISAbits.TRISA0 = 0;


    NB : si tu veux impérativement avoir RA0 en entrée tu es obligé de programmer tout le port en mode Entrées digitales. Donc si tu veux utiliser des broches en analogiques (PORTA), il faudra changer ton choix. Voir chapitre 17 page 182 de la datasheet du PIC18F252

    Bonne lecture
    Here to help ;=)

  8. #6
    taz6cle

    Re : PIC en language C : pin d'un port en entree ...??

    ok j'ai compris pour cela , mais mon problemme venais de la declaration du config

    donc voici comment j'ai fais pour mon fichier

    Code:
    #include <delays.h> // fonctions de délais
    #include <p18f252.h>// déclarations pour le PIC18F252
    
    #pragma config WDT = OFF
    #pragma config OSC=HSPLL
    #pragma config PWRT=ON
    #pragma config STVR=OFF
    #pragma config LVP=OFF
    #pragma config DEBUG=OFF
    #pragma config CP0=OFF
    #pragma config CP1=OFF
    #pragma config CP2=OFF
    #pragma config CP3=OFF
    #pragma config CPB=OFF
    #pragma config CPD=OFF
    #pragma config WRT0=OFF
    #pragma config WRT1=OFF
    #pragma config WRT2=OFF
    #pragma config WRT3=OFF
    //#pragma config WPC=OFF
    //#pragma config WPB=OFF
    //#pragma config WPD=OFF
    #pragma config EBTR0=OFF
    #pragma config EBTR1=OFF
    #pragma config EBTR2=OFF
    #pragma config EBTR3=OFF
    #pragma config EBTRB=OFF
    
    void main (void)
    {
    	// on configure le pin 0 du port A en sortie
    	TRISAbits.TRISA0 = 0;
    	TRISAbits.TRISA1 = 0;
    	
    	while(1)
    	{
    		// on allume la led en mettant le pin 0 à l'état haut
    		PORTAbits.RA0 = 1;
    Delay10KTCYx(0);
    		PORTAbits.RA1 = 0;
    		// on attends environ 0,25s à 40Mhz
    		Delay10KTCYx(0);
    		// on éteint la led en mettant le pin 0 à l'état bas
    		PORTAbits.RA0 = 0;
    Delay10KTCYx(0);
    		PORTAbits.RA1 = 1;
    		// on attends environ 0,25s à 40Mhz
    		Delay10KTCYx(0);
    	}
    
    }
    je pense encore avoir des problemmes avec le config mais la compil marche

  9. Publicité
  10. #7
    microchip

    Re : PIC en language C : pin d'un port en entree ...??

    Bonjour,

    La syntaxe utilisée pour les bits de configuration est correcte.
    Pour tous les PIC18, tu peux trouver les noms réservés dans l'aide de MPLAB SI tu as installé correctement le compilateur C18 (cocher toutes les cases des options lors de l'installation) :
    Dans MPLAB : Help > Topics > sous [Language Tools] > PIC18 Config Settings.

    Ce document est également visible dans un sous-répertoire du compilateur : c:\MCC18\doc\hlpPIC18ConfigSet .chm

    Si tu souhaites rendre ton programme un peu plus lisible, tu peux également regrouper plusieurs bits des configuration sur la même ligne. Exemple :
    Au lieu de :
    #pragma config CP0=OFF
    #pragma config CP1=OFF
    #pragma config CP2=OFF
    #pragma config CP3=OFF
    #pragma config CPB=OFF
    #pragma config CPD=OFF

    tu peux écrire :
    #pragma config CP0=OFF, CP1=OFF, CP2=OFF, CP3=OFF, CPB=OFF, CPD=OFF
    Here to help ;=)

Discussions similaires

  1. Fort courent sur uen entrée d'un PIC
    Par Djludo dans le forum Électronique
    Réponses: 10
    Dernier message: 23/05/2007, 21h26
  2. PIC protection d'un port
    Par traxxa dans le forum Électronique
    Réponses: 3
    Dernier message: 03/04/2007, 22h33
  3. Photo d'un pin ? Mais quel type de pin ?
    Par sanglap dans le forum Biologie
    Réponses: 2
    Dernier message: 25/03/2007, 11h05
  4. pic passer d' entrée en sortie sur une pin
    Par alainav1 dans le forum Électronique
    Réponses: 5
    Dernier message: 06/11/2006, 10h24
  5. mise à 5V des entrée d'un pic
    Par alainav1 dans le forum Électronique
    Réponses: 7
    Dernier message: 16/01/2006, 10h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.