
Zitat von
Dirk
Warum setzt Du eigentlich den Wert icrcnt_start.i16h in der ISR laufend zurück, ohne dass Du ihn jemals änderst ? Nicht dass es viel ausmachen würd', aber es ist sinnlos.
Code:
icrcnt_start.i16h = 0; // Reset upper 16 bits (start value)
Für die einmalige Initialisierung hätte Dir das gereicht:
Code:
static icrcounter_t icrcnt_start = {.i32=0};

Zitat von
Kampi
Der Compiler hat mir gar nichts zu der Variable Counter gesagt (und die Ausgabe per
UART klappt auch ohne Probleme) aber trotzdem danke für den Hinweis

../hh10d_meas.c:48: warning: 'Counter' may be used uninitialized in this function
Wenn der Stackspeicher nicht stark benutzt wird, dann ist es möglich dass zufällig für sich diese lokale Variable immer wieder die gleiche Adresse im Stack benutzt wird, dann geht es.
Änderst sich die Stackbenutzung kann dort ein anderer Wert stehen, mit entsprechendem Ergebnis.
Grundsätzlich hat eine lokale Variable als verloren betrachtet zu werden, außer sie wird static deklariert, dann bleibt sie im Speicher erhalten.
Lesezeichen