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:
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:
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:
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:)