Mahlzeit, folgendes ich scanne mit meinem ADC (8051 Derivat) mehrere Kanäle und schreibe die Werte für jeden Kanal in eine Tabelle mit 100 Werten. Dann durchsuche ich die Tabelle auf den größten gemessenen Wert was auch gut klappt. Jetzt mein Problem ich möchte gerne den gemessenen Werten die Zeit zu dennen Sie gemessen worden sind zuordnen. Wie stelle ich das an? Die Zeit für eine Wandlung dauert ca 6µs.
Brauchst du die Werte noh für andere Sachen, dass du sie in eine Tabelle schreibst? Sonst brauchst nämlich nur eine Variable für jeden ADC-Kanal: alterWert. Der Vergleich läuft dann so ab: ist alterWert < aktuellerWert? ja: speicher Zeit ab und setzt alterWert = aktuellerWert Nein: dann tue nichts. Für die Zeit musst du halt irgendwelche Variable bei jeder ADC-Messung inkrementieren... (Zeitbasis sind dann die 6µs).
Muss noch den Mittelwert errechnen deswegen Tabelle! Wie meinst du das genau mit speicher Zeit ab woweg nehmen?
Ich verstehe das Problem nicht. Wenn es 100 Messungen sind mit jeweils 6 µs, mußt du nur einen Zeitpunkt (z.B. den Anfang) speichern. Danach kannst du den Zeitpunkt jeder Messung daraus ausrechnen (Start + 6 µs * (Index * Kanalzahl + aktueller Kanal))
>Wie meinst du das genau mit speicher Zeit ab woweg nehmen? Was darf mir diese Frage sagen? Vermutung: Es hat irgendwas mit der "Uhrzeit" zutun. Man hat eine Zeitbasis, also ein Ereignis, dass in regelmässigen Abständen auftritt. Wenn man die Folge dieser Ereignisse mitzählt, kommt man zu einer Art Uhr (eine "normale" Uhr hat als Zeitbasis eine Sekunde). Lässt man diese Uhr nun im Controller laufen, dann kann man die Uhrzeit, zu der ein grösserer Wert aufgelaufen ist, in einer Variablen abspeichern (die Variable kann auch im EEPROM liegen...). Wenn du jetzt kontinuierlich den ADC ausliest, könnte man die Messdauer als Zeitbasis benutzen... Oder man geht den anderen Weg und lässt den ADC durch ein Timer-Interrupt auslösen (AFAIK können das eine AVR).
ja das ist ja soweit auch richtig meinte mit den 6µs nicht das jede Messung genau diese Zeit braucht da sind schon differenzen drin! Möchte halt eine Zeit zum Messwert haben die nicht berechnet ist!
Den Mittelwert kann man auch gleitend bilden... Und wie Hannes schon anmerkte: Benutze eine Tabellengrösse, die eine Potenz von 2 ist. Das verringert den Rechenaufwand.
Warum hast du uns das den anfangs verheimlicht? Du kannst natürlich, wenn du noch genug Speicher übrig hast, den Zeitpunkt jeder Messung auch mit in der Tabelle abspeichern. Den ermittelst du mit einem Timer. Wie das bei deinem µC genau geht, kann ich dir nicht sagen.
> Und wie Hannes schon anmerkte: Benutze eine Tabellengrösse, die eine > Potenz von 2 ist. Das verringert den Rechenaufwand. Das war ich nicht... Auch war das in einem anderen Thread... Aber dort gibt es ein AVR-ASM-Beispiel für Mittelwert über 256 Messungen: http://www.mikrocontroller.net/forum/read-1-404515.html#404841 ...
>Das war ich nicht...
Schuldigung. Bist du mir jetzt böse?
> Bist du mir jetzt böse?
Nööö, warum sollte ich? Es könnte aber sein, dass Andere auf uns böse
sind weil wir so oft OT-Dialoge schreiben...
Grüß die Sprotten...
...HanneS...
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.