- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 39

Thema: Ein paar Fragen zum Timer !!!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    in deinem konkreten Fall (angenommen wir haben dasselbe Datenblatt und nicht nur die "Summary" ... Dokumentnummer ist atmel-2586)

    Kapitel 11.9 Register Description

    11.9.2 TCCR0A – Timer/Counter Control Register A und folgend

    Da sind die Bits beschrieben die die Ausgänge und den Countermodus steuern.

    11.9.3 TCCR0B – Timer/Counter Control Register B und folgend

    gehört immer zu dem anderen Register dazu, im konkreten Fall ist das WGM02 Bit Teil vom B-Register

    Hier steht unter anderem auch welche Prescaler es gibt und wie sie ausgewählt werden.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Vielen Dank für deine Antwort.

    Das Datenblatt ist das gleiche.
    Danke für die Informationen.

    Das habe ich soweit alles gefunden.
    Nur z.B. auf Seite 80 sind die CS Bits zu finden.

    Habe den Code jetzt geändert und das CS Bits 01 gewählt.
    Frequenz ist auf fast genau 1 kHz Vielen Dank.

    Nur auf der Seite 83 steht auch was über CS Bits.
    Aber diese kann ich doch bei meinem Attiny nicht nutzen ?

    Vielen Dank mal wieder.

    Nicole

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    doch doch sicherlich, aber nur mit Timer1

    Das ist Kapitel 12 Timer1 und nicht Kapitel 11 Timer0

    Daher hab ich auch darüber gestutzt, dass du im TCCR0A die Bits für TCCR1A verwendet hast und im TCCR0B Das Bit für TCCR1B

    Du hattest da wohl die beiden Timer ausversehen in einen Topf geworfen ... Wenn du dir die REgister ud die Bits ansiehst, merkst du auch schnell dass die Bits des T0 garnicht die gleiche Position haben im Register wie beim T1

    PS: Als Faustformel bei Atmels gilt der Timer0 ist meistens am Funktionsärmsten aber dafür sind die Funktionen und Register fast überall gleich ... Den Code auf einen andern Controller zu wechseln geht also quasi ohne Änderungen ... alle weiteren Timer haben bei den unterschiedlichen Atmel Prozessoren alle ihre eigenheiten und müssen von Controller zu Controller anders programmiert werden
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Danke für die Info.

    Ja so ganz flüssig läuft es noch nicht

    Nochmals zu den CS Bits und den Prescaler.
    Ist das jetzt das gleiche oder nicht ?

    Ich glaube wenn man es mal verstanden hat ist es leicht.
    Nur bis man es mal verstanden hat ist es sehr schwer

    Auch wäre es nett, wenn Ihr mir bitte nochmals irgendwie genauer sagen könntet wie Ihr die genau Frequenz berechnet ?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo,
    da es Datenblätter zum ATtiny in verschiedenen Revisionen gibt, hier ein Link zu Atmel, damit wir das gleiche benutzen (Rev. 2586Q–AVR–08/2013): http://www.atmel.com/images/atmel-25..._datasheet.pdf
    Gefunden über Google mit Suchbegriffeingabe: attiny85


    Wie oben schon gefragt, reicht es wenn ich die Takt Frequenz vom Attiny im Code eintrage oder muss ich auch noch etwas in den Fuses verändern?
    Ein nagelneuer, frisch gekaufter ATtiny85 ist auf einen Systemtakt von 1Mhz eingestellt: Interner Oszillator mit 8MHz, der durch die CKDIV8 Fuse im System Clock Prescaler (nicht Timer Prescaler) auf ein achtel, also auf 1MHz herabgesetzt wird (Datenblatt: "6.2.3 Calibrated Internal Oscillator" und "Table 20-5. Fuse Low Byte")


    Als nächstes würde mich Interresieren wo Ihr genau die ganzen Daten aus dem Datenblatt herbekommt?
    Ich schreib es dazu aber es wird Dir nicht erspart bleiben, jede Zeile, jede Tabelle und jede Fußnote selbst zu durchforsten, da so ein Datenblatt wirklich ganz gedrängt in jedem Buchstaben relevante Informationen beinhaltet


    Die CS Bits bestimmen die Quelle für den Timer/Counter richtig?
    Ist das auch gleichzeitig der Prescaler?
    Ja. Für Timer 0 gibt es im Datenblatt das Kapitel 11 und dort zum "11.9.3 TCCR0B" die Tabelle "Table 11-6. Clock Select Bit Description" Für Timer 1 in Kapitel 12 sieht die entsprechende Tabelle anders aus.


    Wie genau hast Du das berechnet ?
    Timerzyklusfrequenz von (1000000Hz/8 )/256=488,28125Hz
    Ich bin von den Factory Default Einstellungen ausgegangen: 1MHz Systemtakt, bei den Timern in den Tabellen und im Blockdiagramm "Figure 6-1" wird er clk i/o genannt. Den Timerprescaler habe ich mit acht angenommen, da eins ja einen zu schnellen Zähltakt erzeugt hat. Also 1MHz geteilt durch acht ergibt 125000. 125000 geteilt durch die 256 Zählschritte für einen Timerzyklus ergibt die 488,28125Hz.


    Ich verstehe es nur soweit, der Systemtakt beträgt 1Mhz ( 1000000 ) jetzt rechnet Ihr 1000000:256=3.906,25
    Ja, aber mit dem angenommenen Timerprescaler von eins ist der Timerzyklus zu schnell für Deine geforderten 1kHz. Eigentlich ist die Rechnung (1000000/1)/256. Die 1 für den Timerprescaler eins habe ich vorher weggelassen.


    Gut nur wie kommt Ihr auf dieses Ergebniss ?
    (1000000Hz/8 )/256=488,28125Hz ???
    Weil mit Timerprescaler von 1 der Takt zu schnell war, wird hier der Prescaler von 8 hergenommen. Die 8 muß also später mit den CS Bits eingestellt werden und nicht die 1.


    Auch wäre es nett, wenn Ihr mir bitte nochmals irgendwie genauer sagen könntet wie Ihr die genau Frequenz berechnet ?

    Ich kann es nicht genauer. Dieser und mein letzter Post haben mich erschöpft. Besser Du fragst konkret, was Du nicht verstanden hast.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    21
    Searcher,

    mal wieder vielen Dank für deinen langen Text und deiner Mühe.

    Wie man das ganze jetzt ausrechnet verstehe ich zu 80%.
    Mein Problem ist nur, wie berechne ich die Frequenz die ich möchte ?

    Z.b. 2,3 kHz ?
    Oder 200 Hz ?

    Im Datenblatt habe ich bei Timer0 diese Werte gefunden.
    CS00, CS01, CS02
    8, 64, 256, 1024

    Ob ich die 1024 nutzen kann, bin ich mir nicht ganz sicher da ja hier kein CS mehr zu finden ist für 1024?

    Jetzt zur Frequenz, der Attiny läuft mit 1MHz und er läuft alle 256 Schritte wegen dem 8 Bit Timer über.
    Die 256 Schritte sind immer gleich und der 8 Bit Timer auch das kann ich ja nicht beeinflussen habe ich das soweit richtig verstanden ?

    Wenn ja könnte ich nur die Geschwindigkeit vom Attiny ändern ( MHz ) oder den Prescale soweit richtig ?
    Die Geschwindigkeit werde ich am Anfang nicht ändern !!!

    Somit bleibt mir ja nur zur Berechnung der Frequenz die 1 MHz die 256 Schritte bis zum Überlauf und der Prescale.

    Ich glaube ich denke einfach viel zu viel

    Vielen Dank mal wieder.

    Nicole

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.255
    Somit bleibt mir ja nur zur Berechnung der Frequenz die 1 MHz die 256 Schritte bis zum Überlauf und der Prescale.
    Das hast Du genau richtig erkannt, aber so ein Timer kann ja noch mehr.
    Da kommt nun der CTC Modus ins Spiel.
    Man schreibt einen Wert in eins der OCR Register und aktiviert den CTC Mode. Der Timer TCNTx wird auf 0 gesetzt, wenn dieser Wert erreicht ist.
    Dadurch kann man Frequenzen erzeugen, die der Timer durch den Takt und Prescaler nicht erreichen kann.
    Ob das mit CTC und OCRxA und OCRxB zur Erzeugung von fast PWM, wie es im Beitrag #7 beschrieben wird, hab ich leider noch nicht ausprobiert.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Searcher,
    mal wieder vielen Dank für deinen langen Text und deiner Mühe.
    .
    Vielen Dank mal wieder.
    Alles klar, für mich reicht das für den Rest meiner Beiträge


    Wie man das ganze jetzt ausrechnet verstehe ich zu 80%.
    Mein Problem ist nur, wie berechne ich die Frequenz die ich möchte ?

    Z.b. 2,3 kHz ?
    Oder 200 Hz ?
    Die Frage ist eigentlich falsch gestellt, oder? Du gibst ja die Frequenz vor und möchtest die Konfigurationsparameter für den Timer finden. Da Du nur eine bekannte Größe hast, nämlich die gewollte Frequenz, must Du die anderen für den Timer selbst vorgeben.

    Ich habe das in meinem ersten Post gemacht, indem ich den Systemtakt mit 1MHz angenommen habe. Dann habe ich den Timer Vorteiler, der mit den CS Bits eingestellt wird mit 8 angenommen. Mit Vorteiler = 1 ging Deine 1kHz im Fast-PWM nicht einzustellen. Mit Vorteiler = 8 ergab sich aber noch nicht genau die 1kHz. Deshalb noch den CTC Modus zur Hilfe genommen. (Datenblatt: 11.7.2 Clear Timer on Compare Match (CTC) Mode)

    Man rechnet es sich also nicht direkt aus, sondern probiert gewissermaßen ein Stück weit in den Rechnungen mit den zur Verfügung stehenden Möglichkeiten des µC und kann dann mit den Gleichungen aus dem Datenblatt zurückrechnen, ob man richtig liegt. (Datenblatt Gleichungen stehen in den Unterkapiteln zu "11.7 Modes of Operation")


    Im Datenblatt habe ich bei Timer0 diese Werte gefunden.
    CS00, CS01, CS02
    8, 64, 256, 1024

    Ob ich die 1024 nutzen kann, bin ich mir nicht ganz sicher da ja hier kein CS mehr zu finden ist für 1024?
    Stimmt fast, aber die Frage verstehe ich nicht. Grundlage zur Einstellung des Vorteilers für Timers 0 ist die "Table 11-6. Clock Select Bit Description" im Kapitel "11.9.3 TCCR0B – Timer/Counter Control Register B".

    Im TCCR0B Register setzt man:
    für Voteiler 8 das Bit CS01
    für Voteiler 64 die Bits CS01 und CS00
    für Voteiler 256 das Bit CS02
    für Voteiler 1024 die Bits CS02 und CS00

    also nicht ein CS Bit für einen Vorteilerwert; es werden auch Kombinationen von den CS Bits genutzt und es gibt auch den Vorteilerwert 1 mit dem Bit CS00, der in Deiner Aufzählung der Prescaler Werte fehlt.


    Jetzt zur Frequenz, der Attiny läuft mit 1MHz und er läuft alle 256 Schritte wegen dem 8 Bit Timer über.
    Die 256 Schritte sind immer gleich und der 8 Bit Timer auch das kann ich ja nicht beeinflussen habe ich das soweit richtig verstanden ?
    Nein. Die 256 ist der Maximalwert. Der kann im CTC Modus veringert werden. Bitte Kapitel 11.7 Modes of Operation und speziell oben erwähntes Kapitel über den CTC Modus lesen.


    Somit bleibt mir ja nur zur Berechnung der Frequenz die 1 MHz die 256 Schritte bis zum Überlauf und der Prescale.
    Die 1MHz Systemtakt, OK! Würde ich auch erstmal nicht ändern.
    Die 256 Schritte sind nicht fix. Siehe CTC Modus
    Prescale, ja.
    Aber es gibt noch die verschiedenen Moden des Timers. Kapitel 11.7. Der von wkrug erwähnte "11.7.4 Phase Correct PWM Mode" wird anders berechnet und läßt tiefere Frequenzen als Fast PWM zu.

    Hier noch was zum Lesen aus dem Roboternetz-Wissen: http://rn-wissen.de/wiki/index.php?t.../Counter_(Avr)
    Ist für einen ATMega aber das Prinzip ist das Gleiche.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Ein paar Fragen ;)
    Von Checker 1.0 im Forum Robby RP6
    Antworten: 11
    Letzter Beitrag: 18.08.2011, 21:37
  2. Ein paar fragen ...
    Von Gamestake im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 21.04.2011, 09:12
  3. Ein paar Fragen
    Von Speed im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 03.11.2008, 07:19
  4. Ein paar Fragen zu µC
    Von Lars. im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 09.06.2006, 14:38
  5. Paar Fragen -g-
    Von Adacart im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.01.2005, 17:57

Berechtigungen

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

LiFePO4 Speicher Test