Task 1: Real-time clock

Task 1: Real-time clock

The ‘delay’ function as used in the workshops is limited because it depends on approximate

timing based on how long the processortakes to execute the ‘NOP’ instruction,and the limitations ofthe size of an integer means that the maximum delay will be approximately 65 seconds. Furthermore, the processor

cannot do anything else while the delay is going on, and any interrupts run during the ‘delay’ will cause the delay to be longer than intended.

The Atmel ATmega168 does provide the facility to maintain more accurate and longer
timings through the use ofthe crystal oscillator and the timer/counter circuitry in the processor.

Yourtask is to work out how to use these components so that programs can be
written to accurately trigger events at least up to 1 hour after a ‘timer’ is ‘set’. The function should allow
forthe timer interval to be set in minutes and seconds.

Your solution should include the following:

1. Overall description ofthe principles of operation of your solution

2. Description of all timer/counters, registers, and interrupts used and theirfunction

3. Details of all configuration

information to get the processorto perform this function

(e.g. what needs to be written to different configuration registers, including


particular bits are set or cleared)

4. Description ofthe overall algorithm(s) to implement the function

Note: This can be in the form

of pseudocode. Code fragments (lines of code) can be

used to demonstrate where appropriate.

Note: You do NOT have to write the whole program

forthis assignment.

Task 2: Interfacing a 7-segment LED display (20 marks)

7-segment LED displays are commonly used in microcontroller

applications. The datasheet

forthe Avago HDSP-5601 LED display is attached. Yourtask is to ‘design’ an interface
between the Atmel

ATmega168 microcontroller and this particular display.

1. Referto the datasheet, pick out all the relevant interface data (this is a very

practical skill!) and clearly list them.

Note: Make sure you get details ofthe right model.

2. Produce a circuit diagram with

details of all elements required to allowthe processor

to drive this particular LED display properly. You should provide copies of


datasheets for any elements you may choose to include in your design (except passive
elements such as resistors and capacitors).

3.Describe how your circuit elements address the interfacing requirements. ensure that you consider both the Atmega168 and LED display requirements specifications, and justify any decisions made, including any calculations if required.

4. Write a C subroutine that willenable the display ofthe digits ‘0’ to ‘9’ and characters

a’ to ‘f’ (for hex numbers) on the LED display (specified by a parameter passed to the subroutine). Note: Assume you are using the NerdKit as in the labs.