PIC 16f818: y a plus rien qui sort !!!!
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

PIC 16f818: y a plus rien qui sort !!!!



  1. #1
    invite1ba9a743

    Unhappy PIC 16f818: y a plus rien qui sort !!!!


    ------

    Hello!
    Je me trouve devant un petit problème (qui pourrait me couter mon TPE si je ne le résouds pas): j'utilise un PIC 16f818 que j'ai programmé avec Flowcode puis (euh, pas moyen de retrouver le nom de ce logiciel qui finit par "lab" et qui sert à transférer le programme...). Bref, mes composants soudés, je place le pic sur son slot, et... Il fait complètement n'importe quoi!!! Les diodes s'allument dans tous les sens... Bref c'est beau mais c'est pas ce que j'attends.
    Le lendemain, c'est à dire aujourd'hui, j'essaie de le reprogrammer (après avoir effacé la mémoire bien-sûr), je le teste... Et là, plus rien. Rien ne s'allume.
    Sachant que j'ai eu un peu de mal à le manipuler, notamment pour le rentrer dans son slot (tordu des pattes, etc...), je me dis que je l'ai sûrement tué vu que toutes les connexions sont bonnes.
    Je voudrais juste savoir si vous pensez qu'un PIC peut être mort à cause d'une manipulation physique un peu euh... maladroite?
    Merci d'avance!

    -----

  2. #2
    invitee86643f9

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Je voudrais juste savoir si vous pensez qu'un PIC peut être mort à cause d'une manipulation physique un peu euh... maladroite?
    Si les broches ne sont pas cassées, rien de grave.
    Tu peux vérifier si les Pin font toujours un bon contact avec le "support".

  3. #3
    invite5637435c

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Salut,

    si les pattes ont été tordues au delà des pliages et donc à hauteur du boitier, il se peut qu'il est irrémédiablement souffert, mais il faut quand même y aller.
    La cause du dysfonctionnement est peut-être juste au niveau soft.

    Il faudrait injecter un programme qui permette de tester les I/O, si tu as des leds tu les fais clignoter avec une routine de base.
    Je suppose que tu voulias parler de MPlab.

  4. #4
    f6bes

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bsr Zanzan,
    Quel genre d'oscillateur ?
    Faudrait etre sur qu'il oscille pour commençer.
    A+

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

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Salut,

    Ou plus simplement, par erreur de config lors de la reprogrammation, avoir passé le PIC en mode programmation LVP alors que le programmateur ne le permet pas...

    David.

  7. #6
    invite1ba9a743

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bonjour tout le monde et désolé pour le temps de réponse!!!
    A vrai dire je ne comprends pas un traître mot de ce que vous dites!!
    Alors j'ai tenté un petit programme tout con qui allume des diodes: rien du tout...
    Par contre je ne vois pas du tout ce que peut être un oscillateur, ni la programmation LVP.
    Je sais par contre que d'autres groupes utilisent le même matériel que moi et sans plus de connaissance que moi, ce qui me pousse à croire que ça ne peut-être qu'un pb matériel...
    J'avoue que je serai content une fois ce TPE fini...

  8. #7
    BastienBastien
    Invité

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bonsoir,

    L'oscillateur est sûrement composé de deux petits condensateurs céramiques de quelques dizaines de pico Farads et d'un quartz de quelques méga hertz.

    Peut être 15 pF et 4 MHz ?

    Sans oscillateur, ton PIC n'effectue pas de cycle de traitement, et donc, tu peux toujours attendre que quelque chose "sorte". Rien ne sortira.

    Mais peut être que la panne se situe ailleur. Vérifies ton câblage ! Vérifies ton programme ! Vérifies à l'oscilloscope que tu as bien quelque chose sur l'oscillateur !

  9. #8
    invite1ba9a743

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bonjour
    Mon montage ne fonctionne toujours pas, et pourtant j'ai testé toutes les entrées/sorties au multimètre, donc le problème ne vient pas de là.
    Il doit venir de la partie logicielle, et un autre groupe qui utilise le même PIC a aussi un pb qu'il ne comprend pas, par contre il y a un troisième groupe qui utilise toujours le même PC mais dont le programme ne dépend pas des entrées (il seulement tempo et 3 sorties) et celui-là fonctionne.
    Je poste le programme C obtenu à partir de Flowcode:
    Code:
    //Defines for microcontroller
    
    //PIC Functions
    #pragma CLOCK_FREQ 20000000
    #define P16F818
    #include <system.h>
    #define MX_EE
    #define MX_EE_TYPE2
    const char MX_EE_SIZE = 128;
    #define MX_SPI
    #define MX_SPI_B
    #define MX_SPI_SDI 1
    #define MX_SPI_SDO 2
    #define MX_SPI_SCK 4
    
    void FCD_Thermometer0_SampleADC();
    char FCD_Thermometer0_ReadLow();
    char FCD_Thermometer0_ReadHigh();
    void FCD_Thermometer1_SampleADC();
    char FCD_Thermometer1_ReadLow();
    char FCD_Thermometer1_ReadHigh();
    
    void FCD_Thermometer0_SampleADC()
    {
    	char ta, cnt;
    	adcon1 = 0x00;
    	ta = trisa;
    	trisa = trisa | 0x2F;
    	adcon0 = 0x81 | (0 << 3);
    	cnt =0;
    	while (cnt <220) cnt++;
    	adcon0 = adcon0 | 0x04;
    	while (adcon0 & 0x04) ;
    	trisa = ta;
    	adcon1 = 0x07;
    }
    
    char FCD_Thermometer0_ReadLow()
    {
    	char adclow;
    	adclow = adresl;
    	return adclow;
    }
    
    char FCD_Thermometer0_ReadHigh()
    {
    	return adresh;
    }
    
    void FCD_Thermometer1_SampleADC()
    {
    	char ta, cnt;
    	adcon1 = 0x00;
    	ta = trisa;
    	trisa = trisa | 0x2F;
    	adcon0 = 0x81 | (1 << 3);
    	cnt =0;
    	while (cnt <220) cnt++;
    	adcon0 = adcon0 | 0x04;
    	while (adcon0 & 0x04) ;
    	trisa = ta;
    	adcon1 = 0x07;
    }
    
    char FCD_Thermometer1_ReadLow()
    {
    	char adclow;
    	adclow = adresl;
    	return adclow;
    }
    
    char FCD_Thermometer1_ReadHigh()
    {
    	return adresh;
    }
    
    //Macro function declarations
    
    
    //Variable declarations
    char FCV_TEMP_REELLE;
    char FCV_BUZZER_ALERTE;
    char FCV_DIODE_ENSERVICE;
    char FCV_INTER_LUMI;
    char FCV_TEMP_VOULUE;
    char FCV_DIODE_CHAUFF;
    char FCV_DIODE_ALERTE;
    char FCV_INTER_MODEECO;
    
    //Macro implementations
    
    
    void main()
    {
    //PIC Initialisation
    adcon1 = 0x07;
    
    //Interrupt initialisation code
    option_reg = 0xC0;
    
    	while( 1 )
    	{
    		TRISA = TRISA | 0x08;
    		FCV_INTER_MODEECO = (PORTA & 0x08 == 0x08);
    
    		if( FCV_INTER_MODEECO == 1 )
    		{
    			TRISB = TRISB & 0xdf;
    			if (1)
    				PORTB = PORTB & 0xdf | 0x20;
    			else
    				PORTB = PORTB & 0xdf;
    
    			FCD_Thermometer0_SampleADC();
    			FCV_TEMP_REELLE = FCD_Thermometer0_ReadHigh();
    			if( FCV_TEMP_REELLE < 170 )
    			{
    				TRISA = TRISA & 0xfb;
    				if (1)
    					PORTA = PORTA & 0xfb | 0x04;
    				else
    					PORTA = PORTA & 0xfb;
    
    			}
    			else
    			{
    				TRISA = TRISA & 0xfb;
    				if (0)
    					PORTA = PORTA & 0xfb | 0x04;
    				else
    					PORTA = PORTA & 0xfb;
    
    			}
    			TRISB = TRISB | 0x08;
    			FCV_INTER_LUMI = (PORTB & 0x08 == 0x08);
    
    			if( FCV_INTER_LUMI == 1 )
    			{
    				TRISB = TRISB & 0xfb;
    				if (1)
    					PORTB = PORTB & 0xfb | 0x04;
    				else
    					PORTB = PORTB & 0xfb;
    
    				TRISB = TRISB & 0xef;
    				if (1)
    					PORTB = PORTB & 0xef | 0x10;
    				else
    					PORTB = PORTB & 0xef;
    
    				delay_ms(250);
    
    				TRISB = TRISB & 0xfb;
    				if (0)
    					PORTB = PORTB & 0xfb | 0x04;
    				else
    					PORTB = PORTB & 0xfb;
    
    				TRISB = TRISB & 0xef;
    				if (0)
    					PORTB = PORTB & 0xef | 0x10;
    				else
    					PORTB = PORTB & 0xef;
    
    				delay_ms(250);
    
    			}
    			else
    			{
    				TRISB = TRISB & 0xfb;
    				if (0)
    					PORTB = PORTB & 0xfb | 0x04;
    				else
    					PORTB = PORTB & 0xfb;
    
    				TRISB = TRISB & 0xef;
    				if (0)
    					PORTB = PORTB & 0xef | 0x10;
    				else
    					PORTB = PORTB & 0xef;
    
    			}
    		}
    		else
    		{
    			TRISB = TRISB & 0xdf;
    			if (0)
    				PORTB = PORTB & 0xdf | 0x20;
    			else
    				PORTB = PORTB & 0xdf;
    
    			TRISB = TRISB & 0xfb;
    			if (0)
    				PORTB = PORTB & 0xfb | 0x04;
    			else
    				PORTB = PORTB & 0xfb;
    
    			TRISB = TRISB & 0xef;
    			if (0)
    				PORTB = PORTB & 0xef | 0x10;
    			else
    				PORTB = PORTB & 0xef;
    
    			FCD_Thermometer0_SampleADC();
    			FCV_TEMP_REELLE = FCD_Thermometer0_ReadHigh();
    			FCD_Thermometer1_SampleADC();
    			FCV_TEMP_VOULUE = FCD_Thermometer1_ReadHigh();
    			if( FCV_TEMP_REELLE < FCV_TEMP_VOULUE )
    			{
    				TRISA = TRISA & 0xfb;
    				if (1)
    					PORTA = PORTA & 0xfb | 0x04;
    				else
    					PORTA = PORTA & 0xfb;
    
    			}
    			else
    			{
    				TRISA = TRISA & 0xfb;
    				if (0)
    					PORTA = PORTA & 0xfb | 0x04;
    				else
    					PORTA = PORTA & 0xfb;
    
    			}
    		}
    	}
    mainendloop: goto mainendloop;
    }

  10. #9
    invite5637435c

    Bonjour,

    déjà une petite remarque, je vois que ADCON1 est à chaque fois initialisé (quasiment dans chaque fonction) ce qui est parfaitement inutile ainsi que certains registres de direction de port (TRISA par ex), l'initialisation du PIC sert à fixer une fois pour toute les affectations sauf exception, ici ces intialisations successives ne servent à rien.

    Tu cherches à faire quoi au juste car ton programme est assez confus...
    Il faudrait que tu postes ton schéma ainsi que le cahier des charges.

    Je vois ici:
    option_reg = 0xC0;

    Tu déclares par ce registre que tu n'actives pas les résistances internes de pull-up du portB, pourquoi pas mais est-ce bien ce que tu cherches réellement à faire (voir schéma d'appli), mais également tu actives l'interruption sur front montant (bit6 de OPTION REG) or je ne vois nul part dans ton programme l'activation de GIE et PEIE..., donc cette interruption n'est jamais prise en compte.
    De plus il faut activer INTE dans INTCON (bit4).
    @+

  11. #10
    invite0e5af214

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Pour ton programme "tout con", essaye d'utiliser l'oscillateur interne au pic.

    Ca fait quelque chose comme :

    Dans la config choisir INTOSC (ou quelque chose qui y ressemble).
    Dans le début du code écrire OSCCON = 0x40;

    Désactive aussi le convertisseur analogique numérique (ADCON1 = 0xFF; )

    Bon courage

  12. #11
    invite1ba9a743

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Merci!
    J'ai besoin de convertir de l'analogique en numérique, donc je ne dois pas le désactiver!?

  13. #12
    invite5637435c

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Si tu dois mesurer des tensions tu dois activer le CAN du µC.
    Ton code est plus qu'étrange, comme en plus il n'est pas commenté (très mauvaise habitude), il n'inspire pas à rechercher davantage.
    Donc explique ce que veux faire et commente ton code, en écrivant souvent on se rend compte de ses propres erreurs.
    Un schéma serait également un plus pour t'aider.
    @+

  14. #13
    invite1ba9a743

    Re : PIC 16f818: y a plus rien qui sort !!!!

    C'est-à-dire que je n'y connais rien au C, ce code est celui généré par Flowcode, franchement désolé mais je ne peux pas le commenter...
    Je suis en train de me dire que ce n'est pas trop grave si le programme ne fonctionne pas, je m'en servirai au contraire pour développer mes tentatives de résolution, à l'oral de TPE...
    Donc ne vous embêtez pas plus!!
    Merci quand-même!!
    A+

  15. #14
    invite8860b0b3

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bonjour,
    Tout d'abord vérifie dans flowcode si tu as bien choisi la vitesse d'horloge du pic sinon pas de bon fonctionnement...ensuite envoie moi ton programme flowcode avec explication de ce que tu veux faire...

    A+

  16. #15
    invite1ba9a743

    Re : PIC 16f818: y a plus rien qui sort !!!!

    Bonjour Gari.
    Merci beaucoup de t'acharner, mais mon T.P.E. est passé et honnêtement j'en suis content, et je n'ai plus envie de m'en occuper...
    Mais si le programme t'intéresse personnellement, je l'ai mis en pièce jointe compressée en zip.
    Merci encore (je t'offre aussi les droits d'auteur!!!)
    A+
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Chaleur qui sort ou froid qui entre?
    Par inviteaaf76eb1 dans le forum Physique
    Réponses: 18
    Dernier message: 01/04/2011, 15h55
  2. fumée qui sort du poele a l'ouverture?
    Par invite24c02fa0 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 12
    Dernier message: 08/12/2010, 13h50
  3. une idée qui coute rien et qui améliorerai le recyclage
    Par invite981ec232 dans le forum Environnement, développement durable et écologie
    Réponses: 16
    Dernier message: 01/03/2007, 14h17
  4. trois amplis en panne, plus rien n'en sort
    Par invitee1a228c2 dans le forum Dépannage
    Réponses: 1
    Dernier message: 22/10/2006, 21h14
  5. Ce qui sort d'un trou noir
    Par inviteef189058 dans le forum Archives
    Réponses: 2
    Dernier message: 12/04/2006, 09h15
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...