EE 308
Homework #8
Due Mar. 11, 1998

  1. What setup do you need to do to have the HC12 generate an interrupt on either a rising or falling edge of Input Capture 1? Write some C code to do this.

  2. An engineer is using the HC12 to determine how long it takes a wheel to make one revolution. A pulse is generated on Bit 1 of Port T once every revolution of the wheel. Bit 1 of Port T is set up for input capture mode, and captures the time of the rising edge. The prescaler bits PR2:0 are set to 101. It is known that the period of revolution of the wheel is less than the timer overflow time. When the first edge is captured, the TC1 register has a value of 0xD87A. When the second rising edge is captured, the TC1 register has a value of 0x2A5F. What it the length of time between the two rising edges?

  3. What setup do you need to do to have the HC12 toggle bit 2 of Port T on a successful output compare? Write some C code to do this.

  4. You want to generate a 250~Hz square wave using Output Compare 2. What value should you add to TC2 in your toc2_isr()? (Assume that the prescaler bits PR2:0 = 011.) What else should you do in your toc2_isr()? Write the interrupt service routine toc2_isr() to do this.

  5. You want to generate a 500~Hz pulse width modulated signal with a 30% duty cycle on bit 6 of Port T using OC7 and OC6. (Again, assume PR2:0 = 011.)
    1. What setup is necessary to have the HC12 bring PT6 high when TCNT = TC7? Write the necessary C code to do this.
    2. What setup is necessary to have the HC12 bring PT6 low when TCNT = TC6? Write the necessary C code to do this.
    3. In your toc7_isr() how should you update TC7 and TC6 to produce the required PWM signal? Write a toc7_isr() interrupt service routing in C which will do this.

  6. Write the program for Lab 8.