- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: ATMEGA8 Timer etwas zu schnell

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Tux12Fun Beitrag anzeigen
    Nur leider läuft der Timer nicht bei 8 Sekunden über sondern bei 2 wenn ich mit dem Handy richtig stoppe.
    Die Überschrift führt da massiv in die Irre. Ein Faktor 4 ist nicht "etwas". Die Ursache ist da natürlich eine andere. Für "etwas" müsste man nach den Kondensatoren am Quarz oder an ähnlicher Stelle in der Hardware schauen, bei einem Faktor 4, einer Potenz von 2, ist es mit 99,9% Software. Da ist Datenblatt lesen angesagt.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo Tux12Fun,

    ich hab mit Atmels noch nichts gemacht, aber eine Idee hätte ich evtl.
    Bist Du Dir sicher, dass der Controller auch wirklich mit dem externen Quarz läuft ?
    Lässt sich einfach feststellen: Ein Bein vom Quarz ablöten, wenn er dann immer noch läuft, stimmt mit der Konfiguration was nicht,
    dann läuft er mit dem internen RC-Oszillator.
    Man muss bei den Atmels wohl einige Einstellungen mit den FUSES machen,
    diese Zeile scheint in deinem Code (1. Zeile) auskommentiert zu sein.

    Siro

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Zitat Zitat von Siro Beitrag anzeigen
    .. eine Idee hätte ich evtl .. muss bei den Atmels wohl einige Einstellungen mit den FUSES .. scheint in deinem Code (1. Zeile) auskommentiert zu sein ..
    Darüber wunderte ich mich auch schon ne Weile. Die Einstellung ergibt-ergäbe

    Int. RC Osc. 2 MHz; Start-up time: 6 CK + 64 ms

    Zumindest stimmt damit der im Code genannte Takt von 2 MHz. WENN der Controller die auskommentierte Einstellung auch wirklich intus hat. Weiter bemerkenswert ist dabei aber der Unterschied zwischen dem auskommentierten
    //TCCR2 = 6; // Vorteiler 256 -> 2s Überlaufperiode
    und dem
    TCCR2 |= (1 << CS22) | (1 << CS21) | (1 << CS20); // Prescaler 1024 -> 8s Überlaufperiode

    das ist genau der Faktor vier - von dem hier die Rede ist.

    Wie Klebwax schreibt : ".. bei einem Faktor 4, einer Potenz von 2, ist es mit 99,9% Software ..".

    Oder meine (früher oft benutzte) Plattitüde : ".. Controller programmieren ohne Datenblatt ist eines der letzten Abenteuer unserer Tage ..". Wobei ich sicher bin, dass hier das Datenblatt gelesen wurde - nur die Fuses zu setzen/lesen ist manchmal "abenteuerlich" *gg*

    @Tux12Fun : Viel Erfolg.
    Ciao sagt der JoeamBerg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    22.12.2019
    Beiträge
    19
    Hallo,

    tut mir leid, dass ich erst jetzt zum antworten kann.

    Der Microcontroller läuft tatsächlich mit 2Mhz und die kommentierte Zeile mit den Fuses ist gesetzt.
    Diese habe ich mit avrdude geschrieben und mir dort einfach notiert, damit ich die Einstellungen im parat habe.

    Der Vorteiler mit 6 war aus einem Beispiel das ich damals abgekupfert habe und ist auch wirklich Kommentar.
    Gesetzt ist Prescaler 1024 ich werde als nächstes mal den Versuch mit dem verdoppeln des delays machen.

    Der Quarz ist auch tatsächlich aktiv. Ziehe ich den Quarz aus dem Steckbrett bleibt die LED stehen.
    Wenn ich das alles richtig verstanden habe wechselt der Controller beim sleep Mode auf den externen Quarz

    Ich habe auch fleißig im Datenblatt gesucht. Ob ich noch etwas falsch mache, da der Code auf dem ATMEGA32 läuft
    und auf dem ATMEGA8 eben nicht.

    Ja die Abweichung zwischen 2 Sekunden und 8 ist enorm und ich hätte gerne wieder 8 Sekunden

    - - - Aktualisiert - - -

    Ich habe nun mal den delay_ms erhöht allerdings hat das keine Auswirkung. Dann habe ich den Prescaler auf 6 gesetzt LED blinkt ca jede Sekunde.

    Dann auf 7 das müsste wenn ich richtig gerechnet habe CS22 CS21 CS20 sein also 8 Sek. Aber die LED blinkt wie zuvor alle 2 Sekunden.

    Quarz ziehen führt zum sofortigen Stop

    - - - Aktualisiert - - -

    Rätsel gelöst und ihr habt mit Hardware recht. Kaum fügt man 2x 27pf und Masse hinzu läuft es korrekt. Beim Atmega32 brauchte ich die nicht 🙈

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo,

    kannst du mal mit einer simplen Delay-Schleife ohne Interrupts prüfen, ob der Controller wirklich auf 2 MHz läuft?

    Viele Grüße
    Andreas

Ähnliche Themen

  1. [ERLEDIGT] 16bit Timer Atmega2560 läuft zu schnell
    Von QuadV im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 19.12.2013, 07:49
  2. Timer auf ATMega8
    Von Lightstorm im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 18.03.2010, 12:58
  3. Nach ca 15 Minuten etwas auslösen, ohne Timer zu benutzen?
    Von x8r im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 21.03.2007, 16:36
  4. timer von atmega8
    Von fed111 im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 13.07.2005, 16:21
  5. ATmega8 und Timer
    Von seitenmaster im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 01.06.2005, 13:39

Berechtigungen

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

Labornetzteil AliExpress