-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Timer Stoppuhr ist ungenau

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Ort
    Sande (bei Reichelt)
    Alter
    28
    Beiträge
    663

    Timer Stoppuhr ist ungenau

    Anzeige

    Ich habe diesen Code mit einem ATmega8, intern auf 1Mhz getaktet:

    Code:
    '===============================================================================
    ' Compiler
    '===============================================================================
     $regfile = "m8def.dat"                                     'Mega32
     $crystal = 1000000
    '-------------------------------------------------------------------------------
    
    
    '=============================================================================
    
    'Hier wird der Timer und der Teiler festgelegt
     Config Timer1 = Timer , Prescale = 64
     On Timer1 Timer_irq
     Const Timervorgabe = 49911
    
     Dim Sekunden As Integer
    
    '===============================================================================
    
    
     Enable Timer1
     Enable Interrupts
    
    '===============================================================================
    ' Hauptschleife
    '===============================================================================
    
     Do
    
     Loop
    
     End
    
    '===============================================================================
    
     Timer_irq:
        Timer1 = Timervorgabe
    
        Decr Sekunden
     Return
    Jedoch hat er auf 300 Sekunden ca. 2 Sekunden abweichung.
    Was ist falsch?

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Du betreibst Timer1 besser in einem anderen Modus:
    Clear Timer on Compare Match und bedienst nicht den Overflow-Interrupt, sondern den Compare Match Interrupt.

    Dadurch übernimmt die Hardware das Neusetzen von Timer 1 und nicht wie in deinem Beispiel die Software.
    Du verbrätst ja Zeit, bis du nach dem Interrupt wirklich dein Timer1-Wert neu schreibst.
    Ob der Wert richtig ist hab ich nicht nachgerechnet.
    Zudem überträgt sich die Ungenauigkeit der Takterzeugung auf die Genauigkeit der Uhr.
    RC-Oszi ist ungenauer als Quarz.
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Ort
    Sande (bei Reichelt)
    Alter
    28
    Beiträge
    663
    Also meinst du ich soll ein externes Quarz verwenden?

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Quarz mache eine bessre Genauigkeit.
    Der Fehler bei deiner Uhrliegt aber an der unzureichenden Ausnutzung der Hardware.
    Wenn du ein Quarz drantust wird mit dem Programm die Genauigkeit auch miserabel sein...
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Ort
    Sande (bei Reichelt)
    Alter
    28
    Beiträge
    663
    Was ist denn Compare Match etc. - Hab ich nocht nicht verwendet. Gibt's da irgendwo Beispiel Code?

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Ort
    Sande (bei Reichelt)
    Alter
    28
    Beiträge
    663
    Den Code habe ich übrigens aus diesem rnAVR Programm.
    Und selbigen Code hatte ich mal mit nem 7,.... Quarz, das ging meiner Erinnerung nach ganz gut.

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Musst du wirklich jedes Problem in zwei Beiträgen besprechen???

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.02.2005
    Ort
    Sande (bei Reichelt)
    Alter
    28
    Beiträge
    663
    Mmhh... ja sorry - Ich dachte mir nur das passt nicht zum Thema "Stoppuhr Source"..

    Soll nicht mehr vorkommen.

    Gruß, Björn
    Nur tote Fische schwimmen mit dem Strom...

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    ich glaube es entsteht auch eine art ungenauigkeit dadurch, dass beim aufrufen der interruptroutine zeit verbraucht wird. ein schnellerer takt dürfte da glaube ich verbesserung bringen

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Zitat Zitat von sebastian.heyn
    ich glaube es entsteht auch eine art ungenauigkeit dadurch, dass beim aufrufen der interruptroutine zeit verbraucht wird. ein schnellerer takt dürfte da glaube ich verbesserung bringen
    Ein schnellerer Takt bringt bloß noch mehr Fehlerzeit. Der Preload muss angepasst werden. Es sind nur ein paar wenige Takt die beim aufrufen einer ISR 'verschwendet' werden.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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