mehrere Werte speichern mit Capture

OP #1626387
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??
#1626438
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.
OP #1627915
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;
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren