[PIC]erreurs dans un programme
Répondre à la discussion
Page 1 sur 3 12 DernièreDernière
Affichage des résultats 1 à 30 sur 72

[PIC]erreurs dans un programme



  1. #1
    invitec35bc9ea

    [PIC]erreurs dans un programme


    ------

    bonjour,
    mplab m'indique des erreurs dans les lignes 5,6, et 7 de ce programme:
    Code:
    #include <p18f4520.h>
    #include <delays.h>
    
    uChar_Bits sens;
    #define sens(sens.value)
    #define s1(sens.b0)
    #define s2(sens.b1)
    
    int pos1,pos2;//
    int posr1,posr2;
    
    TRISA=0b000000;
    TRISB=0b11111111;
    TRISC=0b10001111;
    TRISD=0b00000000;
    TRISEbits.TRISE0=0;
    PORTD=0b11111111;
    
    void revolt1(s1){//tourner le moteur 1 dans le sens s1
    	PORTDbits.RD1=s1;
    	while(1){//Step
    		PORTDbits.RD2 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD2 = 0;
    		Delay10KTCYx(0);
    		posr1=posr1+1;
    	}
    }
    
    void revolt2(s2){//tourner le moteur 2 dans le sens s2
    	PORTDbits.RD5=s2;
    	while(1){//Step
    		PORTDbits.RD6 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD6 = 0;
    		Delay10KTCYx(0);
    		posr2=posr2+1;
    	}
    }
    		
    
    void init(){//initialisation
    	if(RC2){
    		while(RC0!=1){
    			revolt1(1);
    		}
    		while(RC1!=1){
    			revolt2(1);
    		}
    	}
    	posr1=0;//initialiser la position du moteur 1
    	posr2=0;//initialiser la position du moteur 2
    }
    
    void track(){//suivi
    	while(1){
    		if(posr1<pos1){
    			revolt1(1);
    		}
    		else if(posr1>pos1){
    			revolt1(0);
    		}
    		if(posr2<pos2){
    			revolt2(1);
    		}
    		else if(posr2>pos2){
    			revolt2(0);
    		}
    	}
    }
    	
    	
    
    void main(){
    	while(1){
    		init();
    		track();
    	}
    }
    qqun saurait-il comment corriger svp?
    merci

    -----

  2. #2
    Seb.26

    Re : [PIC]erreurs dans un programme

    Il te manque la définition de la structure uChar_Bits ( d'ailleur ça me rappelle quelque chose ... )

    Code:
    #define uChar unsigned char
    typedef union _uChar_b {
      struct {
        unsigned b0:1;
        unsigned b1:1;
        unsigned b2:1;
        unsigned b3:1;
        unsigned b4:1;
        unsigned b5:1;
        unsigned b6:1;
        unsigned b7:1;
      };
      uChar value;
    };
    #define uChar_Bits union _uChar_b
    Mets ça dans un .h genre "myTypes.h" et ajoute l'include en tête des fichier .c dans lesquels tu l'utilise ...

    [Edit] T'as aussi un souci : rajoute un espace entre "sens" et "(sens.value)" dans ton #define ... idem pour s1 et s2 ... sinon le pre-pro ne comprend pas ce que tu attends de lui ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    Seb.26

    Re : [PIC]erreurs dans un programme

    Autre souci ... AMA ton #define est illégal car il boucle sur lui même ...

    remplace :
    Code:
    uChar_Bits sens;
    #define sens(sens.value)
    #define s1(sens.b0)
    #define s2(sens.b1)
    par :
    Code:
    uChar_Bits _sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    [Edit] d'ailleur, je pense que c'est ça le souci, et pas les espaces en fait ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    ( d'ailleur ça me rappelle quelque chose ... )
    non, je vois pas

    c'est corrigé:
    Code:
    #include <p18f4520.h>
    #include <delays.h>
    #include "uchar.h"
    
    
    uChar_Bits sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    à present l'erreur est dans les TRIS

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

    Re : [PIC]erreurs dans un programme

    ça devrait toujours pas marcher ... ...

    Code:
    #include <p18f4520.h>
    #include <delays.h>
    #include "uchar.h"
    
    uChar_Bits sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    il faut :
    Code:
    uChar_Bits _sens;
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    Seb.26

    Re : [PIC]erreurs dans un programme

    Pour les TRIS, ton premier est sur 6 bits, ça ne pose sans doute pas de problèmes ( il met des 0) mais c'est pas très "beau" ...

    C'est quoi ton compilo ? il accepte "0b11111111" ?
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #7
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    Pour les TRIS, ton premier est sur 6 bits, ça ne pose sans doute pas de problèmes ( il met des 0) mais c'est pas très "beau"
    RA6 et RA7 correspondent à OSC1 et OSC2 c'est pourquoi j'evite de les configurer
    C'est quoi ton compilo ?
    C18.
    il accepte "0b11111111" ?
    il devrait.

  9. #8
    Seb.26

    Re : [PIC]erreurs dans un programme

    Citation Envoyé par einstein Voir le message
    RA6 et RA7 correspondent à OSC1 et OSC2 c'est pourquoi j'evite de les configurer
    Mais tu écris un octet ... pas seulement les 6 bits que tu précise ... les autres sont à 0, mais ils sont écrits ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. #9
    invite5637435c

    Re : [PIC]erreurs dans un programme

    Avec TRISA=0; ça devrait mieux se passer.

  11. #10
    Seb.26

    Re : [PIC]erreurs dans un programme

    PS: tu es sûr d'avoir besoin de "int" ???

    C'est quelle taille un int ? ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  12. #11
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    Avec TRISA=0; ça devrait mieux se passer
    IDEM
    PS: tu es sûr d'avoir besoin de "int" ???
    non, un char suffit, mais je m'occuperais de la gestion de la memoire une fois que tout marchera.

  13. #12
    invite5637435c

    Re : [PIC]erreurs dans un programme

    Tu as quoi comme message d'erreur?

  14. #13
    Seb.26

    Re : [PIC]erreurs dans un programme

    Tu peux mettre l'erreur stp ... ça va être moins drôle certes, mais un poil plus facile ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  15. #14
    invite5637435c

    Re : [PIC]erreurs dans un programme

    2 messages en même temps, je vais laisser seb.26 tranquille.

  16. #15
    Seb.26

    Re : [PIC]erreurs dans un programme

    Bah ... Y'a pas de mal ...
    ... mais ça fait 2 fois quand même ( 17h53 + 18h03 ) et dans le même post en plus !!!
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  17. #16
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

     Cliquez pour afficher

  18. #17
    Seb.26

    Re : [PIC]erreurs dans un programme

    Tu peux poster aussi les 20 première ligne de ton main.c ?!
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  19. #18
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    les voici:
    Code:
    #include <p18f4520.h>
    #include <delays.h>
    #include "uchar.h"
    
    
    uChar_Bits _sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    
    int pos1,pos2;//
    int posr1,posr2;
    
    TRISA=0;
    TRISB=0b11111111;
    TRISC=0b10001111;
    TRISD=0b00000000;
    TRISEbits.TRISE0=0;
    PORTD=0b11111111;
    
    void revolt1(s1){//tourner le moteur 1 dans le sens s1
    	PORTDbits.RD1=s1;
    	while(1){//Step
    		PORTDbits.RD2 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD2 = 0;
    		Delay10KTCYx(0);
    		posr1=posr1+1;
    	}
    }
    
    void revolt2(s2){//tourner le moteur 2 dans le sens s2
    	PORTDbits.RD5=s2;
    	while(1){//Step
    		PORTDbits.RD6 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD6 = 0;
    		Delay10KTCYx(0);
    		posr2=posr2+1;
    	}
    }
    		
    
    void init(){//initialisation
    	if(RC2){
    		while(RC0!=1){
    			revolt1(1);
    		}
    		while(RC1!=1){
    			revolt2(1);
    		}
    	}
    	posr1=0;//initialiser la position du moteur 1
    	posr2=0;//initialiser la position du moteur 1
    }
    
    void track(){//suivi
    	while(1){
    		if(posr1<pos1){
    			revolt1(1);
    		}
    		else if(posr1>pos1){
    			revolt1(0);
    		}
    		if(posr2<pos2){
    			revolt2(1);
    		}
    		else if(posr2>pos2){
    			revolt2(0);
    		}
    	}
    }
    	
    	
    
    void main(){
    	while(1){
    		init();
    		track();
    	}
    }

  20. #19
    Seb.26

    Re : [PIC]erreurs dans un programme

    Oh purée, j'avais pas vu !!!

    Tu as mis du code ( TRISA=0; ) en dehors du programme ...


    Deplace :
    Code:
    TRISA=0;
    TRISB=0b11111111;
    TRISC=0b10001111;
    TRISD=0b00000000;
    TRISEbits.TRISE0=0;
    PORTD=0b11111111;
    Dans une fonction ( init() par exemple )

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  21. #20
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    le probleme c'est que j'utilise ces differents ports dans differents programmes.

  22. #21
    RISC

    Re : [PIC]erreurs dans un programme

    Einstein,

    Ou as-tu déclaré les bits de configuration de ton PIC ?
    Je ne les vois nulle part dans ton programme...à moins que tu ais fait cela dans un fichier header.

    Si ce n'est pas le cas je te recommande de TOUJOURS programmer les bits de configuration dans ton programme.
    De cette manière tu n'auras plus a te poser de question...

    a+

  23. #22
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    ok ,j'ai tout mis dans la fct main:
    Code:
    #include <p18f4520.h>
    #include <delays.h>
    #include "uchar.h"
    
    
    uChar_Bits _sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    
    int pos1,pos2;//
    int posr1,posr2;
    
    
    void revolt1(s1){//tourner le moteur 1 dans le sens s1
    	PORTDbits.RD1=s1;
    	while(1){//Step
    		PORTDbits.RD2 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD2 = 0;
    		Delay10KTCYx(0);
    		posr1=posr1+1;
    	}
    }
    
    void revolt2(s2){//tourner le moteur 2 dans le sens s2
    	PORTDbits.RD5=s2;
    	while(1){//Step
    		PORTDbits.RD6 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD6 = 0;
    		Delay10KTCYx(0);
    		posr2=posr2+1;
    	}
    }
    		
    
    void init(){//initialisation
    	if(RC2){
    		while(RC0!=1){
    			revolt1(1);
    		}
    		while(RC1!=1){
    			revolt2(1);
    		}
    	}
    	posr1=0;//initialiser la position du moteur 1
    	posr2=0;//initialiser la position du moteur 1
    }
    
    void track(){//suivi
    	while(1){
    		if(posr1<pos1){
    			revolt1(1);
    		}
    		else if(posr1>pos1){
    			revolt1(0);
    		}
    		if(posr2<pos2){
    			revolt2(1);
    		}
    		else if(posr2>pos2){
    			revolt2(0);
    		}
    	}
    }
    	
    	
    
    void main(){
    	TRISA=0b00000000;
    	TRISB=0b11111111;
    	TRISC=0b10001111;
    	TRISD=0b00000000;
    	TRISEbits.TRISE0=0;
    	PORTD=0b11111111;
    	while(1){
    		init();
    		track();
    	}
    }
    l'erreur se trouve à present à la fct revolt1():
    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\mcc18\bin\mcc18.exe" -p=18F2520 "main.c" -fo="main.o" /i"C:\mcc18\h" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
    MPLAB C18 v2.40 (demo)
    Copyright 1999-2004 Microchip Technology Inc.
    Days remaining until demo becomes feature limited: 12
    c:\mpap\mpap\main.c:15:Error: syntax error
    Halting build on first failure as requested.
    BUILD FAILED: Sun Apr 27 19:08:51 2008

  24. #23
    RISC

    Re : [PIC]erreurs dans un programme

    Einstein,

    Je viens de voir que tu utilises une super vieille version du compilateur C18 (v2.40 !!!!).

    Télécharges de suite la version 3.16 (gratuite) ici : www.microchip.com/C18

    Et par la même occasion la toute dernière version de MPLAB (8.10) toute chaude d'avant hier : www.microchip.com/MPLAB

    Elle ajoute des fonctions super comme une barre d'icone pour les points d'arrêt et aussi la possibilité de gérer des répertoires dans les projets ;=)

    Et cerise pour le gateau pour ceux qui ont un real-ice, des points d'arrêt logiciels pour les PIC18 et la possibilité de visualiser les variables globales pendant l'exécution !!!

    Les nouvelles fonctionalités sont listées ici : http://forum.microchip.com/tm.aspx?m=333388

    a+

    YESSSSSSSS : Et de 500 posts pour ma pomme ;=)

  25. #24
    invite5637435c

    Re : [PIC]erreurs dans un programme

    einstein, il vaut mieux que tu crées une fonction genre pic_init() dans laquelle tu déclares toutes les initialisations nécessaires (ports, enable d'interruptions, timer, etc).
    C'est une bonne habitude à prendre et ce sera plus lisible quand tu feras des programmes plus importants.

    Ton main() deviendra:

    void main(){

    pic_init();
    .......
    }

  26. #25
    invite5637435c

    Re : [PIC]erreurs dans un programme

    Autre chose, dans un programme on déclare les variables, les define, puis les prototypes des fonctions, les fonctions, et le main.

    Le mieux est de te créer un gabarit type, qui sera ta feuille par défaut que tu chargeras à chaque nouveau projet.
    Elle contiendra les sections nommées ci dessus du programme.

    Dans la section projet j'ai posté il y a quelques temps un programme (strobo+dimmer), tu peux t'en inspirer si tu veux.
    Un programme c'est avant tout de l'organisation.
    @+

  27. #26
    Seb.26

    Re : [PIC]erreurs dans un programme

    Citation Envoyé par einstein Voir le message
    l'erreur se trouve à present à la fct revolt1():
    Normal ... Tu dois indiquer le type de tes paramètres dans les fonctions ...

    Et en plus, tu as nommé tes paramètres comme tes #define ... moralité, le compilo tombe sur void revolt1( (_sens.b0) ) ... ce qui veut pas dire grand chose ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  28. #27
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    Dans la section projet j'ai posté il y a quelques temps un programme (strobo+dimmer), tu peux t'en inspirer si tu veux.
    ok, je vais y jetter un coup d'oeuil. merci
    Et en plus, tu as nommé tes paramètres comme tes #define ... moralité, le compilo tombe sur void revolt1( (_sens.b0) ) ... ce qui veut pas dire grand chose ...
    ce que je veux, c'est que la fct revolt1 recoive comme argument un bit et que la valeur de ce bit soir celle que j'affecte à PORTDbits.RD1

  29. #28
    invitec35bc9ea

    Re : [PIC]erreurs dans un programme

    un autre petit truc:
    j'ai mis les deux fct revolt en commentaire, pour voir s'il y a d'autres erreurs, et apparemment C18 n'accepte pas l'ecriture:
    while(RC1!=1)
    me disant que RC1 n'est pas declaré, comment ecrire cette boucle alors?
    while(PORTCbits.RC1!=1) ?
    merci

  30. #29
    invite5637435c

    Re : [PIC]erreurs dans un programme

    Code:
    #include <p18f4520.h>
    #include <delays.h>
    #include "uchar.h"
    
    
    uChar_Bits _sens;
    #define sens (_sens.value)
    #define s1 (_sens.b0)
    #define s2 (_sens.b1)
    
    int pos1,pos2;//
    int posr1,posr2;
    
    
    /* Prototype des fonctions */
    
    void revolt1(uChar_Bits s1);
    void revolt2(uChar_Bits s2);
    void init(void);
    void track(void);
    void init_pic(void);
    void init_var(void);
    
    /* init du Pic */
    
    void init_pic()
    {
    /* il faut donner ici une valeur aux différentes sorties */
    TRISA=0b00000000;
    
    /* idem */
    TRISB=0b11111111;
    
    /* idem */
    TRISC=0b10001111;
    
    /* idem */
    TRISD=0b00000000;
    
    TRISEbits.TRISE0=0;
    
    PORTD=0b11111111;
    /* à mettre avant TRISD
    }
    
    /* initialisation des variables globales */
    
    void init_var(void)
    {
    /* ........ */
    }
    
    /* Fonction revolt1 */
    
    void revolt1(s1){//tourner le moteur 1 dans le sens s1
    	PORTDbits.RD1=s1;
    	while(1){//Step
    		PORTDbits.RD2 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD2 = 0;
    		Delay10KTCYx(0);
    		posr1=posr1+1;
    	}
    }
    
    void revolt2(s2){//tourner le moteur 2 dans le sens s2
    	PORTDbits.RD5=s2;
    	while(1){//Step
    		PORTDbits.RD6 = 1;
    		Delay10KTCYx(0);
    		PORTDbits.RD6 = 0;
    		Delay10KTCYx(0);
    		posr2=posr2+1;
    	}
    }
    		
    
    void init(){//initialisation
    	if(RC2){
    		while(RC0!=1){
    			revolt1(1);
    		}
    		while(RC1!=1){
    			revolt2(1);
    		}
    	}
    	posr1=0;//initialiser la position du moteur 1
    	posr2=0;//initialiser la position du moteur 1
    }
    
    void track(){//suivi
    	while(1){
    		if(posr1<pos1){
    			revolt1(1);
    		}
    		else if(posr1>pos1){
    			revolt1(0);
    		}
    		if(posr2<pos2){
    			revolt2(1);
    		}
    		else if(posr2>pos2){
    			revolt2(0);
    		}
    	}
    }
    	
    	
    
    void main(){
    	
         init_pic();
         init_var();
    	while(1){
    	init();
    	track();
    	}
    }

  31. #30
    invite5637435c

    Re : [PIC]erreurs dans un programme

    Citation Envoyé par einstein Voir le message
    un autre petit truc:
    j'ai mis les deux fct revolt en commentaire, pour voir s'il y a d'autres erreurs, et apparemment C18 n'accepte pas l'ecriture:

    me disant que RC1 n'est pas declaré, comment ecrire cette boucle alors?
    while(PORTCbits.RC1!=1) ?
    merci
    C'est là que tu devrais affecter des define pour nommer tes bits de port, ce serait plus digeste.

    #define RC1 PORTCbits.RC1

    ensuite tu utilises RC1 c'est tout.

Page 1 sur 3 12 DernièreDernière

Discussions similaires

  1. Erreurs dans un sujet de maths ??
    Par invitee817bf9f dans le forum Mathématiques du collège et du lycée
    Réponses: 21
    Dernier message: 07/10/2007, 19h18
  2. erreurs dans mon pc
    Par invite975d9f0f dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 22/07/2006, 16h29
  3. Erreurs dans les éoliennes?
    Par invitee61c7b2d dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 19/03/2005, 12h53
  4. Erreurs Importants dans L'état de ma Connexion
    Par inviteeb530d95 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 14/10/2004, 01h33
  5. Problème dans un programme de PIC
    Par invite67d96d45 dans le forum Électronique
    Réponses: 7
    Dernier message: 29/06/2003, 00h14
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...