Forum: Mikrocontroller und Digitale Elektronik AVR Atmega164PA mit AVR Studio 6 Timer/Counter Register Problem


von Marcel K. (star_drummer)


Lesenswert?

Hallo,

ich bin dabei einen AVR Atmega164PA mit dem neuen AVR Studio 6 in C zu 
programmieren.
Dieser µC hat laut Datenblatt (siehe 
http://www.atmel.com/Images/doc8272.pdf) 3 Timer/Counter (Bezeichnungen 
1-3).

Alles schön und gut, bis es an die Programmierung geht.

Ich würde gerne das Timer/Counter 3 Control Register A ansprechen und 
mit Werten füllen, laut Datenblatt müsste sich dieses über TCCR3A 
ansprechen lassen.

Leider erkennt das AVR Studio 6 dies nicht, dank der 
Autovervollständigung kann ich aber einsehen dass es die folgenden 
Register gibt:
TCCR0A, TCCR1A, TCCR2A.

Nun meine Frage, ob hierbei einfach bei Null angefangen wurde zu zählen, 
also 0 entspricht 1, 1 entspricht 2 und 2 entspricht 3, oder wie ich nun 
das richtige Register ansprechen kann?!?

Ich hoffe ich habe mein Anliegen einigermaßen verständlich beschrieben 
und hoffe auf eure Unterstützung.

Vielen Dank im voraus,

Marcel

von Spess53 (Gast)


Lesenswert?

Hi

>Nun meine Frage, ob hierbei einfach bei Null angefangen wurde zu zählen,
>also 0 entspricht 1, 1 entspricht 2 und 2 entspricht 3, oder wie ich nun
>das richtige Register ansprechen kann?!?

Ja. Es ist üblich bei Null anzufangen. Timer0, Timer1 und Timer2 sind 
insgesamt 3 Timer.

Außerdem gibt es ein Datenblatt, das ich dir dringend empfehle zu lesen. 
Sonst wird das nichts mit dem Programmieren.

MfG Spess

von Marcel K. (star_drummer)


Lesenswert?

Hey Spess,

danke für die Antwort, aber ich lese ja das Datenblatt!
Dort heißen die Timer aber 1,2 und 3.

Auszüge aus dem Datenblatt:

"16. 16-bit Timer/Counter1 and *Timer/Counter3* with PWM"

"Most register and bit references in this section are written in general 
form. A lower case “n” replaces *the Timer/Counter number*, and a lower 
case “x” replaces the Output Compare unit channel."

Also müsste nach meinem Verständnis aus "TCCRnA – Timer/Counter n 
Control Register A" --> TCCR3A werden!

Aber korrigiert mich, wenn ich falsch liege!


Beste Grüße,
Marcel

von Thomas E. (thomase)


Lesenswert?

Marcel K. schrieb:
> Ich würde gerne das Timer/Counter 3 Control Register A ansprechen und
> mit Werten füllen, laut Datenblatt müsste sich dieses über TCCR3A
> ansprechen lassen.
Das Register gibt es tatsächlich. Steht auch im Datenblatt. Nur ist 
dieser 4. Timer dem Atmega1284 vorbehalten. Die 3 kleineren Geschwister 
haben den nicht.

mfg.

von Spess53 (Gast)


Lesenswert?

Hi

>danke für die Antwort, aber ich lese ja das Datenblatt!
>Dort heißen die Timer aber 1,2 und 3.

>"16. 16-bit Timer/Counter1 and *Timer/Counter3* with PWM"

Was für ein Datenblatt benutzt du denn?

http://www.atmel.com/Images/doc8272.pdf

Da gibt es nur Timer 0,1,2.

MfG Spess

von Marcel K. (star_drummer)


Lesenswert?

Thomas Eckmann schrieb:
> Das Register gibt es tatsächlich. Steht auch im Datenblatt. Nur ist
> dieser 4. Timer dem Atmega1284 vorbehalten. Die 3 kleineren Geschwister
> haben den nicht.

Danke Thomas,

hilfreiche Antwort!
Besten Dank,

Marcel

von Stefan E. (sternst)


Lesenswert?

Spess53 schrieb:

> Was für ein Datenblatt benutzt du denn?
>
> http://www.atmel.com/Images/doc8272.pdf
>
> Da gibt es nur Timer 0,1,2.

Nein, es gibt dort 0-3. 1 und 3 sind in einem Kapitel (16) 
zusammengefasst.

von Marcel K. (star_drummer)


Lesenswert?

Spess53 schrieb:
> Was für ein Datenblatt benutzt du denn?
>
> http://www.atmel.com/Images/doc8272.pdf
>
> Da gibt es nur Timer 0,1,2.

Ja den Timer 0 muss ich wohl übersehen haben, hatte mich zu Stark auf 
die 16bitter 1 und 3 fixiert.
Hab nur nicht gewusst das der Atmega16 den dritten  bzw. vierten nicht 
hat.

Trotzdem danke - problem geklärt ;)

von Thomas E. (thomase)


Lesenswert?

Marcel K. schrieb:
> Hab nur nicht gewusst das der Atmega16 den dritten  bzw. vierten nicht
> hat.
Das ist aber auch äusserst sparsam dokumentiert.

>> – One/two 16-bit Timer/Counter with Separate Prescaler,
In der Beschreibung des Timers steht nichts dazu drin.

Bei den Interruptvektoren steht, daß es die 3er-Vektoren nur für den 
1284p gibt.
>> 3. Applies only to Atmel ATmega1284P.
Danach hat der 1284 den Timer3 auch nicht.

mfg.

von spess53 (Gast)


Lesenswert?

Hi

>Danach hat der 1284 den Timer3 auch nicht.

Hat er aber.

MfG Spess

von Thomas E. (thomase)


Lesenswert?

spess53 schrieb:
> Hat er aber.
Und warum steht das im Datenblatt anders drin?

mfg.

von spess53 (Gast)


Lesenswert?

Hi

>Und warum steht das im Datenblatt anders drin?

Weis ich nicht. Für den ATMega1284 gab es mal ein separates Datenblatt. 
Mit 4 Timern. Bei der Zusammenführung der ATMega164/324/644 und 1284 in 
ein Datenblatt war der 4.Timer des ATMega1284 plötzlich weg. Kam erst in 
einer späteren Revision wieder zum Vorschein. Wahrscheinlich ist das 
ganze immer noch nicht konsequent durchgezogen.

In der Parametric Tabelle auf ATMEL-Webseite stehen sogar beide 1284 nur 
mit 3 Timern drin.

In solchen Fällen sehe ich mir die Partdescription Files vom AVR-Studio 
an. Die haben bisher immer gestimmt.

MfG Spess

von Thomas E. (thomase)


Lesenswert?

spess53 schrieb:
> Bei der Zusammenführung der ATMega164/324/644 und 1284 in
> ein Datenblatt war der 4.Timer des ATMega1284 plötzlich weg. Kam erst in
> einer späteren Revision wieder zum Vorschein. Wahrscheinlich ist das
> ganze immer noch nicht konsequent durchgezogen.
Da sollte man dem Projektleiter und dem QMB wohl mal die Ohren lang 
ziehen.

mfg.

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.