Download presentation
Presentation is loading. Please wait.
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ı
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.