www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pin Zustand über bestimmten Zeitraum abfragen


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerade stehe ich auf dem Schlauch, vielleicht kann mir ja einer von euch 
helfen.

Auf einem Atmega8 habe ich einen Eingang dessen Zustand ich über einen 
bestimmten Zeitraum auswerten will. Ankommen tut nur "echtes" High / 
Low.
Nun würde ich gerne über einen Zeitraum von x sec. auswerten wie oft der 
Pin Low geht.

Der Anstoss dieser Funktion läuft über einen Interrupt.
Habt ihr eine Idee wie ich das ganze angehen könnte?
Der Zeitraum kann auch super kurz sein... eine Sekunden dürfte reichen.

Ich habe auch schon überlegt ob ich das Signal nicht einfach auf den 
Interrupt lege und dann in einer Variable die Aktivierungen des 
Interrupt mitzähle, aber dabei kann ich wohl kaum die Zeit 
berücksichtigen in der dies passiert, oder?
Hat jemand eine Idee?


Gruß
Sebastian

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian wrote:
> Ich habe auch schon überlegt ob ich das Signal nicht einfach auf den
> Interrupt lege und dann in einer Variable die Aktivierungen des
> Interrupt mitzähle, aber dabei kann ich wohl kaum die Zeit
> berücksichtigen in der dies passiert, oder?

Du läßt einfach nen Timer mitlaufen der jede 100ms eine Variable 
hochzählt.
Sobald das zählen starten soll sezt du diese Variable, sowohl als auch 
deinen Zähler auf 0 und schon hast du ne beziehung zwischen anzahl Ints 
und der Zeit :)

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Während ich schreibe, wird wohl gerade die Antwort abgeschickt, aber ich 
versuche es mal:
Timer einschalten und Zähler resetten, dann wie vorgeschlagen über einen 
Interrupt mit Auslösung bei fallender Flanke zählen und beim nächsten 
Timerinterrupt (Bei passender Zeiteinstellung) Zähler lesen und 
speichern. Dabei kannst du direkt den Zähler resetten und weitermessen.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:-O manchmal sitzt man aber auch auf seinem gehirn!!!

Danke dir! Das löst das Problem natürlich mehr als nur komfortabel und 
einfach!

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zähl die Pegelwechsel per Pin-Change-Interrupt oder einfach externen 
Interrupt in einer ausreichend großen Variable hoch. Dann stellst nen 
Timer auf deine Zeitspanne ein und im Timer-Interrupt kopierste die 
Zählervariable und setzt sie dann direkt wieder auf Null zurück. 
Fädisch.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah.. aber...
das "signal" liegt an an nem externen interrupt, genauer int1.
Ist der nicht höher priorisiert als der timer???
Also löst der Timerinterrupt dann überhaupt aus wenn int1 noch läuft?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian wrote:
> ah.. aber...
> das "signal" liegt an an nem externen interrupt, genauer int1.
> Ist der nicht höher priorisiert als der timer???
> Also löst der Timerinterrupt dann überhaupt aus wenn int1 noch läuft?

Jubb, aber der INT1 läuft ja nich permanent, d.h., also du befindest 
dich ja nur nen winzigen Bruchteil der Zeit im INT1. Dann rennt der 
Prozessor wieder im Leerlauf (sprich in der Hauptschleife) im Kreis. 
Schlimmstenfalls geht dir mal ein Takt flöten...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Interrupt

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.