Forum: Mikrocontroller und Digitale Elektronik pwm formel 16 bit timer verständnisproblem


von avrboy (Gast)


Lesenswert?

Hallo guten Tag,

Ich habe eine Frage bezüglich der Formel für eine korrekte PWM 
Einstellung beim AT162. Mit dem 16 Bit Timer3 - PWM Modus 14 -fast PWM

~>Ziel: Mein TOP herausfinden -> Formel lösen:
 -----------------------------------------------
 Frequenz_des_PWMs = (Prozessorfrequenz) / (PRESCALER * (1+TOP))

~>Frage:Woher kommt das +1 bei dem TOP?

~>Meine Berechnung für TOP

 *Wenn ich eine Frequenz von 500 Hz als PWM haben möchte,
  dann setze 500 Hz in meine Formel ein.
 *Mein Prozessor ist 8 MHz schnell.
  Setze ich auch ein.
 *Mein Prescaler soll 8 sein.
  Setze ich auch ein

  --> 500 Hz = (8MHz) / (8 * (1+TOP))
 ++++++++++++++++++++++++++++++++++++++++++
 Nun interessiert mich bis wieviel mein Timer 3 maximal zählen soll bis 
er                                sich wieder resettet . Das wäre in 
diesem Modus ICR3 = TOP

 TOP kann ich ja mit dieser Formel ausrechnen:
 8 MHz/ (500Hz* 8) = 1 + TOP
 2000 = 1+ TOP
 => TOP = 1999
 ++++++++++++++++++++++++++++++++++++++++++

~> Anderere Herangehensweise um TOP zu erhalten
 Woher kommt diese 1?

 Das verstehe ich nicht denn:
 *8 MHz Prozessorfrequenz erzeugt bei einem Prescaler von 8 eine 
Taktdauer                 von 1µs
 *Eine Periode meine PWM soll 1/500 Sekunden dauern : also 2ms.
 *In diese Periode von 2ms passen 2ms/1µs = 2000 Taktdauern

 => TOP gleich 2000!!
 ...
 warum dann noch eine Taktdauer abziehen?

 Mit freundlichen Grüßen AVRboy

von Stefan (Gast)


Lesenswert?

Der Timer fängt bei 0 zu zählen an.
0 bis 1999 => 2000 Takte

von avrboy (Gast)


Lesenswert?

ja ok , das ist nachzuvollziehen .
Vielen Dank.

(Warum hat mein Professor dann Initialwert : OCR3=2000  da stehen ..das 
verwirrt mich )

von Karl H. (kbuchegg)


Lesenswert?

avrboy schrieb:

> (Warum hat mein Professor dann Initialwert : OCR3=2000  da stehen ..das
> verwirrt mich )

Wahrscheinlich weil er nicht daran gedacht hat und weil es bei einer PWM 
ziemlich wurscht ist, ob sie jetzt 500Hz oder 499.99998Hz hat. D.h. er 
hat es im praktischen Aufbau einfach nicht bemerkt, dass seine Frequenz 
nicht ganz stimmt.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Der Timer fängt bei 0 zu zählen an.
> 0 bis 1999 => 2000 Takte

Nope. Auch das wären nur 1999 Takte.
Nimm kleinere Zahl, dann sieht man es besser
1
  Zählvorgang          Anzahl benötigter Takte
2
von 0 auf 1 zählen        1
3
von 1 auf 2 zählen        2
4
von 2 auf 3 zählen        3
5
von 3 auf 4 zählen        4
6
von 4 auf 5 zählen        5
7
von 5 auf 6 zählen        6
8
von 6 auf 7 zählen        7
9
von 7 auf 8 zählen        8
nach 8 Takten hat man also von 0 bis 8 hochgezählt
Aber
1
Überlauf: von 8 auf 0     9
das Rücksetzen des Timers zurück auf 0 ist ja auch ein Takt.

D.h. einmal den Timer bis 8 rundumlaufen lassen bis er wieder bei 0 ist, 
dauert 9 Takte.

von avrboy (Gast)


Lesenswert?

Danke für die Antworten.
ICR3 = 2000 und OCR3A = 100

War die angegebene Lösung .
Ich habe mich am Anfang vertan und habe OCR3A = 2000 geschrieben.
Trotzdem bleibt die Problemstellung gleich.

----
Karl Heinz  was bedeutet deine Darstellung für die Aufgabenstellung.

Mein TOP sollte dann 1999 sein?
Bsp:

Aktuell ->Danach: |Zählwertindex:
0->1              |     0
1->2              |     1
2->3              |     2
   .              |     .
   .              |     .
   .              |     .
1997->1998        |    1997
1998->1999        |    1998
1999->2000        |    1999 ----> Indexangabe von 1999 =TOP ?

von Karl H. (kbuchegg)


Lesenswert?

avrboy schrieb:

> Karl Heinz  was bedeutet deine Darstellung für die Aufgabenstellung.
>
> Mein TOP sollte dann 1999 sein?

Immer noch nicht verstanden?

OK, Ich transferiere das mal.
Du hast eine Uhr mit Sekundenzeiger.
Der Sekundenzeiger geht in 60 Sekunden einmal rund ums Zifferblatt.
Wenn wir mal davon ausgehen, dass die oberste Sekundenzahl am 
Zifferblatt eine 0 ist, welches ist dann die höchste Zahl die der 
Sekundenzeiger überstreicht? Steht da links von dieser 0-Markierung 59 
oder steht da 60?

Wenn der Timer den TOP Wert erreicht hat, dann wird im nächsten Takt der 
Timer auf 0 zurück gesetzt (aber dann nicht um 1 erhöht, denn du willst 
ja das Ergebnis 0 habe!). Genauso wie der Sekundenzeiger auch 1 Sekunde 
braucht um am Zifferblatt von der 59 zur 0 zu kommen. Das Zurückfallen 
auf 0 braucht auch seinen einen Takt!

von avrboy (Gast)


Lesenswert?

Oh danke  Karl Heinz.
----
Also soll der Timer einfach bis 1999=TOP zählen (1999 Ticks) und dann 
resetten (1 Tick)
Daraus folgt:
1Tick Resetten
1999 Zählen
------
2000 Ticks.
TOP = 1999 => gewünschte Frequenz!

von c-hater (Gast)


Lesenswert?

avrboy schrieb:

> (Warum hat mein Professor dann Initialwert : OCR3=2000  da stehen ..das
> verwirrt mich )

Weil auch Professoren Menschen sind und Menschen nunmal Fehler machen...

Entweder hat er die Übung garnicht selber geschrieben (sehr 
wahrscheinlich), dann ist sein Fehler, daß er die Aufgabenstellung 
irgendeines geknechteten und völlig unterbezahlten Assis trotz seines 
eigenen, überaus komfortablen Gehalts unbesehen übernommen hat oder er 
hat sie wirklich selber ausgearbeitet, dann hat er das DB nicht gelesen 
und dadurch einen typischen "Nicht-DB-Leser"-Fehler begangen...

In beiden Fällen ist er jedenfalls der Verantwortung nicht gerecht 
geworden, für die er bezahlt wird. Ich (als anteiliger Souvereign und 
Geldgeber seines Arbeitgebers) plädiere deshalb für einen entsprechenden 
Gehaltsabzug und dessen Verwendung für soziale Zwecke. Z.B. eine bessere 
Bezahlung von Professoren-Assis...

Das würde der Lehre ganz sicher mehr nützen, als neue 
Professoren-Pöstchen oder eine noch bessere Bezahlung dieses weitgehend 
nutzlosen Karrieristen-Packs. Wie immer bestätigen hier die extrem 
wenigen Ausnahmen echter Forscher die Karrieristen-Regel. Und nur für 
diese echten Forscher war eigentlich mal die finanzielle Großzügigkeit 
bei den Prof-Gehältern gedacht, um ihnen halt freie Forschung ohne auch 
nur die Aussicht auf mittelfristige Gewinne aus den 
Forschungsergebnissen möglich machen sollte...

Naja, die meisten wirklich bedeutenden Forscher sind ja sowieso erst 
Professoren geworden, NACHDEM sie ihre wegweisenden Forschungsergebnisse 
vorgelegt hatten. Denen gönne ich allerdings die Annehmlichkeiten 
eines komfortablen Gehaltes, das ist hier in der Regel als 
Schadensersatz der Menschheit für ein selbstloses und entbehrungsreiches 
Leben zum Nutzen der Menschheit zu werten...

von avrboy (Gast)


Lesenswert?

haha..
naja ok ..
also hier noch einmal ein weiterer Ausschnitt aus dem Skript:
Zitat Anfang:

ICR1 = periode;

Zitat Ende

also wäre das dann auch falsch

von spess53 (Gast)


Lesenswert?

Hi

>also hier noch einmal ein weiterer Ausschnitt aus dem Skript:
>Zitat Anfang:

>ICR1 = periode;

>Zitat Ende

>also wäre das dann auch falsch

Nein. Was hat ICRn mit OCRxx zu tun? Das sind zwei total 
unterschiedliche Baustellen.

MfG Spess

von Ingo (Gast)


Lesenswert?

Nicht wirklich, ich weigere mich zu Glauben das du Spess den 
Zusammenhang bei PWM und dem ICR nicht kennst!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.