Forum: Mikrocontroller und Digitale Elektronik mehrere Werte speichern mit Capture


von Felix O. (felix85)


Lesenswert?

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??

von Phantomix X. (phantomix)


Lesenswert?

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.

von Felix O. (felix85)


Lesenswert?

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
Noch kein Account? Hier anmelden.