RINGpuffern eines asynchronen externen Signals

Gast #884068
Lesenswert?

Hallo,

ich möchte ein digitales asynchrones Signal mit einer Genauigkkeit von 
0,5ms sampeln und  über einen Ringpuffer ~200ms später ausgeben. Das ist 
alles, was der Mega32 zu tun hat.

Die Frage ist nun: wie lese ich ein solches Signal aus? Das Signal wird 
niederfrequent (<100HZ) an und ausgehen, ich möchte diese Zeitpunkte 
jedoch zeitl. auflösen.

Ich dachte daran bspw. das Signal mit 2kHz abzuspeichern, für jeden 
Zeitschritt jedoch drei ADC Auswertungen zu nehemen sobal der Wert über 
einem Schwellwert liegt mit eins abzuspeichern. Das würde ich ja am 
besten im free running mode machen!?
Das Signal kommt von einer PC Karte und ist in ttl. Kann ich mir dabei 
die ADC geschichte sparen? Denn wenn ich den free running mode nehme 
benötige ich ja den StackPointer und damit kann es ja problematisch 
werden ein 400bit grtosses Feld im Sram zu reservieren!?



Viele Grüße
Horst
Gast #884074
Lesenswert?

Hallo Horst,

> Das Signal kommt von einer PC Karte und ist in ttl.
> Kann ich mir dabei die ADC geschichte sparen?

Ja

> Denn wenn ich den free running mode nehme benötige ich ja den
> StackPointer

den brauchst Du (fast) immer

> und damit kann es ja problematisch werden ein 400bit
> grosses Feld im Sram zu reservieren!?

Nein - der ATMEGA32 hat 2k

Gruss Otto
Gast #884102
Lesenswert?

danke für die schnellen Antworten!

ich benötige die Werte des Signals selbst nicht! ursprünglich dachte ich 
daran einfach ein Schieberegister mit einer variablen Clock zunehmen und 
so das definierte delay zu erzeugen. dochh 400zellige Schieberegister 
gibt es wohle nicht.

wie kann ich denn den speicher reservieren, sodass der stack weiss, dass 
er da nicht reinfunken darf?

reicht ein einmaliges einlesen des Eingangslevels?

Viele Grüße
Horst

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren