jemhadar:
if(HIGH==master_x.dio_get(E_SIGR_ASR5_HALT) || HIGH==master_x.dio_get(E_SIGR_ASR5_HALT))
Es wird der Code ausgeführt, den Du programmiert hast und nicht der Code, den Du (vermutlich) beabsichtigt hast.
Wenn ich mal die Klammern setze, so wie es ausgeführt wird, dann steht da:
if(HIGH== (master_x.dio_get(E_SIGR_ASR5_HALT) || HIGH) ==master_x.dio_get(E_SIGR_ASR5_HALT))
Dieser Ausdruck ist wahr, wenn "master_x.dio_get(E_SIGR_ASR5_HALT) || HIGH" wahr ist und ebenfalls "master_x.dio_get(E_SIGR_ASR5_HALT)".
Beabsichtigt von Dir war vermutlich:
if((HIGH==master_x.dio_get(E_SIGR_ASR5_HALT)) || (HIGH==master_x.dio_get(E_SIGR_ASR5_HALT)))
Du darfst die Klammern um die einzelnen logischen Ausdrücke nicht weglassen!