This page is optimized for mobile devices, if you would prefer the desktop version just click here

4.3 4.4 - lab 4: timers and interrupts

In this lab, we will cover various timing options for the ez430 and their implementation with interrupts.

In this lab, we will cover the timing options for the ez430. The first part explains the clocking system of the processor and the options it allows while the second part covers the timers and timer interrupts available on the ez430. Each of these sections is strongly related to real time programming, but that topic will be dealt with separately in another lab. In general, a real-time application is one which responds to its inputs as fast as they happen. The microprocessor is generally expected to take less time to handle an interrupt or stimulus than the time before the next event will happen. The timer system is broken into two primary parts on the ez430 Timer A and the Watchdog timer.

Timer a

Refer to Chapter 8: Timer_A User's Guide to get a detailed description of all the options in Timer A. Basically, setting up the timers requires that you define a source for the timer and to specify a direction for the count. It may also be helpful to clear the timer register before you begin to guarantee and accurate count from the first instance. Set up Timer A in Continuous Mode and sourced from SMCLK. Set TACCR0 and TACCR1 to have two different values. Output TA0 and TA1 from Pins 3 and 4 (off of P1.1 and P1.2) of the board so that you may directly observe the output of Timer A.

Using two different channels of the Oscilloscope try to recreate parts of Figure 8-13. Output Example- Timer in Continuous Mode . On Channel 1 show Output Mode 4: Toggle and on Channel 2 show Output Mode 6: Toggle/Set . Vary the TACCTLx in order to get as close to the orginal figure as possible. Take a screenshot of the scope and include it in your lab report.

Timer

Set up the timers to fire interrupts to calculate time intervals and redo the SOS problem from Lab 1 using the timer to simulate the "dot" and "dash" time intervals. There should be NO COUNTING LOOPS in your program, and your program should be entirely interrupt driven. It is possible to have each Capture Control Register to fire an interrupt once it reaches its max value. Explain how you setup Timer A to simulate each time interval.

Duty cycle

We have discussed earlier that the Duty Cycle is related to the width of a pulse. If we trigger an LED with a relatively high frequency square wave, it will appear to be lit constantly even though it is actually switching on and off quickly. As we vary the duty cycle of our trigger signal, the LED may appear to get dimmer or brighter depending on which way we vary it.

Set up the timer to toggle the LED. Without changing the frequency of your timing pulse, change the duty cycle so that the LED appears to fade in and out. The time it takes to go from completely off to max brightness shouldn't take more than a second, then it should repeat. Once again, there should be no counting loops in your program, and you can use Timer A in any way you wish.

Once you get a single light to fade in and out, create another program with a function to set the LED at a certian brightness level when given atleast a 12 bit integer. For example, if I were to call LED_level(0x111) , the LED should appear very dim; if I were to call LED_level(0xFA0) , the LED should appear very bright. It may be helpful to have an extra function that initializes the Timer settings so that the use of this application is self contained. In the future, we will use this function to provide visual feedback when using other components.

<< Chapter < Page Page > Chapter >>

Read also:

OpenStax, Introduction to the texas instruments ez430. OpenStax CNX. Jun 19, 2006 Download for free at http://cnx.org/content/col10354/1.6
Google Play and the Google Play logo are trademarks of Google Inc.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.