www.mikrocontroller.net

Forum: Projekte & Code steigende und fallende Flanken zaehlen


Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, hat jemand eine Idee wie man mit einem Zaehlereingang steigende
und fallende Flanken zaehlen kann?

Im Datenblatt (hier z.B. mega32) steht, dass die Zaehler nur auf
steigende oder fallende Flanken getriggert werden koennen.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
INT-EIngang nach jeder Flanke in der Interrupt-Routine umschalten.

Oder Impulsverdoppler mit EXOR-Gatter und RC-Glied davor. Also ein
EXOR-Eingang direkt angeschlossen, der andere mit R in Serie und C nach
Masse verzögert, das gibt für beide Flanken einen kurzen Impuls am
EXOR-Ausgang

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. oder nur die fallende Flanke zählen. Den Wert verdoppeln und 1
dazuzählen, wenn Pin beim Abfragen High ist.

Gruß, Stefan

Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Christoph_Kessler.

Stefans Beitrag war nicht sehr produktiv

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja? Was ist Dir daran zu unproduktiv?

Immerhin ist das eine Lösung, bei der Du nicht bei jedem Impuls einen
INT generieren musst.

Übrigens, wenn Du gerade bei produktiv bist: die Codesammlung ist nicht
für Fargen, sondern für produktive Beiträge Deinerseits.

Autor: Tobias Schneider (tobias)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessante Idee Stefan.

Guenters Beitrag ist leider nicht produktiv.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interssante Idee ? Ich meine es ist die offensichtlichste Lösung und
wohl der konstruktivste Beitrag im Thread.

Zwei fallende Flanken können nur auftreten wenn zwischen ihnen eine
steigende Flanke liegt. Das ist offensichtlich und logisch
unwiderlegbar. Ergo: man zählt nur eine der Flanken und addiert +1 wenn
beim Ende der Messung der aktuelle Pegel negiert ist.

Stefans Vorschlag ist also der technisch einfachste und logisch wohl
simpelste.

Gruß Hagen

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einem AVR verbindet man den Meßeingang mit einem T0 oder T1 Eingang.
Dieser zählt dann die Takte in einen Timer Counter. Parallel dazu lässt
man einen zweiten Timer eine bestimmte Meßzeit laufen. Nach der
geforderten Meßperiode nimmt man einfach den Timer Counter des T0/T1
Eingangs und addiert je nach Pegel am T0/T1 Eingang noch +1 drauf,
fertig. Ein 16Mhz AVR kann dann bis zu 4MHz auf diese Weise zählen.

Gruß Hagen

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.