EE 308 - Homework 11
Due April 12, 2000
- A serial eight-channel 12-bit A/D converter communicates over the
SPI with the following specifications:
- Select the chip by bringing
- Send an eight-bit number with the channel you want to convert in the
lower three bits. The upper 5 bits are ignored.
- Read sixteen bits from the A/D converter. The four most significant
bits are zeros. The twelve least-significant bits are the A/D voltage of the
channel you requested.
- Deselect the chip by bringing
- The maximum SCLK frequency is 750 kHz. The timing diagram looks like
line of the A/D converter is connected to the PP4 pin of the HC12.
- Write some C code to set the the HC12 to communicate with the A/D
converter. Be sure to make PP4 an output, deselct the A/D, set
the SPI clock rate, clock polarity, and clock phase to work with the A/D.
The SPI should be set up to use polling rather than interrupts.
- Write some C code to tell the A/D to convert Channel 3. Read the value
returned from Channel 3 and store it in a 16-bit number called
- The A/D converter has a range from 0 V to 5 V. The value returned from
the A/D is 0x7A3. What analog voltage is on the Channel 3 input pin?
- The following problem deals with the SPI flag.
- How do you clear the SPI flag (SPIF bit of SP0SR register)?
- Write some C code to clear the SPI flag.
- The following will help you prepare for Lab 9.
- Write some C code to set up the HC12 SPI to communicate with the MAX522
D/A converter chip. Again, be sure to set up the chip select line, the clock
rate, the clock phase and the clock polarity. The SPI should work in polled
rather than interrupt mode.
- Write some C code to set up Expanded Port A as input, and generate a TOF
interrupt about 4 times a second. In the TOF interrupt service routine, read
the values on Expanded Port A, and write them to Channel A of the D/A converter,
and to the slave HC12.
- Write some C code to set up the slave HC12. Set up the SPI as a slave,
with interrupts enabled, and set up Expanded Port A as output.
- Write some C code for the slave interrupt service routine -- in the
interrupt service routine, read the value sent by the master and write it to
Expanded Port A.