Atmega2560: Frequenz von Timer weiter heruntersetzen?

Gast #5351468
Lesenswert?
• ▲
▼
Hallo,

ich möchte mit dem Counter 3 des ATMEGA2560 ein PWM Signal mit einem 
Duty-Cycle von 50% erstellen, um eine LED blinken zu lassen. Der 
Controller wird mit einem Quarz (16MHz) getaktet.

Ich habe nun das Problem, dass ich im Register TCCR3B maximal einen 
Prescaler von 1024 einstellen kann. Damit ist die Frequenz allerdings 
immer noch zu hoch, sodass es kein „schönes“ Blinken ist.

Gibt es eine Möglichkeit, den Takt des Timers 3 noch weiter 
herunterzusetzen, ohne den Haupttakt von 16 MHz zu verändern?
Gast #5351644
Lesenswert?
• ▲
▼
Dul schrieb:

> Ich habe nun das Problem, dass ich im Register TCCR3B maximal einen
> Prescaler von 1024 einstellen kann. Damit ist die Frequenz allerdings
> immer noch zu hoch, sodass es kein „schönes“ Blinken ist.

So what? Wenn es zu schnell blinkt, dann schaltet man halt einen 
Software-Teiler via TOF-ISR nach. Das bissel Rechenzeit dafür ist doch 
überhaupt kein Problem.

> Gibt es eine Möglichkeit, den Takt des Timers 3 noch weiter
> herunterzusetzen, ohne den Haupttakt von 16 MHz zu verändern?

Nein, natürlich nicht.
Gast #5351676
Lesenswert?
• ▲
▼
Veit D. schrieb:

> die Prescaler sind die Grobeinstellung und die Compare-Match die
> Feineinstellung.

Ja, natürlich. Nur kann man leider mit dem Compare-Match nur in Richtung 
höherer Frequenzen teilerisch tätig werden. Die Grenze nach unten setzt 
der maximale Zählumfang des Timers. Der ist bei Timer3 eines 2560 halt 
2^16, womit sich im CTC-Mode bei 16MHz und Prescaler 1024 eine minimale 
Blinkfrequenz von ca. 0,12Hz ergibt. Wenn das dem TO zu schnell ist, 
geht's nur mit Software-Postscaler langsamer.

Aber ich ahne natürlich, worauf du hinaus willst... ;o)

Ein Blinkintervall von ca. acht Sekunden kann eigentlich garnicht "zu 
schnell" sein. Es ist also sehr wahrscheinlich, dass der TO den Timer 
falsch benutzt, weil er zu faul ist, das DB zu lesen...
(Firma: RUB) #5351809
Lesenswert?
• ▲
▼
Bei 16MHz dauert ein Takt 62,5ns.
Bei einem Prescaler von 1024 dauert dieser Takt dann:
1024 * 62,5ns = 64us

Der Zaehler kann bis 2^16 - 1 zaehlen, also das Intervall [0, 65535].

Laesst man den Zahler komplett durchlaufen, dann sind wir bei:
64us * 65536 = ~4,2 sek.
Also Grob ~4,2 Sekunden bis der Zaehler ueberlaeuft.

Und das ist dir zum Blinken zu schnell? Dann zaehl mit, wie oft der 
Timer uebergelaufen ist, und mache halt nur jedes x-te Mal etwas.
#5352611
Lesenswert?
• ▲
▼
Hallo,

mal ganz ernsthaft ohne überheblich zu sein. Uns musst du sicherlich 
nicht erzählen was der Timer so kann bzw. was man mit dem anstellen 
kann. Du beantwortest keine einzige Frage, zeigst keinen Code. Woher 
sollen wir wissen wo es bei dir klemmt und was du eigentlich einstellen 
möchtest.

Apropo 10 Bit und kann nur bis 1023 zählen! Siehst du hier keinen 
Zusammenhang? Wieviel ist denn laut deiner Meinung nach 2^10?

Ich helfe gern und ausführlich, aber so wird das nichts.
#5352621
Lesenswert?
• ▲
▼
Dulfried W. schrieb:
> Ich kann ihn nur bis 1023 zählen lassen,
> mit dem 10-bit PWM Modus.

Und wer zwingt Dich denn dazu?
Du hast doch 15 andere Modi zur Auswahl.

Davon ganz abgesehen, nimmt kein einziger Programmiere eine PWM fürs 
Blinken und anderweitige schnarchlahme Aufgaben.
Er setzt einen Timerinterrupt auf, z.B. 1ms und läßt darin beliebig 
viele Zähler in Software zählen und Aktionen ausführen.
Gast #5352627
Lesenswert?
• ▲
▼
Veit D. schrieb:
> Hallo,
>
> mal ganz ernsthaft ohne überheblich zu sein. Uns musst du sicherlich
> nicht erzählen was der Timer so kann bzw. was man mit dem anstellen
> kann. Du beantwortest keine einzige Frage, zeigst keinen Code. Woher
> sollen wir wissen wo es bei dir klemmt und was du eigentlich einstellen
> möchtest.


Och ne. Es steht doch eindeutig da, was das Problem ist: Er hat einen 
16MHz-Quarz dran, hat den maximalen Prescaler von 1024 eingestellt und 
sein Blinken ist immer noch zu schnell. Der Timer 3 kann auch nur auf 
einen maximalen Zählumfang von 1024 eingestellt werden und trotzdem ist 
das noch zu schnell.

So, jetzt könnt ihr anfangen zu helfen
Gast #5352937
Lesenswert?
• ▲
▼
Bär Luskoni schrieb:

> Der Timer 3 kann auch nur auf
> einen maximalen Zählumfang von 1024 eingestellt werden und trotzdem ist
> das noch zu schnell.

Der Punkt wurde doch im Thread eindeutig herausgearbeitet: der maximale 
Zählumfang kann auf 65536 gestellt werden, denn es handelt sich um einen 
16Bit-Timer.

Man muss halt den Timer einfach nur in einem Modus benutzen, in dem das 
möglich ist. Es stehen 15 Modi zur Verfügung und sage und schreibe 9 
davon erlauben es, den vollen Zählumfang zu nutzen.

Die einzig mögliche und absolut zielführende Hilfe wurde also gegeben, 
nämlich: Nutze einen dieser 9 Modi statt der offensichtlich für den 
angestrebten Zweck ungeeigneten restlichen 6, bei denen der Zählumfang 
halt auf 8..10 Bits begrenzt ist...

> So, jetzt könnt ihr anfangen zu *helfen*

Was erwartest du denn noch an Hilfe, nachdem alles Wesentliche längst 
gesagt wurde?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren