mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mehrere Werte speichern mit Capture


Autor: Felix Okocha (felix85)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Felix Okocha (felix85)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.