DCF77 ohne Interrupt Pin möglich?

Hey, ich wollte gern wissen ob ich DCF77 Empfänger immer an einem Interrupt Pin betreiben kann oder ob es auch über jeden anderen Pin gehen kann. An Pin 2 + 3 (arduino uno) läuft es aber an allen anderen nicht.

Am Ausgang eines DCF77-Moduls liegen High- oder Low-Pegel an. Diese kann man prinzipiell auch mit einem beliebigen digitalen Eingang abfragen. Das bezeichnet man auch gern als Pollen (engl. to poll - abfragen). Wenn dein Mikrocontroller durch weitere Programmroutinen (odedr auch delays!) stark ausgelastet ist, kann es durchaus passieren, dass dir ein Pegelwechsel am Eingang entgeht, was dann die gesamte Auswertung des Zeitsignals ruiniert. Daher legt man das Signal oft an die Interruptpins. Ein Flankenwechsel an diesen werden immer erkannt. Letztlich kommt es auch darauf an, ob du das Signal selbst auswerten willst oder ob du eine fertige Bibliothek hierfür einbinden möchtest. Im zweiten Fall kann es Pin-Beschränkungen innerhalb der Library geben.

Das kann ich nicht ganz unterschreiben. Delays sind in so einem Programm absolutes tabu. Aber du wirst mit "normalem" Programmcode die flankenwechyel sehen da die Siganle 100 ms buw 200 ms sind für nullen und einsen. Selbst komplexe Programme laufen mit 3-4ms das heisst du erkennst auf jeden Fall die unterschiede. Das Hauptproblem sind eher die Störungen zu filtern. Gruß Der Dani

volvodani: Das kann ich nicht ganz unterschreiben. Delays sind in so einem Programm absolutes tabu.

Ich habe nichts anderes gemeint. Wenn der Mikrocontroller durch ein delay blockiert, kann man schlecht pollen. Tut mir leid, wenn das missverständlich rüberkam.

In Bascom soll man jeden Pin verwenden könne aber selbst da geht es nicht.
Wenn ich die standart DCF77 lib von arduino nehme und den Pin3 mit Interrupt 1 dann bekomme ich am Pin 2 immer ein signal, bekomme ich das irwie weg?

Wenn ich die standart DCF77 lib von arduino nehme und den Pin3 mit Interrupt 1 dann bekomme ich am Pin 2 immer ein signal, bekomme ich das irwie weg?

Kannst du dies ein wenig präzisieren - wie schaut dein Sketch aus ?

Hast du ein Signal von deinem DCF Empfänger ? - Mit einem Logigtester oder einer LED und evtl. mit etwas Beschaltung zu prüfen.

Du solltest uns mit Links zu der Hardware (DCF77-Empfänger) und Software (entsprechende Bibliothek) versorgen, sonst könntest Du womöglich Tips für andere Komponenten bekommen, die Dir gar nichts nutzen.

Bei meinem DCF77-Empfänger bekomme ich am Arduino kein auswertbares Signal, wenn ich den Computer per USB angeschlossen habe, erst im Stand-Alone-Modus funktioniert es. Könnte es sein, dass Du ähnliche Probleme hast?

Die Arduino DCF77 library will einen Interrupt Pin haben. Allerdings ist den meissten nicht klar - dem Autor der Library anscheinend auch nicht, daß grundsätzlich jeder Pin als Interrupt Pin verwendet werden kann. Wer’s nicht glaubt schaut im Datenblatt nach. Allerdings sind einige Interrupts etwas einfacher zu handhaben und deshalb werden die immer bevorzugt genommen.

Mein DCF77 Projekt verwendet keine Interruptpins. Und sie ist sehr viel störungssicherer als alle anderen die ich kenne. http://blog.blinkenlight.net/experiments/dcf77/local-clock/.

Hallo Udo, dein Code ist für einen Umsteiger von Delphi ein harter Brocken zu verstehen ....template =( :blush:

Wäre es möglich, deinen Code in eine Lib zu packen ?

Wäre es möglich, deinen Code in eine Lib zu packen ?

Ja klar, eine gute Übung für einen ex-Delphianer.

Aber man kann auch Projekte mit mehreren Dateien machen, ohne dass diese in speziellen libraries Ordnern liegen müssen. Oder nennst du alles, was eine .h include-Datei hat, eine Lib? Oder ist alles, was eine class definiert?

In meinem Entwicklungsprojekt besteht die Uhr aus 3 Teilen. Für meinen Blog habe ich das hintereinandergehängt. Es ist nicht schwer das wieder in eine Lib umzupacken. Wie schon gesagt wurde: nette Übung ;)

Sobald ich die Uhr komplett fertig habe stelle ich das vieleicht auch nochmal extra als Library zur Verfügung. Bis dahin habe ich die 1 Datei Version gewählt weil ich keine Lust hatte zu erklären wie man Libraries installiert.

Aber man kann auch Projekte mit mehreren Dateien machen, ohne dass diese in speziellen libraries Ordnern liegen müssen.

In dem Fall muss ich keine *.h mit den exportierten Funktionen bauen - oder doch ? Habe das jedenfalls so in einem Beispielcode gesehen.

Oder ist alles, was eine class definiert?

Das eine class zwingend keine Lib ist, ist mir schon klar - eine Lib kann ja auch diverese Classen definieren.

Delphi ist ja auch eine oop Sprache, nur in C++ ist halt sehr vieles anderes. Muss also noch viel lernen.

Nachtrag Zitat von Udo:

Bis dahin habe ich die 1 Datei Version gewählt weil ich keine Lust hatte zu erklären wie man Libraries installiert.

Verstehe ich nicht, eine Lib muss doch nur in dem Lib Ordner mit der *.h und *.c++ Datei liegen. Das kann sogar ich ;-) Installieren muss man dort nichts,

Libraries erstellen hat nicht die Bohne mit OOP oder nicht OOP zu tun. Das ist ausschliesslich Handwerk das bei jeder Sprache irgendwie etwas anders geht. Es lohnt sich grundsätzlich sowas in den Tutorials zu lernen und dann selber zu probieren. Mein DCF77 Code wäre gar keine schlechte Übung. Du brauchst ja nur die 2 "Schnitte" zu finden und eine .h, eine .cpp und eine .ino Datei daraus zu basteln. Danach noch die Standardmakros rum und fertig.

Das dauert länger als wenn ich Dir das fertig gebe, aber danach hast Du keinen Fisch, danach kannst Du selber angeln.

Nebenbei: die Anleitung im Arduino Wiki ist nicht korrekt. Man kann selbstverständlich auch Libraries ohne Klassen erstellen.

Libraries erstellen hat nicht die Bohne mit OOP oder nicht OOP zu tun.

Schon klar, dies war auf das Zitat von michael_x bezogen:

Oder ist alles, was eine class definiert?

Ich verstand das so, das er annimmt, das ich nicht verstehe was eine class ist.
Dann wäre ich ein kompletter Dau, stimmt aber nicht bin nur ein 50 % Dau :wink:

Das dauert länger als wenn ich Dir das fertig gebe, aber danach hast Du keinen Fisch, danach kannst Du selber angeln.

Ok - ich versuche es mal mit Arduino Wiki lesen.