1 68hc11 timer. 2 68hc11 timer subsystem several timing functions: basic timing basic timing real...
DESCRIPTION
3 Basic TimerTRANSCRIPT
11
68HC11 Timer68HC11 Timer
22
68HC11 Timer Subsystem68HC11 Timer SubsystemSeveral timing functions:Several timing functions: Basic timingBasic timing Real time interruptsReal time interrupts Output compareOutput compare Input captureInput capture Computer Operating ProperlyComputer Operating Properly Pulse AccumulatorPulse Accumulator Pulse Width Modulation Pulse Width Modulation
Common FeaturesCommon Features Based on a central timerBased on a central timer Overflow FlagsOverflow Flags Interrupt EnablesInterrupt Enables
33
Basic TimerBasic Timer
44
Basic Timer– TCNTBasic Timer– TCNT$100E/0E$100E/0E
16-bit free running counter (timer)16-bit free running counter (timer) Cannot be set or stopped. Cannot be set or stopped.
Fclk = system clockFclk = system clockCan be prescaled by 1,4,8, or 16Can be prescaled by 1,4,8, or 16Read only at memory address ($100E/$0E)Read only at memory address ($100E/$0E) Overflow flag is bit 7 in TFLG2 ($1025/$25)Overflow flag is bit 7 in TFLG2 ($1025/$25)
Can use overflow to extend counter’s rangeCan use overflow to extend counter’s range Timer Overflow Interrupt Enable Timer Overflow Interrupt Enable
Bit 7 in TMSK ($1024/$24)Bit 7 in TMSK ($1024/$24)
55
TCNT - $100E:$100FTCNT - $100E:$100FTimer Counter RegisterTimer Counter Register
7 6 5 4 3 2 1 0
Bits
CNT15
READ ONLY Register
CNT13 CNT12 CNT11 CNT10 CNT9 CNT8CNT14
7 6 5 4 3 2 1 0
CNT7 CNT5 CNT4 CNT3 CNT2 CNT1 CNT0CNT6
$100E
$100F
66
PrescalerPrescaler
7 6 5 4 3 2 1 0
Bits
PR2PR1PAII 00PAOVIRTHTOI
Timer Interrupt Mask Register 2: $1024/24 -- TFLG2
PR1,PR0 = Timer prescale select - Timer Clock = System Clock / Prescale Factor
Pr1 Pr0 Prescaler Timer count (overflow period) 0 0 1 E/1 (32.77 ms) 0 1 2 E/4 (131.1 ms) 1 0 8 E/8 (262.1 ms) 1 1 16 E/16 (524.3 ms)
77
Timer Overflow FlagTimer Overflow Flag
7 6 5 4 3 2 1 0
Bits
00PAIF 00PAOVFRTIFTOF
Miscellaneous Timer Interrupt Flag Register 2: $1025 (TFLG2)
TOF = Timer overflow flag - 0 = No overflow 1 = Overflow
TOF is reset to 0 by writing ‘1’ to TOF
88
Timer Overflow InterruptsTimer Overflow Interrupts
7 6 5 4 3 2 1 0
Bits
PR2PR1PAII 00PAOVIRTHTOI
Timer Interrupt Mask Register 2: $1024 (TMSK2)
TOI = Timer overflow interrupt enable 0 = disable interrupt 1 = enable interrupt
99
Basic Timer ExampleBasic Timer Example
*************************************************************************************************** Time delay = 1000 X 524.3 ms= 524 s* Time delay = 1000 X 524.3 ms= 524 s**************************************************************************************************
ORG $0200ORG $0200SUBSUB LDX #1000LDX #1000
BSET $24 $03 ; BSET $24 $03 ; PRESCALE = 524.3 msPRESCALE = 524.3 ms
BCLR $24 $80 ; BCLR $24 $80 ; Disable the main timer interruptDisable the main timer interrupt
CONCON BSET $25 $80 : BSET $25 $80 : CLEAR OVERFLOW FLAG START THE TIMERCLEAR OVERFLOW FLAG START THE TIMER
MONMON BRCLR $25 $80 MON ; BRCLR $25 $80 MON ; END OF INTERVAL?END OF INTERVAL?
DEXDEX ; ; NEXT INTERVALNEXT INTERVAL
BNE CONBNE CON ; ; END OF COUNT?END OF COUNT?
RTSRTS ; ; YES, GO BACK TO MAIN PROGRAMYES, GO BACK TO MAIN PROGRAM
1010
Basic Timer ExampleBasic Timer ExampleMAX_CNT Calculation MAX_CNT Calculation
Need to wait 1,000,000 or $F4240 clock Need to wait 1,000,000 or $F4240 clock cycles.cycles.Interrupt is generated every 65536 or $10000 Interrupt is generated every 65536 or $10000 clock cyclesclock cyclesMax_CNT = INT(1,000,000 / 65556) = 15.258 ~ 15 = $FMax_CNT = INT(1,000,000 / 65556) = 15.258 ~ 15 = $F Note: INT($F4240/$10000) = $FNote: INT($F4240/$10000) = $F
Set MAX_CNT EQU $FSet MAX_CNT EQU $F
1111
Real Time InterruptReal Time Interrupt
1212
Real Time InterruptReal Time Interrupt
Similar to Timer Overflow Interrupt exceptSimilar to Timer Overflow Interrupt exceptWe have:We have: RTI Flag (RTIF) – Bit 6 in TFLG2 ($1025)RTI Flag (RTIF) – Bit 6 in TFLG2 ($1025) RTI Enable (RTII) – Bit 6 in TMSK2 ($1024)RTI Enable (RTII) – Bit 6 in TMSK2 ($1024) System Clock is first divided by $1000 then System Clock is first divided by $1000 then
divided again by the prescale bits given by divided again by the prescale bits given by RTR1 and RTR0 in PACTL ($1026)RTR1 and RTR0 in PACTL ($1026)
1313
Real Time Interrupt Real Time Interrupt EnableEnable
7 6 5 4 3 2 1 0
Bits
PR2PR1PAII 00PAOVIRTIITOI
Timer Interrupt Mask Register 2: $1024 (TMSK2)
RTII = Real Time Interrupt Enable 0 = disable interrupt 1 = enable interrupt
1414
Real Time Interrupt FlagReal Time Interrupt Flag
7 6 5 4 3 2 1 0
Bits
00PAIF 00PAOVFRTIFTOF
Miscellaneous Timer Interrupt Flag Register 2: $1025 (TFLG2)
RTIF = Real Time Interrupt flag - 1 = RTI has occurred
RTIF is reset to 0 by writing ‘1’ to RTIF
1515
Real Time InterruptReal Time InterruptPrescalePrescale
7 6 5 4 3 2 1 0
Bits
RTR0RTR1PEDGEPAMODPAEN6DDRA7 00
RTR1, RTR0= Real Time Interrupt Prescale
RTR1 RTR0 Nominal RTI rate (2MHz E-Clock) 0 0 4.096ms 0 1 8.192ms 1 0 16.384ms 1 1 32.768ms
Port A Control Register: $1026 (PACTL)
1616
Basic Timer ExampleBasic Timer Example
*************************************************************************************************** Time delay = 2000 X 32.77 ms= 65 s* Time delay = 2000 X 32.77 ms= 65 s**************************************************************************************************
ORG $0200ORG $0200SUBSUB LDX #2000LDX #2000
BSET $26 $03 ; BSET $26 $03 ; PRESCALE = 32.77 msPRESCALE = 32.77 ms
BCLR $24 $40; BCLR $24 $40; Disable the RTI TIMER interruptDisable the RTI TIMER interrupt
CONCON BSET $25 $40 : BSET $25 $40 : CLEAR OVERFLOW FLAG START THE TIMERCLEAR OVERFLOW FLAG START THE TIMER
MONMON BRCLR $25 $40 MON ; BRCLR $25 $40 MON ; END OF INTERVAL?END OF INTERVAL?
DEXDEX ; ; NEXT INTERVALNEXT INTERVAL
BNE CONBNE CON ; ; END OF COUNT?END OF COUNT?
RTSRTS ; ; YES, GO BACK TO MAIN PROGRAMYES, GO BACK TO MAIN PROGRAM