mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Messung eines rechteckigen Signals


Autor: John Konj (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich hoffe jemand kann mir bei der Lösung meines Problems helfen. Also 
worum es geht:
Ich muss mit einem Interrupt ein rechteckiges Signal messen. D.h. ich 
muss die Zeit von Rising bis Reising messen was ich auch geschaft habe, 
aber wie kann ich mit dem selben Innterrupt die Zeit von Rising bis 
Falling messen, dazu muss ich sagen das rechteckige Signal ändert 
anderauernd die Periodendauer, das Signal wird nicht negativ es wird nur 
1 und 0 und da wo es 1 wird, die Zeit muss ich auch mit dem selben 
Interrupt messen das heißt von Rising bis Falling, die Zeit soll man 
einfach bei der Flanke Falling ablessen und als Past in einem Hyper 
Terminal schreiben werden.

Ich hoffe ich habe mich deutlich ausgedruckt und jemand kann mir helfen, 
und es ist dringend.
Schöne größe an jeden.

Autor: John Konj (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Leute hab nicht aufgepast und das falsche Program mitangehägt hier 
ist das richtige was ich gemacht habe.

Autor: Xpost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Harald H. (hhoopi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich denke, Du machst das Ganze mit einem ATMega32?
Wenn ja, sollte es kein Problem sein, da der INT0, sowie der INT1 auf 
Interrupt bei logischem Wechsel des Pins gesetzt werden können. Damit 
kann man sehr hervorragend genaue Ereignisse messen, indem man z.B. bei 
High-Flanke einen Zähler startet (Timer2 wird immer gerne genommen) und 
diesen bei der Low-Flanke ausliest. Sollte der Timer überlaufen, kann 
man dessen Interrupt nutzen, um eine Variable im Speicher hochzuzählen. 
Kommt irgendwann die Low-Flanke doch noch, nimmt man die Variable mal 
Timer-Wert plus Rest des Timers und hat die genaue Zeit. Für die Zeit 
zwischen Low- und High-Flanke gilt dasselbe. Der Interrupt löst bei 
jeder Flanke aus (wenn so eingestellt). Wichtig bei genauen 
Zeitmessungen ist die Addition der Ausführungszeiten des Prozessors 
(Laden des Timers, Berechnung der Gesamtzeit usw.). Diese, auch wenn 
kleinen Zeiten sollte man nicht vernachlässigen.

Da Du das Ganze mit Basic machst, sollte Dein Eingang nicht auf 
Rising-Interrupt, sondern auf "Config Int1 = Falling/ Rising" setzen. 
Habe ich zumindest gelesen. Ich kenne mich mit Bascom nicht aus. Wenn es 
nicht klappt, sollte man diese Einstellung in Assemler einfügen.

Gruß
hhoopi

Autor: John Konj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mir vielleicht eine vorgabe geben wie ich das bewergstelligen 
kann?
Also besser gesagt wie ich das in Bascom schreiben soll

Autor: Harald H. (hhoopi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Genau das ist mein Problem. Ih kenne mich in Bascom leider nicht aus, 
programmiere fast ausschließlich in C. Es gibt aber jede Menge Foren, 
die sich mit Bascom beschäftigen. Hier z.B. http://www.bascom-forum.de/ 
oder auf http://www.roboternetz.de solltest Du Dich mal umsehen.
Gruß
hhoopi

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.