Forum: Mikrocontroller und Digitale Elektronik Array full Interrupt or Event ?


von Lukas (Gast)


Lesenswert?

Hallo,

ich arbeite auf einem stm3210e-eval board und wollte mal fragen ob es ne 
möglichkeit gibt folgende Idee zu realisieren.

Ich habe einen ADC-kanal mit dem ich Werte alle 1ms per Timer hole und 
es in einen array sammle.

Nun ich will wenn mein array voll ist einen event oder interrupt 
aufrufen und den Mittelwert ausrechnen.

Wie bekomme ich diesen Event oder interrupt der erkennt das mein array 
voll ist bzw der letzte index befüllt wurde ?

von Irgendwer (Gast)


Lesenswert?

Timer triggert ADC -> ADC triggert DMA -> DMA gibt IRQ wenn "buffer 
full"

von jojo1969@gmx.de (Gast)


Lesenswert?

Wenn Du die Daten in ein Array schreibst, dann verwendest Du doch 
wahrscheinlich einen Array index oder Du benutzt DMA?

Wenn du den index incrementierst, dann solltest Du doch merken wenn der 
den Max Wert erreicht - oder?

von Lukas (Gast)


Lesenswert?

Ich mache das ganze in C, also ich benütze eine statische variable und 
zähle sie immer hoch.

von Karl H. (kbuchegg)


Lesenswert?

Lukas schrieb:
> Ich mache das ganze in C, also ich benütze eine statische variable und
> zähle sie immer hoch.

Dann versteh ich aber die Frage nicht.
Wenn du sowieso weißt, wieviele Elemente du bereits ins Array 
verfrachtet hast, was hindert dich dann daran diese ANzahl mit der Größe 
des Arrays zu vergleichen?

von Lukas (Gast)


Lesenswert?

Ich dachte das abfragen kostet immer Rechenzeit.
daher ein Event besser oder ?

von Hululu (Gast)


Lesenswert?

Mach es so einfach und primitiv machen wie Du es gerade beherrschen 
kannst. In ein paar Monaten dann kannst Du mal optimieren und ein paar 
"Tricks" probieren.

von Karl H. (kbuchegg)


Lesenswert?

Lukas schrieb:
> Ich dachte das abfragen kostet immer Rechenzeit.

Sind die paar µSekunden (wenn überhaupt) wirklich relevant?

> daher ein Event besser oder ?

Einen Event zu generieren und zu Bearbeiten kostet auch Rechenzeit. Und 
ich würde sogar mal sagen: mehr als eine simple Abfrage und das Setzen 
eines Flags, das irgendwo anders ausgewertet wird.

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
Noch kein Account? Hier anmelden.