Hallo Leute, hab gerade ein Projekt am laufen, wo ich gerade über das Tachosignal die Drehzahl bestimmen will. Der Mikrokontroller ist ein 80c517a. Meine Frage an euch: Wie kann man die Werte von mehreren steigenden Flanken speichern, ohne den vorherigen Wert zu überschreiben? Ich hab gelesen das es mit einem Array funktioniert, aber wie mach ich das??
Welchen Wert hat denn deine steigende Flanke? Flankensteilheit? Zeitpunkt? laufende Nummer? Drehzahlen würde ich immer so bestimmen: Gesucht: Flanken pro Zeiteinheit Lösung: Flanken zählen. Das Ganze gibt dann den Durchschnittswert für diese Zeiteinheit Beispiel: Deine Zeitbasis sind Sekunden (d.h. du willst einmal Pro Sekunde einen aktuellen Wert haben) Also fängst du am Anfang einer Sekunde an, die Impulse zu zählen. Am Ende der Sekunde hast du dein Ergebnis, das du weiter verarbeitest (bspw. umrechnest). Gleichzeitig muss dein Zähler auf 0 gesetzt werden.
Hier ist mein Programm womit ich die steigenden Flanken aufnehmen will, kann sich jmd. das mal ansehen und mir sagen was falsch sein kann? # include <reg517a .h> # define NUM_IMP 2 unsigned long lenImp [ NUM_IMP ]; main () { T2PS = 1; // fosz / 96 CTCON |= 0 x80 ; T2R1 = 0; // disable reload CCEN &= 0 xf7 ; // CC1 capture rising edge P1 .1 CCEN |= 0 x04 ; EX4 = 1; // interrupt on rising edge of P1.1 EAL = 1; T2I1 = 0; // start timer T2I0 = 1; while (1); } void compute () interrupt 2 // risinge edge, mit 2 Impulse { static unsigned char counter = 0; lenImp [ counter ] = 8681L / 1000; counter ++; if ( counter == NUM_IMP ) EAL = 0; }
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.