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
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
WEnn Du die Werte die Du aufnimmst nicht brauchst, sondern nur das verzögerte signal, dann wird ein if else mit angeschlossenem Delay doch ausreichen. Benötigst Du die aufgenommenen Samples?
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
@Marius: es kann jedoch vorkommen, dass der AVR mehrere Signale gleichzeitig im "Bauch" hat, sodass ein einfaches if...+delay das nicht direkt bewältigen kann. Viele Grüße
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
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.