Die Explosionsuhr. Der Wechsel der Zeit mal anders (aber ohne Knall).

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • @ommes tu mal langsam, mit dem Loben. Hast du es auch schon über Nacht getestet? Die Abfrage, ob genau eine bestimmte Sekunde des Tages eingetroffen ist, find ich nicht ganz risikoarm. Wenn du zufrieden bist, ist alles gut. Wenn du Lust zum Experimentieren hast, dann wähle nicht 4 Uhr, sondern probehalber eine Zeit, wo du das beobachten kannst. Einfach die 14400 (4 Uhr, 4*3600 Sekunden) gegen einen anderen Zeitpunkt austauschen, zB 15 Uhr, 15*3600=54000.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Werde ich noch testen...
      aber warum sollte er sich verzählen, die secofday wird doch im Controller gezählt, oder kommt die über die DCF.?
      Ich probier auch mal die Anzeige in der Nacht länger abzuschalten, das sollte doch über eine Abfrage der _std
      möglich sein?
    • verzählen nicht, aber vielleicht überspringen. Was auch nicht so tragisch wäre, Hauptsache, er synchronisiert sich alle paar Tage.
      Die Anzeige braucht man ja nur zum Zeit holen abschalten, wenn das dann nur 2 Min. dauert, auch recht. Was aderes ist es, die Anzeige zum Abdunkeln auszuschalten, dann ist ein längerer Zeitraum erwünscht. Probier einfach mal, kann na nix kaputt gehen...
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo,
      ich muß hier mal die Experten fragen, Bezug auf DCF Uhr.
      Ich hab einige Wortuhren gebaut, eine gute Vorlage im Netz gefunden und es hat auch alles gleich funktioniert.
      Die Uhr läuft stabil und auch genau.
      Nun hatte ich die Idee, wenn man die Uhrzeit abliest, weis man meist nicht den Kalendertag, Jahr und Monat hat man im Kopf. Also wäre es schön wenn die Wortuhr den Kalendertag anzeigen würde.
      Hab mich mit meinen bescheidenen Programmierkünsten drangegeben und auch das ist mir gelungen, kann man mit Sicherheit besser machen, aber es klappt ja.
      Ich nutze dazu einen Font von 5x7, da passen die Zahlen bestens in die Anzeige. Alle 30 Sekunden blende ich die Zahlen für 3 Sec. ein, die stehen ja in der Variablen _day.
      So weit alles gut, jetzt das Problem, wenn die Einblendung läuft geht die Uhr alle 2 Stunden 1Sec. nach.
      Eigentlich nicht schlimm, ich schalte die Anzeige nachts aus und so hat die Uhr genügend Zeit zum Synchronisieren,
      morgens geht sie wieder richtig.
      Ich frag mich nun wo verliert die Uhr diese Zeit, denn die ISR sectic, kommt doch immer pünktlich und hat doch wohl Vorrang, ja und ohne Einblendung geht sie ja auch richtig.
      Hat jemand dafür eine Erklärung ?
      Ich könnte ja alle 2 Std. eine Sekunde revidieren, aber das ist doch nicht im Sinne des Erfinders.
      Gruß Friedhelm
    • Hallo Franz,
      Entschuldigung, das ich jetzt erst antworte, ich hab schon gar nicht mehr mit einer Reaktion gerechnet.

      Also die Einblendung hab ich in einer Select Case gemacht. Ich schalte die betreffende Zeile und Spalte an
      und gehe dann mit Gosub nach "aus", dort wird die Anzeit gewartet, ausgeschaltet, die Auszeit gewartet
      und wieder zurück, dieses Multiplexen dauert eine Millisekunde. Mir ist bewusst das in 3 Sekunden auch 3000 mal
      mit Gosub gesprungen wird, aber die ISR sectic hat doch vorrang und zählt die Uhr weiter, oder geht vielleicht
      dort die Zeit verloren.
      Ich häng hier mal ein Stück des Programms an:

      Case 31
      Z5 = 0 : S2 = 1 : S3 = 1 : S4 = 1 : S9 = 1 : Gosub Aus
      Z6 = 0 : S1 = 1 : S5 = 1 : S8 = 1 : S9 = 1 : Gosub Aus
      Z7 = 0 : S5 = 1 : S9 = 1 : Gosub Aus
      Z8 = 0 : S2 = 1 : S3 = 1 : S4 = 1 : S9 = 1 : Gosub Aus
      Z9 = 0 : S5 = 1 : S9 = 1 : Gosub Aus
      Z10 = 0 : S1 = 1 : S5 = 1 : S9 = 1 : Gosub Aus
      Z11 = 0 : S2 = 1 : S3 = 1 : S4 = 1 : S8 = 1 : S9 = 1 : S10 = 1 : Gosub Aus
      End Select
      Loop Until _sec = 17 Or _sec = 47
      Return

      Aus:
      Waitus 900 ' Ontime 'Hellzeit
      Portb = &B11111111 'alle Zeilen AUS
      Porta = &B11100000 'low-aktiv!
      Portc = 0 'und alle Spalten aus
      Portd = 0 'high-aktiv
      Waitus 100 'Offtime
      Return

      Gruß Friedhelm
    • Hallo Franz,
      Case 31 ist der 31. Tag im Monat der ja angezeigt werden soll.
      Die Anzeige ist ja gemultiplext, jede Zeile wird 1 Millisekunde angezeigt,
      das macht in 3 Sekunden halt 3000 Aufrufe.
      Ich hab jetzt mal etwas geändert, um die ständige Gosub aufruferei nicht zu haben,
      aber dann wird das Programm riesig groß und sie läuft in 8 Stunden immer noch 3 Sec. zu langsam.
      Das Programm füllt jetzt einen Mega 16 fast voll aus.

      Jede halbe Minute wird Datum: angesprungen, dort wird in Abhängigkeit von _day
      das richtige Case angesprungen und nach 3 Sec. wieder verlassen.
      Ich versuch mal meine Erweiterung anzuhängen, das gesamte Prog. darf laut Verfasser nicht
      geändert und veröffentlicht werden.wortuhr.txt
    • Oh nein, dass glaube ich dir gerne, dass du damit den gesamten Flash vollschreibst.
      Da gehst du besser hin und legst die Bitmuster für jede der 7 Zeilen in eine Data Variable ab.
      Die liest du dann mit Read oder Lookup ein.
      Dann hast du das Ganze nur einmal.
      Diese ganze Sub Datum: von wo aus wird die aufgerufen, aus Sectic heraus? Dann wäre klar, dass das etwas länger als eine Sekunde dauert und damit die Zeit verschiebt.
      Könntest du einfach sehen, indem du die Waitus mal auf 950 insgesamt setzt.
    • Hallo Franz,
      zunächst mal vielen Dank für deine Hilfe.
      Die Sub Datum wird als erster Befehl in der Hauptschleife aufgerufen, der zweite
      ist eine Einblendung alle halbe Stunde, die aber die Zeit nicht beeinflusst.

      Do
      If _sec = 14 Or _sec = 44 Then Gosub Datum
      If _min = 29 And _sec = 25 Then Gosub Einblend

      Ich werde mal die Datumseinblendung auch auf eine halbe Stunde setzen und schauen
      ob sich die Zeit verschiebt.
      Die Datumseinblendung mit Lookup kam mir auch in den Sinn, aber ob ich das hin bekomme,
      na ja gut Ding braucht Weile.
      Wenn's nicht gelingt ist auch kein Drama, die paar Sekunden werden ja in der Nacht durch DCF wieder Korrigiert.
      Mir ging es ja darum zu ergründen warum die Uhr ausgebremst wird, denn eigentlich hat doch sectic Vorfahrt...
      Hier mal noch der Link zu der Wortuhr, die ja super funktioniert und die ich schon einige male nachgebaut habe.
      liebl-net.de/hard/qlock2/qlock2.php
      Friedhelm