IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment récupérer le status


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Comment récupérer le status
    Bonjour tout le monde :

    J'ai actuellement un souci,et je compte sur votre expertise pour pouvoir le résoudre :

    J'ai un programme C ,avec des fichier .c et .h

    J'ai déclaré une varibale globale : extern uint32_t STATUS;
    et j'ai mis un # include du fichier dans le quel se trouve cette déclaration.
    Ensuite dans main.c avant le "int main()",j'initialise cette variable ,donc j'estime qu'elle est allouée d'une façon statique.

    Deux fonction dans d'autre fichiers utilisent cette variable globale pour la mettre à jour : ,et j'appelle une de ces fonction dans mon programme main.

    Voila quelque bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    int32_t   write_spi_8(unsigned char data)
    {
    	uint32_t status;
    	uint32_t commande_spi;
    commande_spi=(0x80000010+ (data<<8));
     
     
     
    	////lecture du status
     
     
     
    							if(((*adr_status) & mask_status)==0x0 ) // est ce que je suis en wait??
    												{
     
    															*adr_decoder=commande_spi;	//commande spi
    															//ici retour de status
    															status=*adr_status;
     
     
     
    												}
     
    												while(((*adr_status) & mask_status)!=mask_status) //
    												{
     
     
    												}
     
     
     
    												*adr_decoder=0x00000000;  // passe en wait alors ,et le status se remettra à '0'
     
     
     
     
     
    return status;
     
     
    }
    Voilà LA deuxieme fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    uint32_t  FASTSPI_STROBE(unsigned char strobe)
    {uint32_t status=0;
    CS_low();
    	//CC2420_SetReg(strobe,0x0000);    // a simple write
    status=write_spi_8(strobe);
     
     
    	CS_high();
    	return status;
     
    }
    et voila le programme main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while(1)
    {
    //commande oscillator
    	do
    	{
    	STATUS=FASTSPI_STROBE(SXOSCON);
    	}while(STATUS!=0x80004010);
    	//read status
    	//lire_status(&status);
    }
    Vous pouvez remarquer que les fonction intermédiaires utilisent des variables locales dont la valeur est retournée afin que dans le main la variable globale STATUS puisse récupérer cette valeur.

    Le problème alors est le suivant : dans ma variable globale STATUS : j'ai toujours un 0!!Alors que je dois obtenir la valeur que j'attend !!

    Merci pour votre compréhension

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le premier code tel que tu l'as donné est illisible.
    Après mise en forme et sauf accident ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    int32_t   write_spi_8(unsigned char data)
    {
       uint32_t status;
       uint32_t commande_spi;
       commande_spi=(0x80000010+ (data<<8));
       ////lecture du status
       if(((*adr_status) & mask_status)==0x0 ) // est ce que je suis en wait??
       {
          *adr_decoder=commande_spi;	//commande spi
          //ici retour de status
          status=*adr_status;
       }
       while(((*adr_status) & mask_status)!=mask_status) //
       {
       }
       *adr_decoder=0x00000000;  // passe en wait alors ,et le status se remettra à '0'
       return status;
    }

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  3. Comment récupérer le raccourci Ctrl F4
    Par stef02032000 dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/05/2003, 15h53
  4. Comment récupérer le VK_TAB ?
    Par henderson dans le forum C++Builder
    Réponses: 5
    Dernier message: 11/12/2002, 11h32
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo