Hi Leute!
Ich möchte den Mittelwert eines EKG-Signals bilden (N=30):
Ich habe die Funktion folgendermaßen implementiert:
1 | signed long mov_int(signed long *data)
|
2 | {
|
3 | signed long y=0,i=0;
|
4 |
|
5 | for(i=0;i>=29;i++)
|
6 | {
|
7 | y += data[i];
|
8 | }
|
9 | y = y/30;
|
10 |
|
11 | USART_Transmit_4Bytes(y);
|
12 |
|
13 | return y;
|
14 | }
|
Ich bekomme immer nur 0 als Wert zurück obwohl die Eingangswerte nicht 0
sind.
Zur Überprüfung der Eingangswerte habe ich die Funktion so geändert und
mir immer den aktuellsten Wert von data anzeigen lassen. Da erhalte ich
immer die richtigen Werte.
1 | signed long mov_int(signed long *data, unsigned char n)
|
2 | {
|
3 | signed long y=0,i=0;
|
4 |
|
5 | USART_Transmit_4Bytes(data[n]);
|
6 |
|
7 | for(i=0;i>=29;i++)
|
8 | {
|
9 | y += data[i];
|
10 | }
|
11 | y = y/30;
|
12 |
|
13 | return y;
|
14 | }
|
Dann habe ich die Funktion noch so abgeändert dass sie mir jeweils die
Werte von y in der for-schleife ausgegeben werden.
1 | signed long mov_int(signed long *data, unsigned char n)
|
2 | {
|
3 | signed long y=0,i=0;
|
4 |
|
5 | for(i=0;i>=29;i++)
|
6 | {
|
7 | y += data[i];
|
8 | USART_Transmit_4Bytes(y);
|
9 | }
|
10 |
|
11 | y = y/30;
|
12 |
|
13 | return y;
|
14 | }
|
Hier bekomme ich gar keine Werte ausgegeben. Hat jemand eine Idee woran
das liegen könnte?