C > Timer, Inerrupt, ATtiny84

OP #5867128
Lesenswert?

C > Timer, Inerrupt, ATtiny84

Hallo zusammen.
Versuche mich gerade an einem Minispiel mit dem ATtiny84. Dazu brauche 
ich Timer, Vorteile und Interrupt. Datenblatt liegt mir vor.

Mit einigen Begriffen und Registerbezeichnungen komme ich leider nicht 
zurecht.
Da scheint mir jeder uC-Typ seine eigene Bezeichnung zu haben.

--1--
Timer soll über den Programmtakt von 1MHz getaktet werden.
1
#define F_CPU 1000000UL
Im Datenblatt steht bei CLK/cpu (Seite 24, 25), CKSEL1<1=8Mhz oder 
CKSEL2<1 =127kHz.
Wie verweise ich auf meinen CPU-Takt?

--2--
Wird der Timer/Counter1, 16bit (Seite 87, 88) mit "TCNT1" angesprochen?

--3--
Um später auf einen Interrupt als Zähler von 1ms zu kommen möchte ich 
den Vorteiler auf 1/256 stellen. (Seite 32)
"CLKPS3<1"
Korrekt?

--4--
Bei einem Interrupt als Timerüberlauf würde ich "TIM1_OVF" einsetzen. 
(Seite 84)
Korrekt?

--5--
Welcher Match-Befehl steht für Voreinstellung und Vergleichswert? (Seite 
48)
TIM1_COMPA ... Timer/Counter1, Compare Match A
TIM1_COMPB ... Timer/Counter1, Compare Match B
TIM1_CAPT ... Timer/Counter1, Capture Event
"Event" kann ich gar nicht zuordnen. "CTC-Modus"?

-- :-) --
Danke schon mal für konstruktive Rückmeldungen!
Gast #5867142
Lesenswert?

__Son´s B. schrieb:
> Wird der Timer/Counter1, 16bit (Seite 87, 88) mit "TCNT1" angesprochen?

Hmm, das ist ein Register, das Zähler Register.

Es gibt doch unter "12.11 Register Description" eine komplette 
Darstellung.
TCCR1A, TCCR1B, TCCR1C, TCNT1H and TCNT1L, OCR1AH and OCR1AL, OCR1BH and 
OCR1BL, ICR1H and ICR1L, TIMSK1 und TIFR1.

Die muss man alle kennen und bei Bedarf sind die Inhalte auch zu 
verändern.
Gast #5867145
Lesenswert?

__Son´s B. schrieb:
> Welcher Match-Befehl steht für Voreinstellung und Vergleichswert? (Seite
> 48)
> TIM1_COMPA ... Timer/Counter1, Compare Match A
> TIM1_COMPB ... Timer/Counter1, Compare Match B
> TIM1_CAPT ... Timer/Counter1, Capture Event
> "Event" kann ich gar nicht zuordnen. "CTC-Modus"?

Am besten schauen wir mal in's Datenblatt Seite 87ff.
"Table 12-5.Waveform Generation Modes" Seite 110

Ich denke, dass muss keiner vorkauen!
Gast #5867150
Lesenswert?

__Son´s B. schrieb:
> Mit einigen Begriffen und Registerbezeichnungen komme ich leider nicht
> zurecht.
> Da scheint mir jeder uC-Typ seine eigene Bezeichnung zu haben.
Kann - wird so - sein, das sich über die Entwicklung Namen geändert 
haben oder neu dazu gekommen sind.
Nur gut, dass die allen im Datenblatt und der avr gcc Implementierung 
stehen.
Gast #5867164
Lesenswert?

__Son´s B. schrieb:
> --1--
> Timer soll über den Programmtakt von 1MHz getaktet werden.#define F_CPU
> 1000000ULIm Datenblatt steht bei CLK/cpu (Seite 24, 25), CKSEL1<1=8Mhz
> oder
> CKSEL2<1 =127kHz.
> Wie verweise ich auf meinen CPU-Takt?

Vorab ein ganzes Kapitel "6. Clock System" beschreibt die Fuse-Bits und 
Register.

Zur Laufzeit kann man bei manchen AVR's den Clock Prescaler ändern.
"6.5.2 CLKPR – Clock Prescale Register"

Dazu muss man Bits unter CLKPR in der richtigen Reihenfolge verändern.
Die Bits heißen dann CLKPS3 bis CLKPS0 und werden kurz als CLKPS[3:0] 
geschrieben.

Bsp. der Vorteiler 1 wird als CLKPS[3:0] = 0b0000 definiert.
Gast #5867174
Lesenswert?

Also, langsam das Datenblatt ist offen?

Table 12-5.Waveform Generation Modes
Du suchst CTC - ok

wir finden unter
CTC (Clear Timer on Compare)
----------------------------
Mode 4
WGM[13:10] = 0100 --> ist klar was das bedeutet?
TOP: OCR1A --> ist klar was das bedeutet?

Was bedeutet dann:
TOV1 Flag Set on: MAX ???
Gast #5867176
Lesenswert?

__Son´s B. schrieb:
> __Son´s B. schrieb:
>> TIM1_COMPA ... Timer/Counter1, Compare Match A
>> TIM1_COMPB ... Timer/Counter1, Compare Match B
>
> hier habe ich immer noch keine Eindeutigkeit bzgl. Start/Endwert
> gefunden.

Das findet sich im Abschnitt "Table 9-1.Reset and Interrupt Vectors"

Was kann das also sein?
Gast #5867180
Lesenswert?

Will man nun wissen, wie so ein CTC Modus funktioniert,
kann man einfach mal suchen und findet:

11.7.2 Clear Timer on Compare Match (CTC) Mode

In Clear Timer on Compare or CTC mode (WGM02:0 = 2), the OCR0A Register 
is used tomanipulate the counter resolution. In CTC mode the counter is 
cleared to zero when the countervalue (TCNT0) matches the OCR0A. The 
OCR0A defines the top value for the counter, hencealso its resolution. 
This mode allows greater control of the Compare Match output frequency. 
Italso simplifies the operation of counting external events.


Figure 11-5.CTC Mode, Timing Diagram

The timing diagram for the CTC mode is shown in Figure 11-5 on page 75. 
The counter value(TCNT0) increases until a Compare Match occurs between 
TCNT0 and OCR0A, and then coun-ter (TCNT0) is cleared.

>> Bild
Gast #5867187
Lesenswert?

Der Abschnitt für Timer 1 und CTC findet sich hier:

12.8   Modes of Operation

12.8.2 Clear Timer on Compare Match (CTC) Mode

In Clear Timer on Compare or CTC mode (WGM13:0 = 4 or 12), the OCR1A or 
ICR1 Registerare used to manipulate the counter resolution. In CTC mode 
the counter is cleared to zero whenthe counter value (TCNT1) matches 
either the OCR1A (WGM13:0 = 4) or the ICR1 (WGM13:0 =12). The OCR1A or 
ICR1 define the top value for the counter, hence also its resolution. 
Thismode allows greater control of the compare match output frequency. 
It also simplifies the opera-tion of counting external events.
...

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