-
das ding ist da wir davon ausgehen das der 4P nicht nur normale R's sondern komplexe enthält. heißt wir messen mit wechselspannung.... bis ca. 1kHz was die oben erwähnte geschwindigkeit nötig macht. aber ich habs mal durchgerechnet mit dem was ich denke was man an befehlen braucht bin ich eher für den ADC zu schnell *g*... gibts für die ATmega so ne art sleep oder wird das via timer bzw. schleife geregelt?
-
Wenn du ein Signal von 1kHz messen willst, musst du mit mindestens 2,001kHz abtasten. Das Abtasttheorm besagt, dass du die Bedingung fa>2*f erfüllen musst, wenn du mit dem Ergebnis was anfangen willst. Wenn man das Abtasttheorem nicht einhält, kommen so lustige Effekte zustande, dass man eine deutlich niederfrequente Schwebung auf dem Signal sieht. Das siehst du manchmal in Filmen, wenn ein fahrendes Auto gefilmt wird und sich die Reifen rückwärts drehen... da wurde dann zu niedrig abgetastet.
Les dir einfach mal die kleine Einführung auf Wikipedia durch, dann wird dir vieles klar werden...
Link
MfG
Stefan
-
jo das shannonsche Abtasttheorem. THX aufjedenfall für den Tipp aber den teil der theorie haben wir schon durchgekaut *g*.
und es hat eine dicke rinde.
schon mal probiert das ganze mit 3 bzw. nur 2 messewerten zu machen?
a1=â*sin(w*t1+p)
a2=â*sin(w*t2+p)
...
das ist verdammt haarig.
vorallem weil nirgendwo steht wie es geht, nur dass es geht...
ich hatte mir das prog ungefähr so vorgestellt (kenn die genauen assembler befehle noch nicht, sry):
Clk -> 1
SHL WertLow1
WertLow1 AND Port1
SHL WertLow2
Wert2 AND Port2
SHL WertLow3
WertLow3 AND Port3
Clk ->0
das ganze dann 8x und dann noch 4x mit nem HighByte
dann der zweite durchgang des ganzen und schluss endlich die übergabe an den PC.
-
Du hast kein Problem, so lange du ein periodisches Signal (das ist ja die Vorraussetzung für das Theorem) unendlich lange abtastest.
Wenn du das nicht tust, musst du natürlich oversamplen, um ein sinnvolles Ergebnis zu erhalten... Daher hab ich dir ja auch den Wikipedia-Link reingeschrieben, weil ich meinte, dass ich das dann nicht schreiben muss (Faulheit)...
Zu deinem Code:
Du schiebst nach Links, das ist soweit ok, aber warum verUNDest du dann?
Ich denke du meinst da verODERn...
Was du noch machen musst, das sind Wartezyklen. Wenn du in Assembler programmierst, machst du das typischerweise über Schleifen mit einer Zählvariable, und in der Schleife die entsprechende Anzahl an NOPs, so dass die Zeit genau passt.
MfG
Stefan
-
Ja stimmt muss "verODERn" sein.
was sind NOP's?
-
NOP issn assemblerausdruck und heißt übersetzt: "No Operation" d.h. das in diesem TAKTZYCLUS nicht ausgeführt wird, wird oft verwendet wenn man eine sehr sehr kleine wartezeit braucht
Martin