danke schön. super!!!
habe jetzt noch ein programm geschrieben um zu überprüfen ob meine Schaltung überhaupt funktioniert. und zwar nehme ich einen bandpass mit realtiv großer bandbreite und wenn dann output[n] größer als 0 ist, bedeutet es ja, dass ein Signal eingegangen ist...
Code:
#include <inttypes.h>
#include "asuro.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 = Wert der Signallänge*/
a2=3;
a3=2;
GAIN_FRAC=1;
for (n=0;n<length;n++)
{
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*/
if (output[n]>0) /* wenn ein Signal erkannt wird, ist output[n] immer größer 0*/
{
DDRB|=(1<<PB1); /*Setze PB_1 auf output*/
PORTB|=(1<<PB1); /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
Sleep(100);
PORTB&=~(1<<PB1);
}
}
}
blos habe ich jetzt n error drin:
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr4/crtm8.o
.init9+0x0): undefined reference to `main'
was ist falsch??
Lesezeichen