-         

Ergebnis 1 bis 3 von 3

Thema: Stopwatch zuklein vergrößern?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Thorben W
    Registriert seit
    17.02.2012
    Ort
    Niedersachsen
    Beiträge
    108

    Stopwatch zuklein vergrößern?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo
    auf der M256 die Stopwatches sind mit ihren uint16_t zu klein für meine Anwendung.
    Kann ich aus diesen "einfach" ein uint32_t machen oder vielleicht sogar einen uint64_t (wenn es das gibt )?
    Danke
    Thorben

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Einfacher wäre wohl, wenn man die Stopwatch kaskadiert:

    Code:
    #define Warteminuten (10*365*24*60)
    uint32_t stopwatch1_expand=0;
    
    if(getStopwatch1() >= 60000)
    {
     setStopwatch1(0);
     stopwatch1_expand++;
     if(stopwatch1_expand >= Warteminuten)
     {
      writeString("Wieder 10 Jahre vorbei\n");
      stopwatch1_expand=0;
     }
    }
    (ungetestet)

    Gruß

    mic
    Geändert von radbruch (07.02.2013 um 19:28 Uhr) Grund: setStopwatch1(0); sollte erster Befehl im If-Zweig sein

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.01.2010
    Alter
    27
    Beiträge
    106
    Hallo,

    Warum muss es unbedingt so groß werden?
    Klar gibt es den Typedef uint64_t - einfach mal in die stdint.h schauen:
    Code:
    typedef unsigned long long int uint64_t;
    Die beste Lösung wäre das Kaskadieren der Stopwatches, wie radbruch es vorgeschlagen hat.
    Falls Du dann nicht mehr genug Stopwatches hast kannst Du Dir ganz bequem noch ein Paar dazu schreiben.

    Falls Du Dich fragst, warum diese Lösung so viel komplizierter ist (Dein Vorschlag wäre ja nur das Ändern eines Variablentyps):
    Viele Leute vergessen gerne, auf welcher Hardware sie programmieren. Ein 8-Bit µC kann gut mit 8-Bit Zahlen rechnen, auch mit 16Bit klappt das noch gut.
    Klar kann der ATmega32 auch 64-Bit Zahlen addieren, die Frage ist jedoch, wie lange er dafür braucht (noch dazu sind die Stopwatches als volatile deklariert...)

    Führe doch mal eine Performancemessung vor der Änderung durch, ändere die Stopwatches dann auf uint64_t und schau nach, ob Dir das immer noch gefällt.

    Dabei solltest Du beachten, dass der entsprechende Interrupt alle 100µs ausgelöst wird und in jedem 10. Durchlauf die Stopwatches inkrementiert.
    Meine Messungen der kritischen ISR-Laufzeit kommen auf ~101µs, die ISR dauert also länger als erlaubt.

    Ob das jetzt schlechte Auswirkungen auf Dein Hauptprogramm hat? Probier's aus

    Grüße,

    Max

Ähnliche Themen

  1. Stopwatch geht um 10% zu langsam
    Von Derich2 im Forum Robby RP6
    Antworten: 7
    Letzter Beitrag: 03.02.2012, 21:54
  2. RP6 - Stopwatch
    Von DonGru im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 16.02.2011, 17:09
  3. Stopwatch in Sekunden ausgeben
    Von Dasive im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 06.01.2011, 12:54
  4. Fragen zu den Stopwatch
    Von TrainMen im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 30.06.2009, 15:10
  5. Stopwatch auslesen
    Von Roboman93 im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 14.01.2008, 16:14

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •