[Programmation] Problème de compilation sur pic18f252
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Problème de compilation sur pic18f252



  1. #1
    invite36af8027

    Problème de compilation sur pic18f252


    ------

    Bonjour à tous,

    Je suis alternant et je dois réaliser un programme pour mon entreprise, j'ai donc rédiger un programme "test" pour tester mon ide mon compilateur et mon pic.

    Code:
    #include <xc.h>
    #include <pic18f252.h>
    #define FCY 10000
    #define _XTAL_FREQ 10000
    
    void main()
    {
    TRISB=0;
    PORTB=0;
    TRISA=0;
    PORTA=0;
    TRISC=0xff;
    
    while(1)
        {
        
        __delay_ms(100);
        if(RC0==1)
                {
        
    	RB0=1;
        RA0=1; 
        
                }
       
        }
    }
    Le problème est que je peux le build facilement sans problème, récupérer le fichier .hex, je l'ai même simuler sur le logiciel ISIS et celui-ci fonctionnait a merveille, ensuite je l'import sur pickit 2 programmer avec succès ( j'utilise le VM203 USB PIC Programmer de Velleman ) j'écrit ensuite le programme sur le PIC pareil succès mais dés que je le test ( avec le même montage que dans la simulation ) celui-ci ne fonctionne pas.

    J'ai beaucoup cherché sur internet une aide et des explications mais jamais rien n'a abouti, je m'en remet donc à ce forum et à votre assistance.

    Info supp :
    Mplab X 5.40 IDE
    XC8 2.20
    Windows 10
    Pickit 2
    ( Je peux aussi travailler sur mplab v8.92 et/ou C18 compiler )

    -----

  2. #2
    Vincent PETIT
    Animateur Électronique

    Re : Problème de compilation sur pic18f252

    Bonjour et bienvenue sur Futura Sciences,
    Lorsque qu'on est dans ton cas, la toute première chose à faire c'est d'écrire un programme le plus simple possible et après on cherche ce qui ne va pas. Dans un programme simple le if(RC0==1) est de trop.

    Code:
    #include <xc.h>
    #include <pic18f252.h>
    #define FCY 10000
    #define _XTAL_FREQ 10000
    
    void main()
    {
    TRISB=0;
    PORTB=0;
    
    while(1)
        {
           	RB0=0;
        __delay_ms(500);
       	RB0=1;
        __delay_ms(500);
       
        }
    }
    Tu mets un oscilloscope sur RB0 et tu observes ce qui se passe, tu devrais voir un signal carré. Sans oscillo tu mets une résistance et un LED pour constater qu'elle clignote.

    Si ce test simple et seulement si ce test simple fonctionne ! Alors tu ajoutes du code petit à petit et tu le tests en allant. Tu ajoutes un peu de code, tu tests et ainsi de suite.

    Le piège étant d'attendre d'avoir écrit 100 lignes de code pour tester parce quand ça ne fonctionne pas, on est perdu et on peut tourner en rond très longtemps et devoir même parfois recommencer de zéro.
    Là où il n'y a pas de solution, il n'y a pas de problème.

  3. #3
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Merci de votre réponse, en effet j'avais déjà réaliser un petit programme simple comme celui-ci et il n'avait pas fonctionner j'ai donc tester plusieurs petit programme, j'ai compiler votre code dans mon pic mais rien toujours.
    Pour le projet j'ai sélectionner "simulator" comme tools, pensez-vous que le problème peut être externe au code ?
    Faut-il configurer comme il faut les "configuration bits" ?
    Certains paramètre dans pickit 2 sont-ils à modifier ?

    Merci de votre réponse.

  4. #4
    Qristoff
    Animateur Électronique

    Re : Problème de compilation sur pic18f252

    Salut,
    il faudrait aussi voir le schéma du montage pour s'assurer que la broche MCLR est bien tiré au +5v et que le PIC est correctement alimenté. on n'est plus en simulation
    Tout existe, il suffit de le trouver...!

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

    Re : Problème de compilation sur pic18f252

    La broche VPP/MCLR est bien alimenté en 5V

    ( Je n'arrive pas à ajouter de photos )

  7. #6
    paulfjujo

    Re : Problème de compilation sur pic18f252

    bonjour,


    voir datasheet et de ce coté
    ADCON0 = ?;
    ADCON1 = ? ;
    voie analogique prioritaires

  8. #7
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Merci pour vôtre aide Paul, j'ai vérifier sur la datasheet j'ai ajouté le paramètre comme vous l'avez indiqué mais le programme ne fonctionne toujours pas :/

  9. #8
    paulfjujo

    Re : Problème de compilation sur pic18f252

    utiliser LAT au lieu de PORT pour les sorties


    Code:
    while(1)
        {
           	LATB.B0=0;  // syntaxe à verifier 
        __delay_ms(500);
       	LATB.B0=1;
        __delay_ms(500);
       
        }

    en MikroC
    Code HTML:
    while(1)
     {
      _asm btg LATB,0; 
       Delay_ms(500);
    }

  10. #9
    paulfjujo

    Re : Problème de compilation sur pic18f252

    cet exemple en mikroC clignote une led sur RB0 et une autre sur RB1
    Q=10Mhz encadré de 2 capa de 20pF
    pin 1 MCLR tiree au +VCC via 10K
    Alim 5V: 1 VCC + 2 Vss
    Led tiree au +VCC via R=750 ohms

    je n'ai pas pu utiliser mon Pickit3 avec MPLAB X IDE XC8
    le 18F252 serait trop VIEUX pour MPLAB X IDE ??
    meme avec le Pickit3 reconnu mais connection impossible pour charger le Hex

    par contre avec mikroC , chargement du *.hex sans probleme avec le Pickit3 + Pickit3 Standalone programme
    ci joint le projet MikroC ( gratuit jusqu'à 2Ko)
    source et *.hex test OK en reel !


    Tests_divers_18F252.zip

    Code:
    void main()
    {
     Init_Hardware() ;
     do
     {
     Led_Blanche=OFF ;
     //Led_Rouge=OFF ;
      Delay_ms(500);
     Led_Blanche=ON ;
     // Led_Rouge=ON;
       Delay_ms(500);
       _asm btg LATB,0     // led rouge
     }
      while(1);
    }

  11. #10
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Bonjour, merci à vous Paul pour l'aide que vous m'avez apporter j'ai compiler le fichier .hex que vous m'avez transmit et celui-ci fonctionne parfaitement, est-ce que la programmation sur mikroC est plus compliqué que celle sur mplab ? Car ce logiciel semble être efficace à la programmation de mon PIC.

  12. #11
    simon.

    Re : Problème de compilation sur pic18f252

    Salut Alpha,

    Je pense que tu as omis de configurer l'oscillateur du pic !

  13. #12
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Salut Simon,

    J'ai configurer dans "configuration bits" sur HS et générer le code mais cela n'a pas fonctionner.

    Après ce n'est peut-être pas la bonne méthode, pourriez-vous m'aiguiller si c'est le cas ?

  14. #13
    simon.

    Re : Problème de compilation sur pic18f252

    Ah, si ca doit marcher. Moi j'avais l'habitude de le faire depuis le programme, mais ca doit marcher quand même comme ca.

    HS, ca veut dire que tu as un quartz avec ses petits condensateurs ?

  15. #14
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Oui c'est cela j'ai un quartz de 10Mhz et deux condensateurs de 22pF.

    En l’écrivant directement dans le programme vous utiliser le #pragma config... ?

  16. #15
    invite36af8027

    Re : Problème de compilation sur pic18f252

    Bonjour un tous, j'aurais une question pour vous Paulfjujo, j'ai donc rédigé un programme sur mikroC en m'inspirant fortement de celui que vous m'avez transmis et je vous en remercie fortement, et je me permet de vous demander car vous avez l'air de vous y connaître en programmation sur mikroC, j'aimerais lancé une boucle while(i<4) a partir d'une entrée sur une broche et une autre boucle a partir d'une autre broche, le problème est que je ne sais comment rédigé ceci, voila ce que j'ai pu faire pour l'instant :
    Code:
    sbit Led   at LATB.B0;
    sbit Buzzer at LATB.B1 ;
    sbit Led_Dir   at TRISB.B0;
    sbit Buzzer_Dir at TRISB.B1;
    sbit Inter at PORTB.B2;
    sbit Inter_Dir at TRISB.B2;
    sbit Inter2 at PORTB.B3;
    sbit Inter2_Dir at TRISB.B3;
    
    unsigned int i,j,k,l;
    
    
    void Init_Hardware()
    {
      TRISC=0xFF;
      TRISA=0xFF;
      ADCON0 = 0xC1; //0b11000001 ;
      ADCON1 = 0xC4; //0b11000100 ;
      Led_Dir=0;
      Led=ON;
      Buzzer_Dir=0;
      Buzzer=ON;
      Inter_Dir=0;
      Inter=OFF;
      Inter2_Dir=0;
      Inter2=OFF;
      i=0;
    
     }
    
    
    void main()
    {
     Init_Hardware() ;
    while(1)                      {
    if(Inter==ON)         {
    i=0;
    while(i<4);      {
     Led=ON;
     Buzzer=ON;
     delay_ms(10);
     Buzzer=OFF;
     delay_ms(5000);
     Led=OFF;
     i++;
                     }    
                          }
    
    else if(Inter2==ON)  {
    i=0;
    while(i<4);      {
     Led=ON;
     Buzzer=ON;
     delay_ms(10);
     Buzzer=OFF;
     delay_ms(5000);
     Led=OFF;
     i++;
                     }
                         }
     else           {
     Led=OFF;
     Buzzer=OFF;    }
                                  }
    }
    aucun problème quand je build ni quoi que se soit mais lorsque je met une des deux entrées à l'état haut sur mon montage rien ne se passe.

    Merci d'avance pour l'aide que vous saurez m'apporter.

  17. #16
    umfred

    Re : Problème de compilation sur pic18f252

    retire les points-virgules qui suivent ton while(i<4) (avec les point virgules, i ne fait que s'incrémenter de 0 à 4 (et je ne suis pas sûr que le bloc suivant soit compilé au final, donc pas présent dans l'assembleur))

  18. #17
    Qristoff
    Animateur Électronique

    Re : Problème de compilation sur pic18f252

    Dans ton Init_Hardware, il n'y a pas d'init TRISB alors que c'est celui là que tu utilises !
    C'est peut être pas ça, mais...
    Dernière modification par Qristoff ; 25/06/2020 à 20h04.
    Tout existe, il suffit de le trouver...!

  19. #18
    simon.

    Re : Problème de compilation sur pic18f252

    Avant toute chose il faut rendre le code lisible.

    Il faut l'indenter correctement. C'est IN-DIS-PEN-SABLE.

    Code:
    void main()
    {
        Init_Hardware();
        while (1) {
            if (Inter == ON) {
                i = 0;
                while (i < 4) {
                    Led = ON;
                    Buzzer = ON;
                    delay_ms(10);
                    Buzzer = OFF;
                    delay_ms(5000);
                    Led = OFF;
                    i++;
                }
            } else if (Inter2 == ON) {
                i = 0;
                while (i < 4) {
                    Led = ON;
                    Buzzer = ON;
                    delay_ms(10);
                    Buzzer = OFF;
                    delay_ms(5000);
                    Led = OFF;
                    i++;
                }
            } else {
                Led = OFF;
                Buzzer = OFF;
            }
        }
    }

  20. #19
    paulfjujo

    Re : Problème de compilation sur pic18f252

    bonjour,


    les actions etant identhiques, autant faire un ou logique
    ATTENTION où as tu defini ON et OFF ?
    depend aussi du cablage hardware ...

    Code:
    // si les leds sont entre  la sortie et le Gnd (0V)
    #define ON 1
    #define OFF 0
    // sinon , connectée n Pull Up vers VCC
    #define ON 0
    #define OFF 1
    
    // attention aussi pour les inter 
    //entree mise au niveau 1 si actionné ou mise à zero ? 
    
    
    void main()
    {
        Init_Hardware();
        while (1)
        {
            if ((Inter == ON) || (Inter2 == ON) )
    	{
                i = 0;
                while (i < 4) 
    	     {
                    Led = ON;
                    Buzzer = ON;
                    delay_ms(10);
                    Buzzer = OFF;
                    delay_ms(5000);
                    Led = OFF;
                    i++;
                }
            } 
    	else 
    	 {
                Led = OFF;
                Buzzer = OFF;
            }
        }
    }
    Citation Envoyé par Qristoff
    .... Dans ton Init_Hardware, il n'y a pas d'init TRISB
    avec mikroC, les fonctions sbit servent à initialiser les bits utilisés sur le PortB
    Dernière modification par paulfjujo ; 26/06/2020 à 15h53.

Discussions similaires

  1. [Programmation] Problème compilation
    Par marcuccio19 dans le forum Électronique
    Réponses: 10
    Dernier message: 04/06/2017, 17h46
  2. problème de compilation
    Par invite337c96a4 dans le forum Électronique
    Réponses: 0
    Dernier message: 12/01/2015, 18h54
  3. Problème de compilation
    Par invited91dce06 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 22/02/2013, 10h12
  4. problème de compilation
    Par invite339a0de8 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 06/04/2012, 13h28
  5. Problème compilation C30
    Par invite52e85ae4 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 30/03/2011, 16h42
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...