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

PIC18F4525 + Programmateur Schaer+ + WinPIC



  1. #1
    Linternautedu94

    Smile PIC18F4525 + Programmateur Schaer+ + WinPIC


    ------

    Bonjour à tous!

    Ne connaissant pas trop les PIC, mais souhaitant tout de même m'y mettre (car je connais le C), j'ai débuté par un petit montage (normalement) simple, mais qui ne fonctionne malheureusement pas...

    Le principe est simple. J'ai une LED et un capteur de lumière. Quand il n'y a pas de lumière (Vcapteur <0.5V), ma LED s'allume. Au contraire, quand il y a de la lumière, ma LED s'éteint...

    Le truc, c'est que je ne sais pas si cela vient de mon montage, de mon programmateur Schaer+ ou de mon code C... (le truc à rendre fou...).

    J'avais déjà testé mon programmateur en faisant clignoter la LED à l'aide de mon PIC et ça marchait... Donc, j'pense que cela doit venir de mon PIC ou de mon bout de code C. PIC mort? bout de code C faux? En tout cas, le voici :

    Code:
    #include <p18f4525.h>
    #include <adc.h>
    
    void configure_pic_18F4525(void);
    void config_pic_oscillator(void);
    void config_pic_ports(void);
    void config_pic_can(void);
    int light_state(void);
    
    void main(void)
    {
    	int etat=2;
    	configure_pic_18F4525();			// Configure l'ensemble des "périphériques" utilisés par le PIC pour cette application.
    	while(1)
    	{
    		etat=light_state();
    		if(etat==1)	PORTAbits.RA1=0;	// Si lumière detectée, on éteint la LED.
    		if(etat==0)	PORTAbits.RA1=1;	// Si pas de lumière, on allume la LED.
    	}
    }
    
    void configure_pic_18F4525(void)
    {
    	config_pic_oscillator();			// Effectue les reglages de l'oscillateur du PIC en mode interne à 8Mhz.
    	
    	config_pic_ports();					// Configure l'ensemble des ports utilisés pour le capteur de lumière
    	
    	config_pic_can();					// Configure l'ADC sur la patte RA0/AN0 pour convertir la tension sortant du capteur de lumière.
    }
    
    
    void config_pic_oscillator(void)
    {
    	/**************** CONFIGURATION DE L'OSCILLATEUR DU PIC *********************/
    	
    	OSCCONbits.SCS1=0;				//
    	OSCCONbits.SCS0=1;				// Utilisation de l'oscillateur interne du PIC
    	
    	OSCCONbits.IRCF0=1;				//
    	OSCCONbits.IRCF1=1;				// Fréquence d'utilisation de l'oscillateur = 8Mhz.
    	OSCCONbits.IRCF2=1;				//
    	
    	/****************************************************************************/	
    }
    
    void config_pic_ports(void)
    {
    	TRISAbits.TRISA0=1;				// Configure la patte RA0 en entrée pour le capteur de lumière
    	TRISAbits.TRISA1=0;				// Configure la patte RA1 en sortie pour la LED.
    }
    
    void config_pic_can(void)
    {
    	ADCON0bits.CHS3=0;				// 
    	ADCON0bits.CHS2=0;				// Configure le CAN sur la patte (pin) RA0/AN0.
    	ADCON0bits.CHS1=0;				// 
    	ADCON0bits.CHS0=0;				// 
    		
    	ADCON0bits.ADON=0;				// Active le CAN sur la patte (pin) RA0/AN0.
    	
    									// bit 7 et bit 6 : pas important (toujours à 0).
    									// bit 5 : Vref-=Vss=GND
    	ADCON1=0b00000001;				// bit 4 : Vref+=Vdd=+5V
    
    									// bit3 à 0 (4) : toutes les entrées sont en analogiques. (AN0 à AN12).
    	ADCON2=0b10101100;				// bit 7 : justification à droite, 
    									// bit 6 : pas important (toujours à 0).
    									// bit 5 à 3 (3) : 12* Tad. (pour conversion sur 10 bits).
    									// bit 2 à 0 (3) : Fosc/4 = 2Mhz. (car oscillateur interne utilisé à 8Mhz, sans PLL).
    }
    
    int light_state(void)
    {
    	int val_brute=0, statut=2;
    	float Tension=0;
    	OpenADC(ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_12_TAD,
    			ADC_CH0 & ADC_INT_OFF & ADC_REF_VDD_VSS,
    			ADC_2ANA); // "Inutile" si config_pic_can correct, ligne mise pour être sûr que cela marche... :'(
    			
    	ConvertADC();					// Lance une conversion à partir de l'ADC configuré dans config_pic_can.
    	while(BusyADC());				// Tant que la conversion n'est pas terminée, on ne récupère pas la valeur...
    									// Renvoi 1 si conversion en cours (=> reste dans le while), 0 sinon (=> sort du while).
    	val_brute = ReadADC();
    	Tension = (val_brute * 5)/1023;	// Permet de récupérer directement la tension transmise par le capteur de lumière, 5V (max) sur 10bits.
    	
    	if(Tension >= 0.5)	statut=1;	// Présence de lumière! (car supérieur à 0.5Volts)
    	if(Tension < 0.5)	statut=0;	// Pas de lumière!
    	CloseADC();
    	
    	return statut;
    }
    Enfin, pour donner un maximum de détails, j'ai vérifié les tensions d'alim (fournies par un 78M05 : +5V) et tout semble correct. La pin Master CLeaR (bar) est reliée au +5V. J'ai mis mon multimetre sur la patte RA0 avec le capteur débranché (de la broche) et je trouve : 0.64V sur la pin du PIC... Est-ce normal (je pense pas...) ? De plus, j'ai effectué la "configuration bit" sur winPIC avec OSC Oscillator = INT RC - Port on RA6, Port on RA7. Quant au reste, je n'y ai pas touché...

    Tout dernier truc, lorsque j'éffectue un "erase" avec WinPIC, il me retourne : "Success" et après quand je fais un "Blank Check", le soft me renvoie : "Device is NOT blank". C'est à ne plus rien comprendre... D'autant plus que j'en suis à mon 5ieme jour où je ne fais que lire, lire et lire des datasheet + commentaires, reply etc.. pour un résultat quasi-nul

    Merci de m'aider car là, je sais plus où donner de la tête...
    Merci encore et bonne soirée ou bonne journée @ tous.

    -----

  2. #2
    Linternautedu94

    Re : PIC18F4525 + Programmateur Schaer+ + WinPIC

    UP s'il vous plait!

    Toujours pas de réponses? :'(

  3. #3
    Linternautedu94

    Thumbs down Re : PIC18F4525 + Programmateur Schaer+ + WinPIC

    C'est bon, j'ai réglé mon pb tout seul ( comme un grand ) vu que personne ne voulait visiblement m'aider... <_<

    A+

Sur le même thème :

Discussions similaires

  1. programmateur
    Par sophiap80 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/09/2008, 22h28
  2. WinPic et le port //
    Par arzew dans le forum Électronique
    Réponses: 0
    Dernier message: 30/05/2008, 12h25
  3. Programmateur de PIC sans programmateur
    Par pseudoblogeus dans le forum Électronique
    Réponses: 7
    Dernier message: 15/01/2008, 22h38
  4. Programmateur de PICs SCHAER
    Par arcane86 dans le forum Électronique
    Réponses: 2
    Dernier message: 14/05/2007, 17h56
  5. programmateur
    Par sdow dans le forum Électronique
    Réponses: 3
    Dernier message: 06/10/2006, 12h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.