Interrupt Driven UART DEMO:___________________________________________________
Radio Demo: _____________________________________________________________
Bonus Demo: _____________________________________________________________
How does the application initialize the UART connection? What is the
UART
speed and configuration? How is this different from earlier uses when
you
output data using printf
?
Change the application such that it reacts immediate on key presses and
changing the output mode of the OLED accordingly. Instead of using a
polled character read function, you will have to use interrupts. Look at the
UART driver in drivers/mms_uart
, especially the
MSS_UART_set_rx_handler()
function definition in mss_uart.h
,
to find out how to subscribe to interrupt events,
and configure the driver for interrupt driven
communication. In addition, you will have to change the switch
block for the new behavior. Consider how you can use a global variable
that is set in the UART interrupt service routine to exit loops and delays
in the switch block. For instances, much time is
spent in the delay function. This would be a good place to use
the global variable to exit the delay loop. Note that you don't
have to check for a change of state after every operation.
Human reaction time is around 100 ms. Thus, if you
react to a key press within that time, we can't really differentiate if
it was immediate or not. Last thing to note: If a case statement cannot
finish (by braking at the middle) some of the OLED setting might not get
reset for another case statement's proper display.
Identify the peripheral to which each signal belongs.
Signal Name | Pin Number | Breakout Name | Peripheral Name |
---|---|---|---|
MISO | E3 | F0 | |
MOSI | F3 | F1 | |
SCK | G4 | F2 | |
CS | H5 | F3 | |
RX | H6 | F4 | |
TX | J6 | F5 | |
SDA | B22 | F6 | |
SCL | C22 | F7 |
Using the different logic analyzer capabilities answer the following questions for the different serial protocols. Make sure you measure average transfer rates over a significant amount of time, not just over one transfer (e.g. 100ms to 1 second).
The UART uses 8 bit data. Answer the following questions using the logic analyzer.