- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Hilfe bei Quarz an Mega16

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Hilfe bei Quarz an Mega16

    Anzeige

    Praxistest und DIY Projekte
    Hi,

    ich betreibe momentan einen 16MhZ Quarz an einem Mega 16 mit 22pF.

    Auf dem Mega16 läuft ein Programm was sekündlich einen Interrupt aufruft und die Variabele I erhöht. Es soll also im Sekundentakt hochgezählt werden. Anfangs läuft das auch ohne Probleme, nur nach ca. einer Minute hat man dann schon ca. 2 sekunden rückstand. (parallel gemessen mit einer Stoppuhr).


    Nun steht im Datenblatt des Quarz Cl:20pF und wenn ich es richtig verstanden habe ist da ja ein ca. 40pF Kondensator mit gemeint oder ?

    Kann es also an meinem 22pF Kondensator liegen, das diese ungenauigkeit beim zählen entsteht ?

    mfg Blamaster

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377

    Re: Hilfe bei Quarz an Mega16

    Zitat Zitat von Blamaster
    Nun steht im Datenblatt des Quarz Cl:20pF und wenn ich es richtig verstanden habe ist da ja ein ca. 40pF Kondensator mit gemeint oder ?
    Hallo Blamaster!

    Wenn "pF" dabei steht, dann ist damit exakt dieser Wert damit gemeint. 2 pF auf oder ab macht keinen Unterschied.

    Du brauchst den Quarz, zwei 22 pF Keramikkondensatoren und die richtige Einstellung der Fuse-Bits. Vergiss nicht, auch das Bit CKOPT auf 0 (=ein) zu setzen. Das braucht man bei Frequenzen ab 8 Mhz.

    Noch etwas kann sein. Wenn du im Interrupt-Handler viel Code abarbeiten lässt, dann kann es sein, dass der Interrupt-Handler noch nicht damit fertig ist, obwohl der Interrupt schon wieder neu ausgelöst wurde. So kann sich die Zeit immer mehr hochschaukeln.

    Dass ein Quarz so ungenau ist, dass man das schon nach zwei Minuten merkt, glaube ich nicht.

    mfg
    Gerold
    :-)

    PS: Zeig mal ein wenig Code her. Vielleicht hast du dich irgendwo vertan.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Ort
    Rickelrath
    Beiträge
    127
    Bezüglich deiner Vermutung, dass der Kondensator Schuld hat habe ich keine Ahnung, aber solange es sich immer um den selben Versatz handelt könntest du diesen bereits in der Software berücksichtigen. Wenn eine Minute beim AVR halt 62 Sekunden hat dann musst du alle 1,03333 Sekunden deinen Zähler eins hochzählen.

    Um noch genauer zu sein könntest du auch mal einen Tag lang die AVR laufen lassen und dann mal den genauen Versatz berechnen.


    LLiinnuuxx

    PS: Ok ist nicht wirklich die Antwort auf deine Frage aber ist auch eine Lösung

    An alle anderen:
    Noch nicht gelöst

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Vielen Dank. Werde die Zeit jetzt nochmal auf längere Zeit messen.

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn nach einer minute schon 2 Sekunden abweichung da sind, dann ist das reichlich viel abweichung für den Quarz. So stark läßt sich normalerweise die Frequenz eines Quarzes gar nicht mit den Kondesatore verändern.

    Ist den sicher das die Software simmt, und nicht eventuell noch der interne RC läuft ?

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Also im Pony prog sind momentan häkchen bei folgenden Einträgen:

    OCDEN
    CKOPT
    EESAVE
    BOOTSZ1
    BOOTSZ0
    BOOTRST
    CKSEL0

    Am Code dürfte es eigentlich auch nicht liegen, denn in der interrupt routine wird nichts anderes gemacht, als I um eins erhöht. Und ich glaube kaum das ein AVR dafür eine Sekunde braucht

    Hab jetzt mal weiter zählen lassen bis die stoppuhr bei 40 minuten war. Immernoch der Zeitverzug von 2 sek. Tritt also nach ca. einer Minute ein, bleibt dann aber relativ konstant.

    mfg blamaster

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Ui doch nicht ! Hat nach 4 Minuten ca 3 Minuten verzug.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    Hallo,

    1 Minute 2 Sekunden
    4 Minuten 3Minuten Verzug
    Also die Abweichung ist nicht linear? Ist sie den reproduzierbar?
    Hast du nach vier Minuten immer 3 Minuten Verzug?
    Ich tippe entweder auf ein EMV Problem oder im Programm stimmt was nicht. 16 oder 32 Bit Variablen und Interrupts z.B. sind nicht so ganz ohne.
    Ich kann mir nicht vorstellen, dass das am Takt liegt.

    Gruß

    Jens

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377
    Zitat Zitat von Blamaster
    Also im Pony prog sind momentan häkchen bei folgenden Einträgen:

    OCDEN
    CKOPT
    EESAVE
    BOOTSZ1
    BOOTSZ0
    BOOTRST
    CKSEL0
    Hallo Blamaster!

    Ich würde CKSEL0 ausschalten. Du lässt dem Ding ja keine Zeit zum Warmlaufen. Aber ansonsten sollte es damit schon funktionieren.

    Also liegt das Problem am Quellcode. Lass uns doch mal ein wenig Quellcode sehen.

    mfg
    Gerold
    :-)

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Problem scheint in den Griff bekommen zu sein

    Ich hatte im timerinterrupt dem Timer nicht nochmal den Timerwert zugewiesen -.-

    Nun läuft es seit 10 Minuten ohne verzug.

    mfg Blamaster

    Edit. Was genau bewirkt eigentlich CKSEL0 ?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen