Flankenerkennung

Gast #175712
Lesenswert?

Hallo,

ich würde gerne eine fallende Flanke mit einem uC erkennen. Int wollte
ich keinen verwenden, daher taste ich das Eingangssignal regelmäßig
(mit 10kHz) ab.

Leider funktioniert die Erkennung nicht ganz tadellos, daher meine
Frage:
Wie sicher wird denn ein anliegender High od. Low Pegel vom uC erkannt?
Kann es sein, dass wenn ich "zu schnell" abtaste bei einer fallenden
Flanke zuerst ein High, dann ein Low und dann, weil sich der uC nicht
ganz sicher ist noch ein High kommt?

Vielen Dank,

Daniel
Gast #175714
Lesenswert?

Ich verwende einen ATMega8.
Das soll eine bidirektionale Eindraht Kommunikation werden. Int ist
deshalb blöd, weil ich den dann auch jedes mal umschalten müsste (soll
ja zum senden und empfangen gehen) und außerdem weiß ich nicht, ob all
meine Endgeräte immer einen Int frei haben (Bisher basieren die auf
einem Tiny26). Ich möchte die Routine halt möglichst universell
gestalten.

Nochmal zurück zu meiner Frage:
Gibt es einen Volt-Bereich, bei dem der uC "sich nicht entscheiden"
kann, ob es eine 1 oder eine 0 ist, oder ist die Abgrenzung eindeutig?

Vielen Dank,

Daniel
Gast #175715
Lesenswert?

Also ich bin kein Physikexperte, aber rein logisch gesehen ist die
Abgrenzung eindeutig! Egal was passiert, der uC wird immer entweder 0
oder 1 als Zustand erkennen - schließlich kennt er keinen anderen
Zustand.
Was ist denn das für ein Eingangssignal, dessen fallende Flanke Du
erkennen möchtest (vor allem: wie schnell ist es - hat es ne höhere
Schaltfrequenz als 10KHz)?
Lohnt sich der Einsatz eines externen Integrators oder muß es
low-budget-mäßig integriert werden?
Gast #175716
Lesenswert?

Wenn Du gerade bei einer Flanke (die ja nicht unendlich kurz ist)
abtastest, bekommst Du trotzdem ein eindeutiges low oder high. So bei
halber Betriebsspannung (je nach MC) ist der Punkt, wo es sich
entscheidet. Wenn Du oft genug abtastest, geht Dir also nix verloren,
abgesehen vom exakten Zeitpunkt der aufgetretenen Flanke.
Gast #175717
Lesenswert?

Naja mit ext. Komponenten ginge es wohl auch nur in eine Richtung (Thema
Umschalten...), das ist damit wohl raus...

Aber wenn die Frequenz unter 10 KHz wäre (was sie wohl nicht ist oder
woher kommen die Probleme? kenne mich mit C nicht aus), dann wäre die
Lösung unter ASM doch recht simpel, oder? (bzw. mir fallen gleich
mehrere Lösungen ein)
Gast #175718
Lesenswert?

doch doch die Frequenz liegt bei unter 1kHz. Woher die Probleme kommen
bin ich mir auch nicht sicher. Es war halt nur so eine Vermutung, dass
es daran liegen könnte. Auf jeden Fall werden die übertragenen Bits
nicht richtig erkannt und im Debugger arbeitet es sich auch schlecht,
weil die Zeiten zwischen den Bits so lang sind.
Also bleibt nur "manueller Debugger" und alles per Hand durchgehen,
irgendwo muss ja der Fehler liegen...;-(

Viele Grüße,

Daniel
Gast #175719
Lesenswert?

Es gilt das Abtasttheorem:

Wenn Du mit 100µs (10kHz) abtastest, muß ein low- bzw. ein high-Pegel
immer länger als 100µs sein, damit er sicher erkannt wird.


Effektiv darf Dein Eingangssignal also nicht über 4kHz liegen (mit
Tastverhältnis 1:1).


Peter
Gast #175720
Lesenswert?

Ach ja das Abtasttheorem. Theoretisch ist die maximal abtastbare
Frequenz die halbe Abtastfrequenz, praktisch sollte sie noch etwas
niedriger liegen (wie Peter schon sagte)

Aber 1KHz ist weit drunter also liegt´s daran schonmal nicht.
Gast #175721
Lesenswert?

Bei ner Rechteckschwingung müßte die Abtastfrequenz demnach theoretisch
unendlich hoch sein ...Zum Glück reicht die Erfassung der Grundwelle -
wenn das Tastverhältnis 50% ist.

Allg. also muß das Abtastintervall mindestens kürzer als der kürzeste
zu erwartende Impuls (ob hi oder lo) sein.

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