if zmienne typu float / double

0

Witam
Mam takie problem, nie działa mi warunek if gdy używam zmiennych rzeczywistych nawet jeżeli ta sama operacja jest po if i po else to nie wykona się żadna. Warunek działa normalnie na liczbach rzeczywistych wpisanych bezpośrednio w warunku

1
Mały Młot napisał(a):

...nie działa mi warunek if gdy używam zmiennych rzeczywistych...Warunek działa normalnie na liczbach rzeczywistych

Pokaż kod, bo nie idzie tego zrozumieć.

0

if ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);

0
void measureLeds(float min, float max, float weight, float range){
  if(weight < max)(GPIOA, GPIO_Pin_5);
  else ledOn(GPIOA, GPIO_Pin_5);
  asm("nop");
}
0
Mały Młot napisał(a):

if ledOn(GPIOA, GPIO_Pin_5);
else ledOn(GPIOA, GPIO_Pin_5);

To się nie zbuduje. Brak nawiasów, albo warunku.

0

A gdzie jest warunek ifa?
I wklej kod pomiędzy <code class="c"></code>

Edit:

if(weight < max)(GPIOA, GPIO_Pin_5);

zjadłeś ledOn po warunku.

0
Mały Młot napisał(a):
void measureLeds(float min, float max, float weight, float range){
  if(weight < max)(GPIOA, GPIO_Pin_5);
  else ledOn(GPIOA, GPIO_Pin_5);
  asm("nop");
}

to (GPIOA, GPIO_Pin_5); nic nie robi!
Błędu nie ma bo tu jest takie niedociągnięcie języka z operatorem ,.

0

eh za dużo razy cofnąłem, tam jest funkcja dam zaraz kod

0
void ledOn(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){
  GPIO_WriteBit(GPIOx, GPIO_Pin, 0);
}
//------------------------------------------------------------------

void measureLeds(float min, float max, float weight, float range){
  if(weight < max) ledOn(GPIOA, GPIO_Pin_5);
  else  ledOn(GPIOA, GPIO_Pin_5);

Pozostałe parametry pinom nadaję w funkcji init, ledon działa poprawnie bez warunku

0

Z tym co pokazałeś musi działać. Błąd musi tkwić gdzieś indziej.
Po pierwsze użyj debugera (nie wiem, na jakiej platformie to robisz, ale musi się dać debugować).

0

CrossWork studio, o to chodzi, że używam, ale wszystko wydaje się być ok, niestety funkcja isę nie wywołuje

0
 void measureLeds(float min, float max, float weight, float range){
  if(weight < max) ledOn(GPIOA, GPIO_Pin_5);
  else  ledOn(GPIOA, GPIO_Pin_5);

czy ja jestem slepy czy mam racje i ten if jest bez sensu? (bo i tak czy siak wywolujesz funkcje z tymi samymi parametrami)

0

Z tego co kojarzę, masz słabość do makr. Upewnij się, że jakieś makro nie mąci ci w tym kodzie.

0

Problem leżał po stronie ustawień projektu, pozdrawiam i dziękuje za pomoc

0

eh niestety mam kolejny problem, po odjęciu 2 liczb float dodaniach, max - min dostaję liczbę ujemną, co nie powinno mieć miejsca

(max - min) == -2

przy max = 6, oraz min 2

0

(min + (1.0 / 3.0 * (max - min))

0
(min + (1.0 / 3.0 * (max - min)))

1 użytkowników online, w tym zalogowanych: 0, gości: 1