habe jetzt mal das 1. programm geschrieben, sowie ich denke dass es sinn macht. ist jetzt so aufgebaut dass er i hochzählen lässt. bei jedem i wird x0 berechnet. es leuchtet die kontrollled dass er auch rechnet. dann wird mit if abgefragt ob x0=y0. wenn es der fall ist, dann leuchtet die LED des Bandpasses. Und gegebenenfalls wird mit SerWrite ein Fallx gesendet.Außerdem wird am Ende der if schleife alle Variablen wieder auf 0 gesetzt, dass x0 immer neu berechnet werden kann.
habe leider viele errors drin. es wird wohl gesagt dass die Pins nicht deklariert sind oder so...
habe jetzt diese errors:Code:#include <inttypes.h> void bpfilter(int8_t *input,int8_t *output, uint16_t *length, int32_t koeff) { int32_t a2; /* a2 als Integervariable festlegen*/ int32_t a3; /* a3 als Integervariable festlegen*/ int32_t GAIN_FRAC; /* GAIN_FRAC als Integervariable festlegen*/ int32_t x0,x1,x2; /* x0,x1,x2 als Integervariable festlegen*/ int32_t y0,y1,y2; /* y0,y1,y2 Integervariable festlegen*/ uint16_t n; /* n Integervariable festlegen*/ uint16_t i; /* i als Integervariable festlegen*/ x1=0; /* Wert für x1 festlegen*/ x2=0; /* Wert für x2 festlegen*/ y0=0; /* Wert für y0 festlegen*/ y1=0; /* Wert für y1 festlegen*/ y2=0; /* Wert für y2 festlegen*/ x0=1; /* Wert für x0 festlegen*/ length=100; /* Wert für length festlegen*/ for (i=1;i<7;i++) /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/ { if (i==1) /* Schleife 1 mit den Werten für Bandpass 1*/ { a2=2; a3=3; GAIN_FRAC=4; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRC|=(1<<PC1); /*Setze PC_1 auf output*/ PORTC|=(1<<PC1); /*Setze PC_1 auf 1 --> LED 1 leuchtet*/ Sleep(100); PORTC&=~(1<<PC1); /*Setze PC_1 auf 0 --> LED 1 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ } } } if (i==2) /* Schleife 2 mit den Werten für Bandpass 2*/ { a2=1; a3=2; GAIN_FRAC=3; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRC|=(1<<PC4); /*Setze PC_4 auf output*/ PORTC|=(1<<PC4); /*Setze PC_4 auf 1 --> LED 2 leuchtet*/ Sleep(100); PORTC&=~(1<<PC4); /*Setze PC_4 auf 0 --> LED 2 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ SerWrite("fall 1"); /*Über IR-Diode Fall1 senden*/ Msleep(100); } } } if (i==3) /* Schleife 3 mit den Werten für Bandpass 3*/ { a2=3; a3=2; GAIN_FRAC=1; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRC|=(1<<PC3); /*Setze PC_3 auf output*/ PORTC|=(1<<PC3); /*Setze PC_3 auf 1 --> LED 3 leuchtet*/ Sleep(100); PORTC&=~(1<<PC3); /*Setze PC_3 auf 0 --> LED 3 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ SerWrite("fall 2"); /*Über IR-Diode Fall2 senden*/ Msleep(100); } } } if (i==4) /* Schleife 4 mit den Werten für Bandpass 4*/ { a2=4; a3=2; GAIN_FRAC=3; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRB|=(1<<PB5); /*Setze PB_5 auf output*/ PORTB|=(1<<PB5); /*Setze PB_5 auf 1 --> LED 4 leuchtet*/ Sleep(100); PORTB&=~(1<<PB5); /*Setze PB_5 auf 0 --> LED 4 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ SerWrite("fall 3"); /*Über IR-Diode Fall3 senden*/ Msleep(100); } } } if (i==5) /* Schleife 5 mit den Werten für Bandpass 5*/ { a2=1; a3=1; GAIN_FRAC=1; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRB|=(1<<PB4); /*Setze PB_4 auf output*/ PORTB|=(1<<PB4); /*Setze PB_4 auf 1 --> LED 5 leuchtet*/ Sleep(100); PORTB&=~(1<<PB4); /*Setze PB_4 auf 0 --> LED 5 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ SerWrite("fall 4"); /*Über IR-Diode Fall4 senden*/ Msleep(100); } } } if (i==6) /* Schleife 6 mit den Werten für Bandpass 6*/ { a2=2; a3=4; GAIN_FRAC=3; for (n=0;n<length;n++) /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/ { x0=input; /* x0 als Eingang festlegen*/ y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/ x2=x1; x1=x0; y2=y1; y1=y0; output[n]=((y0*GAIN_FRAC)>>16); /* Gleichung um Ausgang zu berechnen*/ DDRB|=(1<<PB1); /*Setze PB_1 auf output*/ PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/ Sleep(100); PORTB&=~(1<<PB1); /*Setze PB_1 auf 0 --> KontrollLED geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ if (y0==x0) { DDRB|=(1<<PB0); /*Setze PB_0 auf output*/ PORTB|=(1<<PB0); /*Setze PB_0 auf 1 --> LED 6 leuchtet*/ Sleep(100); PORTB&=~(1<<PB0); /*Setze PB_0 auf 0 --> LED 6 geht aus*/ x0=x1=x2=0; /*Alle Variablen auf 0 setzen*/ y0=y1=y2=0; /*Alle Variablen auf 0 setzten*/ } } } } }
../ZUSATZ1552.c: In function 'bpfilter':
../ZUSATZ1552.c:30: warning: assignment makes pointer from integer without a cast
../ZUSATZ1552.c:42: warning: comparison between pointer and integer
../ZUSATZ1552.c:44: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:53: error: 'DDRB' undeclared (first use in this function)
../ZUSATZ1552.c:53: error: (Each undeclared identifier is reported only once
../ZUSATZ1552.c:53: error: for each function it appears in.)
../ZUSATZ1552.c:53: error: 'PB1' undeclared (first use in this function)
../ZUSATZ1552.c:54: error: 'PORTB' undeclared (first use in this function)
../ZUSATZ1552.c:55: warning: implicit declaration of function 'Sleep'
../ZUSATZ1552.c:63: error: 'DDRC' undeclared (first use in this function)
../ZUSATZ1552.c:63: error: 'PC1' undeclared (first use in this function)
../ZUSATZ1552.c:64: error: 'PORTC' undeclared (first use in this function)
../ZUSATZ1552.c:79: warning: comparison between pointer and integer
../ZUSATZ1552.c:81: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:99: error: 'PC4' undeclared (first use in this function)
../ZUSATZ1552.c:106: warning: implicit declaration of function 'SerWrite'
../ZUSATZ1552.c:107: warning: implicit declaration of function 'Msleep'
../ZUSATZ1552.c:119: warning: comparison between pointer and integer
../ZUSATZ1552.c:121: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:139: error: 'PC3' undeclared (first use in this function)
../ZUSATZ1552.c:158: warning: comparison between pointer and integer
../ZUSATZ1552.c:160: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:178: error: 'PB5' undeclared (first use in this function)
../ZUSATZ1552.c:197: warning: comparison between pointer and integer
../ZUSATZ1552.c:199: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:217: error: 'PB4' undeclared (first use in this function)
../ZUSATZ1552.c:236: warning: comparison between pointer and integer
../ZUSATZ1552.c:238: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:256: error: 'PB0' undeclared (first use in this function)
Build failed with 13 errors and 16 warnings...







Zitieren

Lesezeichen