Portpin entbrummen

Gast #1109675
Lesenswert?

Hallo zusammen!
Ich habe eine Frage an die Assembler-Spezis:
Einen ATmega48 erhält ein Steuersignal aus einem Optokoppler mit zwei 
antiparallelen Leuchtdioden. Der Optokoppler wird mit 
50Hz-Wechselspannung angesteuert und der Portpin wackelt immer zwischen 
Null und Eins hin- und her. Der Puls (Null) ist dabei länger als die 
Pause (Eins).

Nun kann man dies Signal mit einem Kondensator beruhigen aber ich frage 
mich, wie man das elegant in Assembler ausfiltert.

Den Portpin kann ich in meinem Programm z.B. alle 5ms oder auch alle 
3,3ms abfragen.
Gibt es dafür eine Standard-Lösung?

Danke
Michi
(Firma: TravelRec.) Persönliche Seite #1109751
Lesenswert?

Ja, den Pin in regelmäßigen Abständen pollen und wenn sich der Pinstatus 
städig ändert, dann z.B. eine "1" ausgeben. Bleibt der Pin eine Zeit 
lang ständig auf 0 oder 1, dann eine "0" ausgeben. Will man genauere 
Angaben, läßt man eine Variable im Pollzyklus die Breiten von 1 und 0 
des Optokopplers zählen. Dazu muß das Pollintervall eventuell 
verkleinert werden, damit die Auflösung größer wird.
(Firma: TravelRec.) Persönliche Seite #1109955
Lesenswert?

Es kommt immer darauf an, was Du damit bezwecken willst. Es kann sogar 
von Vorteil sein, wenn Du einen Interruptpin dafür verwendest und in dem 
Interrupt einen Timer zurücksetzt. Fehlt der Interrupt bei fehlendem 
Signal, läuft der Timer über und löst ein Schaltsignal aus, vielleicht 
auch einen weiteren Interrupt. Dies läuft dann komplett in Hardware und 
braucht minimal Code. Kommt halt drauf an.

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