68HC11 Timer 1 68HC11 Timer Subsystem Several timing functions: Basic timing Real time interrupts Output compare Input capture Computer Operating Properly Pulse Accumulator Pulse Width Modulation Common Features Based on a central timer Overflow Flags Interrupt Enables 2 Basic Timer 3 Basic Timer– TCNT $100E/0E 16-bit free running counter (timer) Cannot be set or stopped. Fclk = system clock Can be prescaled by 1,4,8, or 16 Read only at memory address ($100E/$0E) Overflow flag is bit 7 in TFLG2 ($1025/$25) Can use overflow to extend counter’s range Timer Overflow Interrupt Enable Bit 7 in TMSK ($1024/$24) 4 TCNT - $100E:$100F Timer Counter Register CNT14 CNT13 CNT12 CNT11 7 6 5 4 3 2 CNT7 CNT6 CNT5 CNT4 CNT3 CNT2 7 6 5 4 3 2 CNT15 CNT10 CNT9 1 CNT1 1 CNT8 $100E 0 CNT0 $100F 0 Bits READ ONLY Register 5 Prescaler Timer Interrupt Mask Register 2: $1024/24 -- TFLG2 TOI RTH 7 6 PAOVI PAII 5 4 0 0 PR1 PR2 3 2 1 0 Bits PR1,PR0 = Timer prescale select - Timer Clock = System Clock / Prescale Factor Pr1 0 0 1 1 Pr0 0 1 0 1 Prescaler 1 2 8 16 Timer count (overflow period) E/1 (32.77 ms) E/4 (131.1 ms) E/8 (262.1 ms) E/16 (524.3 ms) 6 Timer Overflow Flag Miscellaneous Timer Interrupt Flag Register 2: $1025 (TFLG2) TOF 7 RTIF PAOVF PAIF 6 5 4 0 0 3 2 0 1 0 0 Bits TOF = Timer overflow flag 0 = No overflow 1 = Overflow TOF is reset to 0 by writing ‘1’ to TOF 7 Timer Overflow Interrupts Timer Interrupt Mask Register 2: $1024 TOI RTH 7 6 PAOVI PAII 5 4 (TMSK2) 0 0 PR1 PR2 3 2 1 0 Bits TOI = Timer overflow interrupt enable 0 = disable interrupt 1 = enable interrupt 8 Basic Timer Example ************************************************* * Time delay = 1000 X 524.3 ms= 524 s ************************************************* ORG $0200 SUB LDX #1000 BSET $24 $03 ; PRESCALE = 524.3 ms BCLR $24 $80 ; Disable the main timer interrupt CON BSET $25 $80 : CLEAR OVERFLOW FLAG START THE TIMER MON BRCLR $25 $80 MON ; END OF INTERVAL? DEX ; NEXT INTERVAL BNE CON ; END OF COUNT? RTS ; YES, GO BACK TO MAIN PROGRAM 9 Basic Timer Example MAX_CNT Calculation Need to wait 1,000,000 or $F4240 clock cycles. Interrupt is generated every 65536 or $10000 clock cycles Max_CNT = INT(1,000,000 / 65556) = 15.258 ~ 15 = $F Note: INT($F4240/$10000) = $F Set MAX_CNT EQU $F 10 Real Time Interrupt 11 Real Time Interrupt Similar to Timer Overflow Interrupt except We have: RTI Flag (RTIF) – Bit 6 in TFLG2 ($1025) RTI Enable (RTII) – Bit 6 in TMSK2 ($1024) System Clock is first divided by $1000 then divided again by the prescale bits given by RTR1 and RTR0 in PACTL ($1026) 12 Real Time Interrupt Enable Timer Interrupt Mask Register 2: $1024 TOI 7 RTII PAOVI PAII 6 5 4 (TMSK2) 0 0 PR1 PR2 3 2 1 0 Bits RTII = Real Time Interrupt Enable 0 = disable interrupt 1 = enable interrupt 13 Real Time Interrupt Flag Miscellaneous Timer Interrupt Flag Register 2: $1025 (TFLG2) TOF 7 RTIF PAOVF PAIF 6 5 4 0 0 3 2 0 1 0 0 Bits RTIF = Real Time Interrupt flag 1 = RTI has occurred RTIF is reset to 0 by writing ‘1’ to RTIF 14 Real Time Interrupt Prescale Port A Control Register: $1026 (PACTL) DDRA7 PAEN6 PAMOD PEDGE 7 6 5 4 0 3 0 RTR1 RTR0 2 1 0 Bits RTR1, RTR0= Real Time Interrupt Prescale RTR1 0 0 1 1 RTR0 0 1 0 1 Nominal RTI rate (2MHz E-Clock) 4.096ms 8.192ms 16.384ms 32.768ms 15 Basic Timer Example ************************************************* * Time delay = 2000 X 32.77 ms= 65 s ************************************************* ORG $0200 SUB LDX #2000 BSET $26 $03 ; PRESCALE = 32.77 ms BCLR $24 $40; Disable the RTI TIMER interrupt CON BSET $25 $40 : CLEAR OVERFLOW FLAG START THE TIMER MON BRCLR $25 $40 MON ; END OF INTERVAL? DEX ; NEXT INTERVAL BNE CON ; END OF COUNT? RTS ; YES, GO BACK TO MAIN PROGRAM 16
© Copyright 2025 Paperzz