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
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.
@Travel Rec. Hmm, ja. Das ist auch eine Idee. Es ging mir aber eher darum eine möglicht "quellcodeeffektive" Lösung zu finden. Michi
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.
Nicht schlecht! Das laß ich mir jetzt mal durch den Kopf gehen. Vielen Dank! Michi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.