Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 15 sur 21

conserver programme dans pic18f

  1. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    conserver programme dans pic18f

    Bonjour,


    J'ai réalisé un programme pour un pic18f4520, seul problème, je ne sais absolument pas comment faire pour que le programme se lance une fois débranché de l'ordi et que le systeme soit alimenté plus tard par interrupteur.... pouvez vous m'expliquer ? je n'ai pas trouvé de réponse sur internet, ou je n'ai pas su quoi taper

    il y a bien tout le système d'alimentation avec pile + régulateur.

    Je vous remercie

    -----

     


    • Publicité



  2. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    Alors j'ai continué de chercher, et j'ai lu qu'il fallait programmer en mode production.

    J'ai donc utilisé MPlab X avec pickit 3 et j'ai importé le fichier .hex à priori tout c'est bien déroulé (cf photo)

    Capture du 2017-05-18 17-56-43.png


    mais je pensais qu'après avoir retiré le pickit et alimenté le circuit, le programme se serait lancé mais non... Avez vous une idée de pourquoi ?
     

  3. Seb.26

    Date d'inscription
    juin 2005
    Localisation
    Rhône-Alpes
    Messages
    2 214

    Re : conserver programme dans pic18f

    poste le schéma électronique qui est autours de ton CPU
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>
     

  4. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    la voici :

    Capture du 2017-05-18 18-30-26.png

    au début, j'utilisais pickit2. mais comme IPE ne prend que le 3... j'ai changé après.
     

  5. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    Alors par contre au niveau du programme, je n'ai pas fait particulièrement de configuration. Je n'ai jamais essayé d’implémenté un programme avant pour pouvoir l'utiliser sans l'ordi après.
    Faut il configurer certaines choses en particulier ?

    le voiçi, qui fonctionne très bien en mode debug

    Code:
    #include <xc.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <pic18f4520.h>
    #pragma config OSC = INTIO67
    #pragma config WDT = OFF,LVP=ON
    #define _XTAL_FREQ 32000000 
    
    //*Variable liee au 7seg */**********************
    	
    unsigned char TAB7SEG[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
     int tps_leds=0,i=0,cpt=0,j=0,duree=300;
    unsigned int heures=0,minutes=0,secondes=0;
    int TAB_BCD[4]={0};
    
    
    void main (void)
    {
    
    	OSCCON|=0x70; // oscillo intern Ã* 8 Mhz
    	OSCTUNE=0x4F; // Utilisaion de la PLL ->*4 = 32Mhz
        //HLVDCONbits.HLVDEN=1;
        //HLVDCON=(HLVDCON|0x05)&0xF5;
        TRISE&=0XF0;
        TRISA=0x00;
        TRISD=0x00;
        TRISC&=0xE0;
        LATD=0x1F;
        ADCON1 = 0xF ; 
        TRISCbits.RC7=0;
        INTCONbits.RBIF = 0;
        INTCONbits.RBIE = 0;
        INTCONbits.INT0E = 1; //enable Interrupt 0 (RB0 as interrupt)
        INTCON2bits.INTEDG0 = 1; //cause interrupt at falling edge
        INTCONbits.INT0F = 0; //reset interrupt flag
    
        //Initialistation interruption0 
        TRISBbits.RB0 = 1; //set RB0 as Input
    	INTCON2bits.INTEDG0=0;
        INTCON3bits.INT2IP=1;
        INTCONbits.INT0IF=0;
        
        //Initialistation interruption1
        TRISBbits.RB1 = 1;
        INTCON2bits.INTEDG1=0;
        INTCON3bits.INT1IP=1;
        INTCON3bits.INT1IF=0;
        
        //Initialistation interruption2
        TRISBbits.RB2 = 1;
        INTCON2bits.INTEDG2=0;
        INTCON3bits.INT2IP=1;
        INTCON3bits.INT2IF=0;
        
        //Initialistation timer0
    
    	INTCONbits.TMR0IE=0;
    	INTCONbits.TMR0IF=0;
    	T0CON=0x03;
    	TMR0H=0xC2;
    	TMR0L=0xF6;
    
        
        //Initialistation timer2
    
    	T2CON=0x7A;
    	TMR2=0;
        PR2=125;
    	IPR1bits.TMR2IP=0;
        PIR1bits.TMR2IF=0;
        PIE1bits.TMR2IE=1;
        
        //Deverouillage
        INTCONbits.INT0IE=1;
        RCONbits.IPEN=1;
        INTCONbits.PEIE=1;
        INTCON3bits.INT1E=1;
        INTCON3bits.INT2E=1;
    	T2CON|=0x04;
        INTCON|=0xC0;
    
       	while(1)
    	{ 
            
            
           
        affiche_code (duree);
    	}
     


    • Publicité



  6. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    74
    Messages
    61 778

    Re : conserver programme dans pic18f

    Tu peux montrer sur quoi va LED_B et LED_H ?
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  7. RISC

    Date d'inscription
    novembre 2006
    Messages
    3 701

    Re : conserver programme dans pic18f

    Salut,

    quelques corrections dans ton code en caractères gras
    Code:
    #include <xc.h>
    #include <stdlib.h>                // semble inutile sauf si tu utilises les librairies printf,....
    #include <stdio.h>                 // semble inutile sauf si tu utilises les librairies printf,....
    //#include <pic18f4520.h>   ligne inutile (même chose que <xc.h> ci-dessus
    #pragma config OSC = INTIO67
    #pragma config WDT = OFF,LVP=OFF   // LVP doit être OFF
    #define _XTAL_FREQ 32000000 // semble inutile sauf si tu utilises les macros __delay...... 
    
    //*Variable liee au 7seg */**********************
    	
    unsigned char TAB7SEG[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
     int tps_leds=0,i=0,cpt=0,j=0,duree=300;
    unsigned int heures=0,minutes=0,secondes=0;
    int TAB_BCD[4]={0};
    
    
    void main (void)
    {
    
    	OSCCON|=0x70; // oscillo intern Ã* 8 Mhz
    	OSCTUNE=0x4F; // Utilisaion de la PLL ->*4 = 32Mhz
        //HLVDCONbits.HLVDEN=1;
        //HLVDCON=(HLVDCON|0x05)&0xF5;
        TRISE&=0XF0;
        TRISA=0x00;
        TRISD=0x00;
        TRISC&=0xE0;
        LATD=0x1F;
        ADCON1 = 0xF ; 
        TRISCbits.RC7=0;
        INTCONbits.RBIF = 0;
        INTCONbits.RBIE = 0;
    
        INTCON2bits.INTEDG0 = 1; //cause interrupt at falling edge
        INTCONbits.INT0F = 0; //reset interrupt flag
        INTCONbits.INT0E = 1; //enable Interrupt 0 (RB0 as interrupt)   // a mettre après les 2 autres lignes
    
        //Initialistation interruption0 
        TRISBbits.RB0 = 1; //set RB0 as Input
    	INTCON2bits.INTEDG0=0;
        INTCON3bits.INT2IP=1;
        INTCONbits.INT0IF=0;
        
        //Initialistation interruption1
        TRISBbits.RB1 = 1;
        INTCON2bits.INTEDG1=0;
        INTCON3bits.INT1IP=1;
        INTCON3bits.INT1IF=0;
        
        //Initialistation interruption2
        TRISBbits.RB2 = 1;
        INTCON2bits.INTEDG2=0;
        INTCON3bits.INT2IP=1;
        INTCON3bits.INT2IF=0;
        
        //Initialistation timer0
    
    	INTCONbits.TMR0IE=0;
    	INTCONbits.TMR0IF=0;
    	T0CON=0x03;
    	TMR0H=0xC2;
    	TMR0L=0xF6;
    
        
        //Initialistation timer2
    
    	T2CON=0x7A;
    	TMR2=0;
        PR2=125;
    	IPR1bits.TMR2IP=0;
        PIR1bits.TMR2IF=0;
        PIE1bits.TMR2IE=1;
        
        //Deverouillage
        INTCONbits.INT0IE=1;
        RCONbits.IPEN=1;
        INTCONbits.PEIE=1;
        INTCON3bits.INT1E=1;
        INTCON3bits.INT2E=1;
    	T2CON|=0x04;
        INTCON|=0xC0;
    
       	while(1)
    	{ 
                       affiche_code (duree);    // ou est cette fonction ???
    	}
    Dernière modification par Antoane ; 19/05/2017 à 00h40. Motif: Réparation balise quote
    Ma marotte ? les microcontrôleurs ;=)
     

  8. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    LEDS_B et LEDS_H vont sur la grille d'un transistor. Je pilote des lignes de leds via ceux-ci

    Voilà le schéma complet. Le problème viendrait d'une des pattes ?

    schema_pic2.png
    Dernière modification par jerome0 ; 19/05/2017 à 07h57.
     

  9. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    a en fait je n'ai pas conné tout tout tout le programme car je me suis dit que le problème venait sûrement du "haut" mais le voici:

    Code:
    /*
     * File:   newmain.c
     * Author: asus
     *
     * Created on 12 mai 2017, 09:30
     */
    #include <xc.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <pic18f4520.h>
    #pragma config OSC = INTIO67
    #pragma config WDT = OFF,LVP=ON
    #define _XTAL_FREQ 32000000 
    
    //*Variable liee au 7seg */**********************
    	
    unsigned char TAB7SEG[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
     int tps_leds=0,i=0,cpt=0,j=0,duree=300;
    unsigned int heures=0,minutes=0,secondes=0;
    int TAB_BCD[4]={0};
    
    //*Variable liee au timer */*********************/
    int pause=1;
    double pourcent=0;
    double Recharge=0;
    double RefTemps=0;
    double temps=0,temps_ligne=0;
    int cptModulation=5;
    int ligne_active=0x10;
    
    //*variable de la mesure */**********************/
    
    int coefficient=1;
    signed int NbIncr = 0;
    int A=0;
    int B=0;
    char pret=0;
    
    void decode_bcd(unsigned int temps)  // Attention au type du tableau par rapport aux calculs
    {
    	heures=temps/3600;
    	minutes=(temps%3600)/60;
    	secondes=temps%60;
    
    	if(heures)
    	{
    		TAB_BCD[2]=heures/10;
    		TAB_BCD[3]=heures%10;
    		TAB_BCD[0]=minutes/10;
    		TAB_BCD[1]=minutes%10;
    	}
    	else
    	{
    		TAB_BCD[2]=minutes/10;
    		TAB_BCD[3]=minutes%10;
    		TAB_BCD[0]=secondes/10;
    		TAB_BCD[1]=secondes%10;
    	}
    }
    
    
    void affiche_code ( unsigned int duree_sablier )
    {
    
    decode_bcd(duree_sablier); 
    	for(i=0;i<=100;i++)
    	{
    		LATE = 6;                      // port de transition
    	 	LATA = TAB7SEG[TAB_BCD[3]];  // envoi le numero dans le port D ( Qu'on ne vois pas car port E = 6)
    	  	LATE=3;                      // selection du port associée au numero
    		__delay_us (200);
    
    		LATE = 6;
     	 	LATA = TAB7SEG[TAB_BCD[2]];
      		LATE=2;
    		__delay_us (200);
    
    		LATE = 6; 
    	 	LATA = TAB7SEG[TAB_BCD[1]];
    	  	LATE=1;
    		__delay_us (200);
    
    		LATE = 6;
      		LATA = TAB7SEG[TAB_BCD[0]];
    		LATE = 0;
    		__delay_us (200);
    	}
    }
    
    void mesure_time(void)//unsigned long time
    {
    	INTCON3|=0x18;
    	while(pret==0)
    	{
    		affiche_code(duree);
    	}
    	INTCON3&=0xE7;
    }
    
    void reglage_modulation(void)
    {
    	pourcent=(double)temps_ligne/(double)RefTemps;	// pourcent de type double /*********************************************/
    	if(pourcent<=0.05)
    	{
    		TMR0H=0xD6;								// Ici, on limite le % de luminosité a 5% et 95% on precharge le timer en fonction.
    		TMR0L=0xFB;								// 0xD7BB en enlevant 48 cycles
    	}
    	else if(pourcent>=0.95)
    	{
    		TMR0H=0xFE;
    		TMR0L=0x0B;
    	}
    	else
    	{
    		Recharge=55535-(pourcent*10000);		// ATTENTION, A VOIR, PAS FORCEMENT AU BON ENDROIT +
    		TMR0H=Recharge/0x0100;
    		TMR0L=Recharge-(TMR0H*0x0100);
    	}
    }
    
    void main (void)
    {
    
    	OSCCON|=0x70; // oscillo intern Ã* 8 Mhz
    	OSCTUNE=0x4F; // Utilisaion de la PLL ->*4 = 32Mhz
        //HLVDCONbits.HLVDEN=1;
        //HLVDCON=(HLVDCON|0x05)&0xF5;
        TRISE&=0XF0;
        TRISA=0x00;
        TRISD=0x00;
        TRISC&=0xE0;
        LATD=0x1F;
        ADCON1 = 0xF ; 
        TRISCbits.RC7=0;
        INTCONbits.RBIF = 0;
        INTCONbits.RBIE = 0;
        INTCONbits.INT0E = 1; //enable Interrupt 0 (RB0 as interrupt)
        INTCON2bits.INTEDG0 = 1; //cause interrupt at falling edge
        INTCONbits.INT0F = 0; //reset interrupt flag
    
        //Initialistation interruption0 
        TRISBbits.RB0 = 1; //set RB0 as Input
    	INTCON2bits.INTEDG0=0;
        INTCON3bits.INT2IP=1;
        INTCONbits.INT0IF=0;
        
        //Initialistation interruption1
        TRISBbits.RB1 = 1;
        INTCON2bits.INTEDG1=0;
        INTCON3bits.INT1IP=1;
        INTCON3bits.INT1IF=0;
        
        //Initialistation interruption2
        TRISBbits.RB2 = 1;
        INTCON2bits.INTEDG2=0;
        INTCON3bits.INT2IP=1;
        INTCON3bits.INT2IF=0;
        
        //Initialistation timer0
    
    	INTCONbits.TMR0IE=0;
    	INTCONbits.TMR0IF=0;
    	T0CON=0x03;
    	TMR0H=0xC2;
    	TMR0L=0xF6;
    
        
        //Initialistation timer2
    
    	T2CON=0x7A;
    	TMR2=0;
        PR2=125;
    	IPR1bits.TMR2IP=0;
        PIR1bits.TMR2IF=0;
        PIE1bits.TMR2IE=1;
        
        //Deverouillage
        INTCONbits.INT0IE=1;
        RCONbits.IPEN=1;
        INTCONbits.PEIE=1;
        INTCON3bits.INT1E=1;
        INTCON3bits.INT2E=1;
    	T2CON|=0x04;
        INTCON|=0xC0;
    
       	while(1)
    	{ 
            
            
           
        affiche_code (duree);
    	}
        
        
    }
    
    /********************************************************************************/
    /* Mise en place des routines d'interruptions hautes et basses					*/
    /****************************************************²****************************/
    
    /*void interrupt tc_int(void)             // High priority interrupt
    {    
        
    
        if(INTCONbits.INT0IF)  							// Flag d'interruption sur retournement du sablier
    	{	
            duree=600;
    		INTCON&=0xFD;								// on baisse le flag
    	}
    
    
    }
    */
    
    void interrupt low_priority   LowIsr(void)    //Low priority interrupt
    {
    
    
        if(PIR1bits.TMR2IF)									// si flag sur interruption de 20ms
        {
            if(pause==0)									// si "mode reglage"
    		{
    //INTCON2bits.INTEDG2=0;
    //INTCON2bits.INTEDG1=0;
              //  duree=duree+(NbIncr*coefficient);			// au augemente la durée total, en ajoutant le nombre de cran detecte 
               // NbIncr=0;									// * un coeff. on réinitialise ensuite le cran détecté. 
    		
                if(cpt==0)								// Par contre, si on est pret, et qu'on a eu 250 flag (cpt 250 ->0) soit 1s
                {											                   
    			
                    if(tps_leds>0)								// On verifie si les 5s limite du 7seg sont écoulé,
                    {
                		tps_leds--;								//ET s'il reste du temps, on enleve une seconde
                    }
                    duree--;									// on enleve une sec a la duree totale,
                    temps_ligne--;								// ainsi qu'au temps de la ligne active 
                    if(temps_ligne==0)					// Si la ligne est terminé,  
                    {
                        temps_ligne=RefTemps;					// on remet la ligne au temps de ref d'une ligne,
                        LATD^=ligne_active;							// on eteind la ligne fini 
                        LATC^=ligne_active;							// on eteind la ligne fini 
                        ligne_active>>=1;					// on decale la ligne active
                        LATD^=ligne_active;							// on allume la ligne suivante 
                        LATC^=ligne_active;							// on amlume la ligne fini 
                        
                //        LATA=((~PORTD)&0x1F);				// on prend les 5 ligne de leds du haut et on affiche l'inverse-miroir en bas
                    }
                    cpt=275;
                }
                else								// si le temps de ligne n'est pas terminé, ( donc pas à une senconde	
                {
                    cpt--;							// on enleve un flag 	
    
                }
            
                    
                //Partie correspondant  
                if(cptModulation==0)        // Si on a eu 5 flag, soit 20ms
                {
                    
                    PORTD|=ligne_active; 			// on rallume la ligne car Retour en debut de periode
                    PORTC=~PORTD; 	// on prend les 5 ligne de leds du haut et on affiche l'inverse-miroir en bas
                    T0CONbits.TMR0ON=1;            //debut de periode, on lance le timer0
                    cptModulation=5;
                }
                else
                {
                    cptModulation--;
                }
    							// on remet la précharge du Timer 2 pour flagger a 20ms
            
            
            }
            TMR2=0;
            PIR1bits.TMR2IF=0;				// on rebaisse le flag
        }
        if(INTCONbits.TMR0IF)       
    	{
            PORTD&=(~ligne_active);
            PORTC=~PORTD;
            INTCONbits.TMR0IF=0;
            T0CONbits.TMR0ON=0;
            reglage_modulation();			// On est ici en debut de periode,  on va donc regler la modulation de luminosité.	
    	}
    }
    
    
    
    void interrupt high_priority   HighIsr(void)    //Low priority interrupt
    {
        if(INTCONbits.INT0IF)  							// Flag d'interruption sur retournement du sablier
    	{	
            pause^=1;
    		if(!pause)									// si il est pret,
    		{	
                INTCON3bits.INT1E=0;
                INTCON3bits.INT2E=0;
    			tps_leds=5;									// on limite l'affichage des 7seg pendant 5 secondes, 
    			temps_ligne=duree/5;						// on calcule le temps de chaque ligne 
    			RefTemps=temps_ligne;							// que l'on prendra egalement comme reference de ligne
                reglage_modulation();			// On est ici en debut de periode,  on va donc regler la modulation de luminosité.	
    			LATD=0x1F;									// le port D commence avec les 5 lignes hautes alumées 
    			ligne_active=0x10;							// on stock une variable indiquant la ligne modulée
    			LATC=0x00;									// on enteind les leds du bas
    		}	
            else
            {
    
                pause=1;
                INTCON3bits.INT1E=1;
                INTCON3bits.INT2E=1;
            }
            INTCON2bits.INTEDG0^=1;
    		INTCONbits.INT0IF=0;								// on baisse le flag
    	}
        
        
        if(INTCON3bits.INT1IF) //	si flag du A
    	{
            if(INTCON2bits.INTEDG1) //si un front montant + detection avant B
    		{
    			A=1; 
    
    		}
    		else if(INTCON2bits.INTEDG1==0)
    		{
    			if(A&&duree<=14399)
                {
                    duree++;
                }
                else if(A==0&&duree>=1)
                {
                        duree--;
                }
    		}
            INTCON2bits.INTEDG1^=1;
    		INTCON3bits.INT1IF=0;								// je baisse le flag
    	}
        
        
        if(INTCON3bits.INT2IF)								// Meme fonctionnement que pour A 
    	{		
    			A=0;	
    		INTCON3bits.INT2IF=0;
    	}
    
    }
     

  10. DAUDET78

    Date d'inscription
    septembre 2006
    Localisation
    Ile de France
    Âge
    74
    Messages
    61 778

    Re : conserver programme dans pic18f

    Citation Envoyé par jerome0 Voir le message
    Voilà le schéma complet.
    Sauf erreur de ma part, je pense que tu as inversé source et drain de tous tes NMOS.
    As tu fait le calcul, pour dimensionner les PNP et les NMOS du courant crête digit et segment qui passent dedans ?
    Je ne vois qu'un seul condensateur de découplage du Vdd . C'est insuffisant .
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
     

  11. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    Oui exact il ont tous été inversé mais j'ai pu y remédier lors de la pose des composants. Sur la plaque réalisé des pattes on bien été échangé. oui j'avais réalisé les calculs pour les transistors avec vous il y a quelques temps ^^.

    Mais du coup est-ce qu'il y à un problème au niveau du branchement du pickit ? car je n'ai vraiment aucun problème pour le débogage, tout fonction correctement. Seulement impossible de l'implémenter et qu'il fonctionne sans branchement au pc, juste avec interrupteur + pile.
     

  12. antek

    Date d'inscription
    février 2015
    Messages
    7 874

    Re : conserver programme dans pic18f

    Citation Envoyé par jerome0 Voir le message
    Mais du coup est-ce qu'il y à un problème au niveau du branchement du pickit ? car je n'ai vraiment aucun problème pour le débogage . . .
    Si le débuggeur fonctionne c'est que le PICKIT est correctement connecté.
     

  13. jerome0

    Date d'inscription
    novembre 2012
    Messages
    157

    Re : conserver programme dans pic18f

    D'accord, bon c'est déjà un bon point. Mais comment est-ce que l'on fait normalement ?
    j'ai remarqué que lors du chargement du programme il est apparemment écrit dans EEData.
    Pour qu'il fonctionne sans branchement, je ne dois pas écrire dans la flash ?
     

  14. antek

    Date d'inscription
    février 2015
    Messages
    7 874

    Re : conserver programme dans pic18f

    Le programme est chargé en mémoire . . . programme, et je serais étonné qu'il y ait la place en EEPROM.
    Les tuto Microchip expliquent tout ce qu'il faut faire.
     

  15. antek

    Date d'inscription
    février 2015
    Messages
    7 874

    Re : conserver programme dans pic18f

    Citation Envoyé par jerome0 Voir le message
    Seulement impossible de l'implémenter . . .
    Tu peux montrer les copies d'écran qui te font dire celà ?
     


    • Publicité







Sur le même thème :





 

Discussions similaires

  1. Dans quoi peut on conserver le F2 ?
    Par kimcds dans le forum Chimie
    Réponses: 7
    Dernier message: 22/10/2016, 00h24
  2. conserver la memoire en fermant un programme c
    Par lolman34 dans le forum Électronique
    Réponses: 6
    Dernier message: 15/02/2010, 12h54
  3. es-t-il possible de conserver des informations dans la lumiére
    Par meksoft002 dans le forum Matériel - Hardware
    Réponses: 6
    Dernier message: 25/05/2007, 16h26
  4. conserver la chaleur dans une couveuse maison
    Par rvedrune dans le forum Biologie
    Réponses: 2
    Dernier message: 03/03/2007, 13h19
  5. Aide pour programme PIC18F (PIC-->CNA)
    Par strat666 dans le forum Électronique
    Réponses: 1
    Dernier message: 12/06/2006, 21h54