Timer-counter. The AVR microcontroller and embedded systems. (Chapter 9) презентация

Timer/counterGuess What ?A counter registerA simple design (counting people) First designA simple design (counting people) Second designA simple design (making delay)A generic timer/counter
 Delay generating
 Counting
 Wave-form generating
 CapturingTimers in AVR
 1 to 6 timers
 3 timers in ATmega32
Timer in AVRTimer 0 (an 8-bit timer)Timer 0Normal modeAccurate calculatingFinding values to be loaded into the timer
 Calculate the periodExample 2: Assuming that XTAL = 10 MHz, write a programExample 3: Modify TCNT0 in Example 2 to get the largestGenerating Large Delays
 Using loop
 Prescaler
 Bigger countersPrescaler and generating a large time delayCTC (Clear Timer on Compare match) modeRewrite example 2 using CTC
 For a square wave with TTimer2
 Timer0The difference between Timer0 and Timer2
 Timer0Timer 1Assuming XTAL = 10 MHz write a program that toggles PB5TEMP registerAssuming XTAL = 10 MHz write a program that toggles PB5CountingCountingExample Assuming that clock pulses are fed into pin T0, writeAssuming that clock pulses are fed into pin T1. Write a



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Timer/counter


Слайд 2
Описание слайда:
Guess What ?

Слайд 3
Описание слайда:
A counter register

Слайд 4
Описание слайда:
A simple design (counting people) First design

Слайд 5
Описание слайда:
A simple design (counting people) Second design

Слайд 6
Описание слайда:
A simple design (making delay)

Слайд 7
Описание слайда:
A generic timer/counter Delay generating Counting Wave-form generating Capturing

Слайд 8
Описание слайда:
Timers in AVR 1 to 6 timers 3 timers in ATmega32 8-bit and 16-bit timers two 8-bit timers and one 16-bit timer in ATmega32

Слайд 9
Описание слайда:
Timer in AVR

Слайд 10
Описание слайда:
Timer 0 (an 8-bit timer)

Слайд 11
Описание слайда:
Timer 0

Слайд 12
Описание слайда:

Слайд 13
Описание слайда:
Normal mode

Слайд 14
Описание слайда:

Слайд 15
Описание слайда:

Слайд 16
Описание слайда:

Слайд 17
Описание слайда:
Accurate calculating

Слайд 18
Описание слайда:
Finding values to be loaded into the timer 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 256 - n, where n is the decimal value we got in Step 2. Set TCNT0 = 256 - n

Слайд 19
Описание слайда:
Example 2: Assuming that XTAL = 10 MHz, write a program to generate a square wave with a period of 10 ms on pin PORTB.3. For a square wave with T = 10 µs we must have a time delay of 5 µs. Because XTAL = 10 MHz, the counter counts up every 0.1 µs. This means that we need 5 µs / 0.1 µs = 50 clocks. 256 - 50 = 206.

Слайд 20
Описание слайда:
Example 3: Modify TCNT0 in Example 2 to get the largest time delay possible with no prescaler. Find the delay in µs. In your calculation, do not include the overhead due to instructions. To get the largest delay we make TCNT0 zero. This will count up from 00 to 0xFF and then roll over to zero.

Слайд 21
Описание слайда:
Generating Large Delays Using loop Prescaler Bigger counters

Слайд 22
Описание слайда:
Prescaler and generating a large time delay

Слайд 23
Описание слайда:
CTC (Clear Timer on Compare match) mode

Слайд 24
Описание слайда:
Rewrite example 2 using CTC For a square wave with T = 10 µs we must have a time delay of 5 µs. Because XTAL = 10 MHz, the counter counts up every 0.1 µs. This means that we need 5 µs / 0.1 µs = 50 clocks. Therefore, we have OCR0= 49.

Слайд 25
Описание слайда:
Timer2 Timer0

Слайд 26
Описание слайда:
The difference between Timer0 and Timer2 Timer0

Слайд 27
Описание слайда:
Timer 1

Слайд 28
Описание слайда:

Слайд 29
Описание слайда:
Assuming XTAL = 10 MHz write a program that toggles PB5 once per millisecond, using Normal mode. XTAL = 10 MHz  1/10 MHz = 0.1 µs Num. of machine cycles = 1 ms / 0.1 µs = 10,000 TCNT1 = 65,536 – 10,000 = 55,536 = $D8F0

Слайд 30
Описание слайда:
TEMP register

Слайд 31
Описание слайда:
Assuming XTAL = 10 MHz write a program that toggles PB5 once per millisecond, using CTC mode. .INCLUDE "M32DEF.INC" LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16 SBI DDRB,5 ;PB5 as an output BEGIN:SBI PORTB,5 ;PB5 = 1 RCALL DELAY_1ms CBI PORTB,5 ;PB5 = 0 RCALL DELAY_1ms RJMP BEGIN DELAY_1ms: LDI R20,0x00 OUT TCNT1H,R20 ;TEMP = 0 OUT TCNT1L,R20 ;TCNT1L = 0, TCNT1H = TEMP LDI R20,0x27 OUT OCR1AH,R20 ;TEMP = 0x27 LDI R20,0x0F OUT OCR1AL,R20 ;OCR1AL = 0x0F, OCR1AH = TEMP LDI R20,0x3 OUT TCCR1A,R20 ;WGM11:10=11 LDI R20,0x19 OUT TCCR1B,R20 ;WGM13:12=11,CS=CLK AGAIN: IN R20,TIFR ;read TIFR SBRS R20,OCF1A ;if OCF1A is set skip next instruction RJMP AGAIN LDI R20,1<<OCF1A OUT TIFR,R20 ;clear OCF1A flag LDI R19,0 OUT TCCR1B,R19 ;stop timer OUT TCCR1A,R19 ; RET

Слайд 32
Описание слайда:
Counting

Слайд 33
Описание слайда:
Counting

Слайд 34
Описание слайда:
Example Assuming that clock pulses are fed into pin T0, write a program for counter 0 in normal mode to count the pulses on falling edge and display the state of the TCNT0 count on PORTC. .INCLUDE "M32DEF.INC" CBI DDRB,0 ;make T0 (PB0) input LDI R20,0xFF OUT DDRC,R20 ;make PORTC output LDI R20,0x06 OUT TCCR0,R20 ;counter, falling edge AGAIN: IN R20,TCNT0 OUT PORTC,R20 ;PORTC = TCNT0 IN R16,TIFR SBRS R16,TOV0 RJMP AGAIN ;keep doing it LDI R16,1<<TOV0 OUT TIFR, R16 RJMP AGAIN ;keep doing it

Слайд 35
Описание слайда:
Assuming that clock pulses are fed into pin T1. Write a program for counter 1 in CTC mode to make PORTC.0 high every 100 pulses. .INCLUDE "M32DEF.INC" CBI DDRB,1 ;make T1 (PB1) input SBI DDRC,0 ;PC0 as an output LDI R20,0x0 OUT TCCR1A,R20 LDI R20,0x0E OUT TCCR1B,R20 ;CTC, counter, falling edge AGAIN: LDI R20,0 OUT OCR1AH,R20 ;TEMP = 0 LDI R20,99 OUT OCR1AL,R20 ;ORC1L = R20, OCR1H = TEMP L1: IN R20,TIFR SBRS R20,OCF1A RJMP L1 ;keep doing it LDI R20,1<<OCF1A ;clear OCF1A flag OUT TIFR, R20 SBI PORTC,0 ;PC0 = 1 CBI PORTC,0 ;PC0 = 0 RJMP AGAIN ;keep doing it


Скачать презентацию на тему Timer-counter. The AVR microcontroller and embedded systems. (Chapter 9) можно ниже:

Похожие презентации