Forum: Mikrocontroller und Digitale Elektronik Portpin entbrummen


von Michi (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Michi (Gast)


Lesenswert?

@Travel Rec.
Hmm, ja. Das ist auch eine Idee. Es ging mir aber eher darum eine 
möglicht "quellcodeeffektive" Lösung zu finden.

Michi

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Michi (Gast)


Lesenswert?

Nicht schlecht! Das laß ich mir jetzt mal durch den Kopf gehen.
Vielen Dank!
Michi

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Keine Ursache ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.