Hallo Dirk,

Zitat Zitat von Dirk
verstanden! War sehr deutlich.
böse gemeint war das nicht, das Thema ist nur komplex und mir fehlt die Zeit das alles im einzelnen aufzudröseln .
(Dabei will ich ja eigentlich nur die [highlight=red:d9beb835f0]Variablen[/highlight:d9beb835f0] der Softclock und eigentlich nicht den Takt (32768Hz Quarz an TOSC) nutzen. Aber ich will hier 'mal nicht weiter nerven und mache noch ein paar Versuche, bevor ich aufgebe.)
Na ja, alleine mit den Variablen wirst Du nicht glücklich. Mit den Variablen soll ja etwas passieren. Date$ und Time$ sollen berechnet werden, _min, _sec, _hour sollen weiterzählen usw. Sonst passiert genau das, was Du festgestellt hast: Es wird einmal auf den eingelesenen Stand gebracht und da bleibt es dann, wenn nicht fortlaufend aktualisiert wird.

Als Hilfe zur Selbsthilfe versuche ich kurz zu erklären. was im Groben bei Config Clock passiert:

1) Es werden die Variablen angelegt.
2) Es wird die datetime.lib eingebunden.

Abhängig von soft oder user wird nun entweder alles in datetime erledigt (im Sekundentakt) oder bei user werden die Label:

getdatetime:
settime:
setdate:

im Hauptprogramm oder einer weiteren Lib angesprungen. Auch das passiert im Sekundentakt, den Timer2 mit dem von Dir so ungeliebten Uhrenquarz zur Verfügung stellt.
Der Programmierer muss nun dafür sorgen, daß diese Label entsprechende Subroutinen enthalten. Es müssen nur die Uhrzeit und das Datum (dezimal) zur Verfügung stehen, den Rest errechnet wieder die datetime.lib.

Aus den oben genannten Voraussetzungen geht hervor, daß die DCF77 Routine naturlich laufen müsste, damit sie datetime die entsprechenden aktuellen Informationen geben kann.

Abgesehen davon, daß man für effizientes Arbeiten die DCF77.lib nicht unerheblich umschreiben müsste, hätten wir auch das Ziel des weniger störenden Interrupts nicht erreicht. Im Gegenteil: Statt eines Interrupts funken nun zwei in der Gegend herum.

Bei meiner Modifikation umgehe ich das Problem, indem ich einfach nach erfolgter Synchronisation die Daten an Bascoms Softclock die Daten übergebe, den DCF77 Timerinterrupt abschalte und den Softclockinterrupt einschalte. Von nun an rechnet brav Softclock mit all seinen Vorteilen, bis ich wieder aktualisieren möchte (wenn Bedingung erfüllt - wieder Timer umschalten, Synchronisieren, Softclock aktualisieren, wieder Timer umschalten).

Wenn Du nun nur die zusätzliche Funktionalität der Softclockvariablen haben möchtest, musst Du das im Hauptprogramm selbst nachbilden. Im DCF77 Interrupt geht das nicht, der würde zu lang.

Hoffe das macht die Sache etwas klarer.

BTW: Du nervst nicht, nur muss ich hier mit einem Projekt fertigwerden (auch so eine Fleißarbeit) von dem dann mehrere Schulklassen abhängen... Die Jungs und Mädels würden es mir recht übelnehmen, wenn ich sie nicht rechtzeitig mit Hard- und Software füttern würde .

Viele Grüße
Henrik