Presentation is loading. Please wait.

Presentation is loading. Please wait.

Timers/Counters.

Similar presentations


Presentation on theme: "Timers/Counters."— Presentation transcript:

1 Timers/Counters

2 Counter Register

3 Karşılaştırıcısız çözüm olur mu?
A Simple Design (Counting 4 People) First Design (Counter Register has initial value of zero) Sensor Karşılaştırıcısız çözüm olur mu?

4 Karşılaştırıcısız çözüm
A Simple Design (Counting 4 People) Second Design (Counter Register has initial value of 0xFC) Sensor Karşılaştırıcısız çözüm

5 A Simple Design (Making 4 Clock Cycles Delay)
Bu sayıcı bir sensör yerine periyodik bir saat sinyali ile tetiklendiği için bir zamanlayıcıya dönüşmüştür.

6 A Generic Timer/Counter
Delay generating Counting Wave-form generating

7 Timers/Counters in AVR ATMega328PU
Two 8-bit Timers/Counters (0-255) Timer 0 Timer 2 One 16-bit Timer/Counter ( ) Timer 1

8 Timer Registers and Flags
TCNTn (Timer/CouNTer Register) TOVn (Timer OVerflow Flag) TCCRn (Timer/Counter Control Register) OCRn (Output Compare Register) OCFn (Output Compare Match Flag) TIFRn (Timer Interrupt Flag Register) TCCRn TCNTn TOVn = OCFn n 0, 1 veya 2 değerini alır. OCRn

9 Normal Mode (Timer 0) 1 FF FE 2 1 TOV0 = 1 TOV0: 0xFF TCNT0 TOV TOV
time 1 TOV0 = 1 1 TOV0:

10 Example 1: Write a Program that Waits 14 Machine Cycles in Normal Mode.
$100 -$0E $F2 $F2 Question: How to calculate the delay generated by the timer? Answer: 1) Calculate how much a machine clock lasts. T= 1/f 2) Calculate how many machine clocks it waits. 3) Delay = T * number of machine cycles

11 Finding Values to be Loaded into the Timer 0
Calculate the period of clock source. Period = 1 / Frequency E.g. For XTAL = 8 MHz  T = 1/8MHz Divide the desired time delay by period of clock. Perform n, where n is the decimal value we got in Step 2. Set TCNT0 = n

12 CTC (Clear Timer on Compare Match) Mode (Timer 0)
TCNT0 0xFF OCR0 OCF0 OCF0 OCF0 time OCR0 xx 2 1 TOV0: TOV0 = no change OCF0 = 1 1 OCF0:

13 Prescaler

14 Timer 1 (A 16-bit Timer)

15 Timer 1 OCR1B (OCR1BH + OCR1BL) = TCCR1A TCCR1B
OCF1B TCCR1A TCCR1B TCNT1 (TCNT1H + TCNT1L) TOV1 = OCF1A OCR1A (OCR1AH + OCR1AL)

16 Timer 1 Registers

17 Timer Clock Selector (CS1x)
6 Timer Clock Selector (CS1x) 7

18 Timer Mode Selector (WGM1x)

19 Wrap Times (Fcpu=16 MHz) TIMER 0 is 8-bit (0−255)
when prescaler = 1, reaches full count in 16 ms when prescaler = 1024, full count in ms TIMER 1 is 16-bit (0−65536) when prescaler = 1, reaches full count in ms when prescaler = 1024, full count in seconds TIMER 2 is 8-bit (0−255) These wrap times set limits on timed interrupts makes TIMER 1 attractive, for its 16 bits

20 A Complete Timer 1 AVR C Example (V1) (Normal Mode)
Yoklama (Polling). Kesmeden Farkı? Bayrağı Silmek İçin Set Etmek Gerekli??

21 A Complete Timer 1 AVR C Example (V2) (Normal Mode)

22 A Complete Timer 1 AVR C Example (CTC Mode)

23 AVR C Definitions for ATMega328P
The bit values WGM12, CS10, etc. are defined in iom328p.h Its location is hardware/tools/avr/avr/include/avr/ For example: #define CS10 0 #define CS11 1 #define CS12 2 #define WGM12 3 #define WGM13 4 #define ICES1 6 #define ICNC1 7 #define OCR1A _SFR_MEM16(0x88) #define OCR1AL _SFR_MEM8(0x88) #define OCR1AH _SFR_MEM8(0x89) #define TIMER1_COMPA_vect _VECTOR(11) // Timer1 Compare Match A

24 Generating Large Delays
Using loop Prescaler Bigger counters

25 The Difference Between Timer 0 and Timer 2
CS02 CS01 CS00 Comment Timer/Counter stopped clk (No Prescaling) clk / 8 clk / 64 clk / 256 clk / 1024 External clock on T0 (falling edge) External clock on T0 (rising edge) CS22 CS21 CS20 Comment Timer/Counter stopped clk (No Prescaling) clk / 8 clk / 32 clk / 64 clk / 128 clk / 256 clk / 1024

26 Atmel AVR ATMega328P Mikrodenetleyicisinin Pinout Diyagramı


Download ppt "Timers/Counters."

Similar presentations


Ads by Google