Hallo zusammen, habe folgendes Problem: Ich habe eine Analoge Sinuskurve, die in 10Bit digital umgewandelt wird. Die Abtastungen sind ca. alle 30ms. Die 10Bit sind aufgeteilt in P5 (bit 9, 8) und P4 (bit 7-0). Nebenbei läuft ein Rechtecksignal. Das toggelt immer an der Grenz zu 2,5V (die Hälfte). Ich habe nun folgende kleine Programme geschrieben die jeweils den kleinsten Wert von P4 und P5 ermitteln. Ich brauche nun eine Ausgabe, die immer nur das neuste Maxima bzw Minima anzeigt. Da die Kurve ja periodisch weiter läuft... Steh grad auf dem Schlauf und weiß nicht wie ich das realisieren kann. Hat jemand eine Idee/ Vorlage/ Fertiges UP? Viele Grüße Aufruf aus der ISR (timer0) timer0: ......... ..... .. Wandlung usw in P5, P4 (Beispiel: 11 (P5) 1100 1010 (P4)) call kleinste_P5_in_R2 ; Vorheriger Wert R5 wird mit P5 verglichen call kleinste_P4_in_R3 ; Vorheriger Wert R4 wird mit P4 verglichen mov R5, P5 mov R4, P4 ... ... ..... ret ; +++ Findet kleinsten Wert von P5 und schreibt diesen in R2 +++ kleinste_P5_in_R2: mov A, R5 cjne A, P5, ungleich_P5 ; R2 wird mit P5 verglichen sjmp R5_KlGl_P5 ; C=0, R2=P5 ungleich_P5: jc R5_KlGl_P5 ; C=1, R2<P5 jmp R5_Gr_P5 ; C=0, R2>P5 R5_KlGl_P5: ; R2<=8 ret R5_Gr_P5: mov r2, P5 ret ; +++ Findet kleinsten Wert von P4 und schreibt diesen in R3 +++ kleinste_P4_in_R3: mov A, R4 cjne A, P4, ungleich_P4 ; R2 wird mit P5 verglichen sjmp R4_KlGl_P4 ; C=0, R2=P5 ungleich_P4: jc R4_KlGl_P4 ; C=1, R2<P5 jmp R4_Gr_P4 ; C=0, R2>P5 R4_KlGl_P4: ; R2<=8 ret R4_Gr_P4: mov r3, P4 ret
* Wenn P5 kleiner als dein vorheriges kleinstes_P5 ist, dann hast du auf jeden Fall ein neues Minimum: P5 als kleinstes_P5 und P4 als kleinstes_P4 merken * Wenn P5 gleich deinem vorhergehenden kleinstes_P5 ist, dann hängt es alleine von P4 ab, ob ein neues Minimum vorliegt. Ist P4 kleiner als kleinstes_P4, dann gibt es ein neues Minimum: P4 als kleinstes_P4 merken * Ist P5 schon größer als das vorhergehende kleinstes_P5 dann kann das kein neues Minimum sein. Bsp im Dezimalsystem: Dein bisheriger kleinster Wert sei 3 4 (alias 34, die 3 sei in kleinstem_P5 und die 4 in kleinstem_P4) Jetzt stellt sich die Frage, ob 2 7 (alies 27) kleiner ist. ( 2 sei in P5, 7 in P4) Da 2 kleiner als 3 ist, hast du mit Sicherheit eine kleiner Zahl gefunden. Was ist mit 3 2? (bisheriges kleinstes wieder 3 4) Die P5-er Stellen vergleichen, ergibt das 3 gleich 3 ist. Also hängt es von den P4-Stellen ab: 2 ist kleiner als 4 -> neuer kleinster Wert. Was ist mit 3 8? Die P5-Stellen vergleichen ergibt wieder: 3 gleich 3. Also werden die P4 Stellen untersucht. 8 ist aber nicht kleiner als 4. Also kann 3 8 nicht kleiner als 3 4 sein. Was ist mit 5 9? P5-Stellen vergleichen: Da 5 nicht kleiner als 3 ist, braucht man die P4-Stellen nicht mehr vergleichen. Die Zahl 5 9 kann nicht kleiner als 3 4 sein. Die kleinste Zahl in all deinen P4-Werten zu suchen ist zwar eine nette Übung, aber völlig sinnlos. Du kannst das Minimum nur dann finden, wenn du an jedem Messpunkt den zugehörigen P5+P4 Wert als 16-Bit Zahl auffasst und mit dieser Kombination aus P5+P4 Wert deine Minimumsuche veranstaltest.
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.