Frage zu einer bedingten Verknüpfung

OP #2385699
Lesenswert?

Hallo!

Ich möchte folgende Abfrage stellen:
1
if ((address_request == 2) && (EEPROM_read_value != 0xFF) && (EEPROM_read_value != 0xFE) )

Also:
Nur wenn address_request 2 ist und EEPROM_read_value einen Wert (außer 
0xFF oder 0xFE) hat, soll die if-Abfrage ausgeführt werden.

Und das macht sie leider nicht.

Wo liegt hier der Fehler?

Danke für Eure Hilfe!
Gast #2385732
Lesenswert?

Hat dort vielleicht die Optimierung deines Compilers aufgeräumt. Aus 
einer Zeile Code ist das leider nicht erkennbar.

Mit der Formulierung
1
if ((address_request == 2) && ((EEPROM_read_value & 0xFE) != 0xFE)
passiert wahrscheinlich das Gleiche?
OP #2385796
Lesenswert?

Ich habe die Art der Abfrage geändert, und frage gleich den EEPROM 
Inhalt ab. Ist dieser ungleich 0xFF, dann existiert eine weitere Adresse 
im EEPROM und darf abgefragt werden.
1
if ( (address_request == 2) && (eeprom_read_byte(EEPROM_read_address ) != 0xFF) )
2
                {
3
                  Cube_high_byte   = eeprom_read_byte(EEPROM_read_address);  // Read value from EEPROM (Cube highbyte)
4
                  EEPROM_read_address ++;
5
                  Cube_low_byte   = eeprom_read_byte(EEPROM_read_address);  // Read value from EEPROM (Cube lowbyte)
6
                  EEPROM_read_address ++;
7

8
                  EEPROM_read_value = eeprom_read_byte(EEPROM_read_address);  // Check the next value
9
                  // If this value == FF, no further address exist!
10
                  // If this value != FF, another addres exist!
11

12
                  change_TX_address(Cube_high_byte, Cube_low_byte);
13
                  change_RX0_address(Cube_high_byte, Cube_low_byte);
14

15
                  address_request = 0;
16

17
                  wdt_reset();              // reset watchdog
18
                }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren