Also ich hab folgendes Problem. Ich habe Serien von Ereignissen und die treten periodisch auf (so alle 4-5 Sekunden), wobei die periodendauer nicht fix ist. Ich möchte nun Ereignisse, die ausserhalb der Perioden fallen zuverlässig detektieren, wobei der Impuls selbst gerade mal 1/20 Sekunde lang ist. Ich brauche also nach Shannon ne Abtastrate von 200 Hz wenn ich richtig liege. Nun kommen die Daten aber kontinuierlich rein (Byte) und müssten dann ja ins ram, das durchgeschoben werden muß und dann will ich noch die periodendauer rausholen ... Ich bin am zweifeln ob das mein Mega32 kann. Hat jemand von Euch schonmal sowas gecodet?
heißt das, es fallen Impulse aus, oder es gibt zusätzliche Impulse außerhalb des 4-5 Sekunden-Rasters, zwischen den regulären?
man kann es sich in etwa wie die extrasystole beim herzschlag vorstellen. ... hmmm, ob n avr n herzsprung-russel-diagramm auswerten kann?
so in etwa solls gehen : 1=impuls, 0 kein impuls 1000000000000001 : erste periode 100000000000001: zweite periode 10000000000000001: dritte periode 1000000100000001: ALARM oder 1000001: erste periode 10000001: zweite periode 100001: dritte periode 100101: ALARM
Was spricht dagegen, die Zeit zwischen zwei Impulsen zu messen (Timer) und wenn die nicht weit genug auseinanderliegen, gibts nen Alarm.
Hi, Marko, "Also ich hab folgendes Problem." Und ich habe beim Lesen ein Verständnisproblem: 1." Ich habe Serien von Ereignissen und die treten periodisch auf (so alle 4-5 Sekunden), wobei die periodendauer nicht fix ist." 2." Ich möchte nun Ereignisse, die ausserhalb der Perioden fallen zuverlässig detektieren," Die Zuverlässigkeit der Detektion hängt direkt von der Zuverlässigkeit in der Prognose der Ereignisse ab. Aber genau die erklärst Du gleichzeitig als "nicht fix". Du benötigst eine eindeutige Größe, welche die gewünschten Signale von den uninteressanten unterscheidet. "Nach Gefühl" scheinst Du diese ja zu haben - jetzt brauchst Du es nur analysieren und in einen Algorithmus zur Detektion zu wandeln. Zur Pulsperiode und der Leistungsfähigkeit des Atmega16. Wenn die Pulse so selten sind, dann kannst Du sie mit dem "Input Capture" abfangen und den Zeitpunkt des Eintreffens registrieren, und pro Ereignis wäre eine long-variable schon reichlich. Die Auswertung der Zeitpunkte mit Mathematik, das stelle ich mir als Fleißarbeit vor, aber als machbar - wenn es ein eindeutiges Unterscheidungskriterium gibt. Ciao Wolfgang Horn
dito wolfgang input capture mit ner einfachen isr: flanken-trigger an input capture 1. lese zeit aus capture register 2. subtrahiere vom aktuellen wert den letzten 3. wenn differenz kleiner als schwellwert, dann alarm 4. speichere aktuellen wert in puffer (ersetz den letzten aus 2.) evtl. musst du mit den differenzen einen mittelwert bilden und dann den mittelwert als ausgangspunkt für eine dynamische schwelle nehmen
hmmm ... grübel @frank, timer ist schon klar, nur ist die Periodendauer halt variabel @hans dieter: Der Rechenaufwand für die Zeitvergleiche ist nicht gerade gering. Ich hab mir folgendes überlegt. Ich nehm nen Timer, der inkrementiert und ne Matrix von 6-8 byte-variablen auf 4-5 stufen. ein Ereigniss setzt den Pointer zurück und lässt den "Datensatzpinter" eins hoch wenn ich 3-4 zyklen ohne Zwischenereigniss hab muß ich nur noch die Datensätze per oder übereinander legen und schon hab ich ne Schablone. Ereignisse, die nicht in die Schablone passen müsstend dann den Alarm auslösen. 1000000000000001 : erste periode 100000000000001: zweite periode 10000000000000001: dritte periode oderverknüpft: 10000000000000111 = Schablone 1000000100000001: vierte Periode wenn ich nun die neue Periode mit der Schablone per Und vergleiche 1000000000000001 und dieses Zwischenergebniss wieder mit der ursprünglichen 4. Periode sind die Ungleich, der Alarm muß ausgelöst werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.