Minuten, Stunden, Tage

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

    • djmsc wrote:

      Seit wann ist denn die Prüfung auf Gleichheit unsicher?
      Schon immer, sollte der Wert überschritten sein läuft er rund bis es passt.

      Franz wrote:

      Was willst du uns damit sagen?
      Ein Code Beispiel könnte Klarheit geben. Eine einfacher compare int kann genauso verzögert ankommen wie der Ovf (z.B. wenn gerade eine andere isr arbeitet) Der Compare hat die Hardware Möglichkeit den Timer auf Null zu stellen und damit wird es dann präzieser. Da die Zeit zur Isr nicht mehr mitgezählt wird bzw schon zur nächsten Sekunde gehört. Eigendlich bräuchte es dann die isr nicht mehr da die Main es abfragen kann wenn sie Zeit hat.
    • Die Zeitpunkt Ausführung des Compare Int hängt natürlich genau wie die aller Ints von dem ab, was der Controller gerade macht. Mal kommt sie sofort, mal erst wenn die laufende ISR fertig ist.
      Der Unterschied zum OVF ist, das die Auslösung immer im gleichen Abstand kommt. Beim OVF sieht das anders aus, da addiert sich eine Verzögerung immer weiter drauf.
      Wenn der benutzte Timer also einen Compare Int hat, würde ich den auch verwenden und nicht den Overflow.

      Absolut zeitunkritische Dinge könnte natürlich auch die Main Loop verarbeiten, weil dann jede andere Aktion zunächst einmal ausgeführt wird, bis denn irgendwann einmal wieder das Flag abgefragt wird.
    • Warum benutzt du eigentlich keinen Quarz für den Systemtakt, um das Timing genauer zu machen?
      Die Pins müssten doch frei sein.
      Du verwendest 115200baud mit 8MHz, was schon eine Abweichung von mehreren Prozent bewirkt. Und dann noch den internen Oszillator, sodass sich die Chance für eine gestörte Kommunikation noch weiter erhöht.
    • Pac-Man wrote:

      anbei der Link. Denke dass noch einiges falsch läuft aber ich übe noch.
      Ich habe das Programm von dem Link angeschaut.
      Der Timer1 ist korrekt initialisiert.
      Ich gehe davon aus, dass die Betriebszustands-Anzeige (LED) im Sekundentakt toggelt.
      Wenn ja, liegt es wirklich am Takt.
      Überhaupt kann ich aus Erfahrung nur empfehlen bei Programmen, die eine SoftUhr oder UART (auch Software UART) benutzen, immer einen Quarz zu verwenden.
      Ich kann Franz da nur zustimmen.
    • New

      djmsc wrote:

      Warum nimmst du nicht

      Franz wrote:

      Deine Abweichung ist weniger als 3% und damit locker innerhalb der Spec. vom internen Osc.

      Franz wrote:

      Wenn du den Compare Interrupt nimmst und
      So, 18,432 MHZ Quarz ist da und verlötet. Die Zählung mache ich nicht mehr selbst sondern wie djmsc empfohlen hat mit Config clock=user. Den Timer betreibe ich nicht mehr wie vorher sondern wie Franz empfohlen hat im CTC Mode.

      Und was soll ich sagen? Das Ding tickt sekundengenau. Zumindest in der kurzen Zeit.

      Source Code

      1. 16:00:31: 00:00:00
      2. 16:01:31: 00:01:00
      3. 16:02:31: 00:02:00
      4. 16:03:31: 00:03:00
      5. 16:04:31: 00:04:00
      6. 16:05:31: 00:05:00
      7. 16:06:31: 00:06:00
      8. 16:07:31: 00:07:00
      9. 16:08:31: 00:08:00
      10. 16:09:31: 00:09:00
      11. 16:10:31: 00:10:00
      12. 16:11:31: 00:11:00
      13. 16:12:31: 00:12:00
      Display All
      Ich hoffe dass ich ORC1A richtig berechnet habe.

      Vielen Dank für die Wege die Ihr mir aufgezeigt habt.

      Gruß, Martin