Forum: Compiler & IDEs Frage zu Anzahl Overflows


von Wofgang M. (markus22)


Lesenswert?

Hallo,
ich beschäftige mich erst seit kurzem mit Mikrocontrollern und habe eine 
Frage bezüglich der Anzahl an Overflows.
Ich möchte eine Lampe mit einer Periodendauer von 1sec zum blinken 
bringen. Mein Oszilator hat 12MHZ und mein Timer besteht aus 16Bit. Bei 
der Anzahl der Zählvorgänge für die Overflows bin ich mir jetzt nicht 
sicher.

Ich hätte die Anzahl der Overflows wie folgt berechnet:
12MHZ/65535= 183 Overflows pro sec.
183/2=91 Overflows, da die Leuchte ja nur eine halbe Periode leuchtet.
Aus 91Hz resultiert die Zeit 10.98 ms und diese müsste ich dann *46 
nehmen um auf eine Blinkdauer von 500ms (Lampe leuchtet ja nur die 
hälfte der Zeit) zu kommen.
Ist die Zahl 46 für die Anzahl der Zählvorgänge somit richtig?

Vielen Dank

von Jan (Gast)


Lesenswert?

Hallo

Ich habe nach deiner ersten Rechenaufgabe schon kb mehr gehabt 
weiterzurechnen, daher nur das was mir zu deinem Problem spontan 
eingefallen ist.

Hardwareseitig: Warum 12 Mhz um eine Lampe blinken zu lassen
          "       : Ein Prescaler für deinen Timer bietet sich 
grundsätzlich an Ich weiß ja nicht ob du deinen Timer für noch was 
anderes benutzen willst.

Softwareseitig: Es ist etwas holperig mit Overflows zu arbeiten. Es geht 
zwar grundsätzlich ist in diesem Fall aber nicht notwendig. Schau dir 
auch mal den Compare von deinem Timer an da kannst du relativ exact 
arbeiten.

http://www.avrfreaks.net/index.php?func=viewItem&item_id=292&module=Freaks%20Tools
Schau dir mal diese Seite an da sparste dir den Taschenrechner.

von Rolf Magnus (Gast)


Lesenswert?

Wofgang Markus schrieb:

> Ich hätte die Anzahl der Overflows wie folgt berechnet:
> 12MHZ/65535= 183 Overflows pro sec.

Ja, mal abgesehen davon, daß der Zähler 65536 Schritte hat.

> 183/2=91 Overflows, da die Leuchte ja nur eine halbe Periode leuchtet.
> Aus 91Hz resultiert die Zeit 10.98 ms und diese müsste ich dann *46
> nehmen um auf eine Blinkdauer von 500ms (Lampe leuchtet ja nur die
> hälfte der Zeit) zu kommen.
>
> Ist die Zahl 46 für die Anzahl der Zählvorgänge somit richtig?

Müßte stimmen.

Übrigens: Was hat diese Frage mit GCC zu tun?

von Mark .. (mork)


Lesenswert?

Wofgang Markus schrieb:
> Ich hätte die Anzahl der Overflows wie folgt berechnet:
> 12MHZ/65535= 183 Overflows pro sec.
> 183/2=91 Overflows, da die Leuchte ja nur eine halbe Periode leuchtet.
> Aus 91Hz resultiert die Zeit 10.98 ms und diese müsste ich dann *46
> nehmen um auf eine Blinkdauer von 500ms (Lampe leuchtet ja nur die
> hälfte der Zeit) zu kommen.
> Ist die Zahl 46 für die Anzahl der Zählvorgänge somit richtig?

Du hast doch schon 183 durch 2 geteilt, deshalb musst du auch 91 und 
nicht 46 Overflows verstreichen lassen. Nach 46 Overflows sind gerade 
mal ca 250ms vergangen.

MfG Mark

von Wofgang M. (markus22)


Lesenswert?

Hi,
also ich hab jetzt zwei verschiedene Antworten;), aber wenn ich überlege 
denk ich doch das die zweite mit 91 overflows die richtige ist.

MFG

Markus

von Rolf Magnus (Gast)


Lesenswert?

Mark .. schrieb:

> Nach 46 Overflows sind gerade mal ca 250ms vergangen.

Wie kommst du darauf? Bei 10,98 ms pro Overflow sind nach 46 Overflows 
10,98   * 46 = 505,08 ms vergangen.

von Rolf Magnus (Gast)


Lesenswert?

Ach so, jetzt seh ich es auch. Die 10.98 ms resultieren schon aus einem 
halbierten Wert.

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.