Hi @ all,
ich habe eine Funktion geschrieben, die fehlerhafte Parameterübergaben
an Funktionen verhindern soll. Normalerweise läuft diese Funktion auch…
Aber wenn ich sie z.B. 2 Mal hintereinander aufrufe, kommt es zu einer
Fehlfunktion. Hier die Funktion:
1 | void value_error(int32_t *value_in,int32_t value_min,int32_t value_max,uint32_t error_code)
|
2 | {
|
3 | if(*value_in < value_min)
|
4 | {
|
5 | *value_in = value_min;
|
6 | error_struct.general_error_struct_1.VALUE_ERROR &= ~(error_code);
|
7 | }
|
8 | if(*value_in > value_max)
|
9 | {
|
10 | *value_in = value_max;
|
11 | error_struct.general_error_struct_1.VALUE_ERROR &= ~(error_code);
|
12 | }
|
13 | }
|
Kann mir dazu jemand helfen? Die Fehlfunkion äußert sich darin, dass der
Wert von *value_in unmögliche Werte annimmt.
Hier der Funktionsaufruf:
1 | void PIT_init(uint8_t module, uint8_t status, uint16_t time_ms, uint8_t interrupt_en)
|
2 | {
|
3 | value_error((int32_t*)&module,0,3,VALUE_ERROR_PIT_init); //Funktioniert
|
4 | value_error((int32_t*)&status,0,1,VALUE_ERROR_PIT_init); //Fehlfunktion
|
5 | …..
|
Dankeschön! :)