C if sats ändrar värde på testad variabel, är jag en idiot ?
Postat: 3 augusti 2013, 19:56:16
Jag har nu suttit och letat efter ett fel i min kod, felet kommer från att en variabel ändrar värde helt plötsligt.
Jag tog bort alla rader som ändrar på den variabel, men utan skillnad.
nu spårade jag ner problemet till denna if-sats, ( jag har tagit bort alla andra referenser till variabeln i koden innan jag hitta vart felet uppstår )
innan STM32 vilket är processorn som koden körs på går in i if satsen så är
MasterWorkArea_AnyOutputActive_Counter = 0
MasterWorkArea_AnyOutputActive = 0
och när den kollar villkoren så ändras MasterWorkArea_AnyOutputActive_Counter till 1 och if-satsen anses vara true
så frågan är nu, är jag bara helt dum i huvudet eller är det något som är tok galet ??
jag har flyttat på variabelns adress i minnet, så det verkar inte som att den skrivs över av någon annan variabel som kommer utanför sitt skriv område
och värdet sätts alltid till 1, om jag återställer variablen så sätts den bara tillbaka till 1 när den går in i if-satsen igen
någon ?
Jag tog bort alla rader som ändrar på den variabel, men utan skillnad.
nu spårade jag ner problemet till denna if-sats, ( jag har tagit bort alla andra referenser till variabeln i koden innan jag hitta vart felet uppstår )
Kod: Markera allt
// Master Area ( the hole thing)
if((MasterWorkArea_AnyOutputActive_Counter =! 0) || (MasterWorkArea_AnyOutputActive != 0))
{
// yeep, some output is enabled , so SET this output if any other output is enabled
AreaInternal_ChainStatus = true;
}
MasterWorkArea_AnyOutputActive_Counter = 0
MasterWorkArea_AnyOutputActive = 0
och när den kollar villkoren så ändras MasterWorkArea_AnyOutputActive_Counter till 1 och if-satsen anses vara true
så frågan är nu, är jag bara helt dum i huvudet eller är det något som är tok galet ??
jag har flyttat på variabelns adress i minnet, så det verkar inte som att den skrivs över av någon annan variabel som kommer utanför sitt skriv område
och värdet sätts alltid till 1, om jag återställer variablen så sätts den bara tillbaka till 1 när den går in i if-satsen igen
någon ?