0% found this document useful (0 votes)
32 views17 pages

06 Lec Input - Output

This document discusses embedded systems concepts including: 1. Connecting analog and digital worlds through interfaces like physical connections, handshakes, and timing characteristics. 2. Common digital interfaces like parallel, serial, UART, SPI and standards like RS-232, USB, and I2O. 3. Examples of using serial interfaces with microcontrollers and issues around shared data and interrupts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views17 pages

06 Lec Input - Output

This document discusses embedded systems concepts including: 1. Connecting analog and digital worlds through interfaces like physical connections, handshakes, and timing characteristics. 2. Common digital interfaces like parallel, serial, UART, SPI and standards like RS-232, USB, and I2O. 3. Examples of using serial interfaces with microcontrollers and issues around shared data and interrupts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

EE522

Advanced Embedded Systems

Sources: [Introduction to Embedded Systems, Edward A.


Lee and Sanjit A. Seshia, UC Berkeley.
Embedded Networked Systems, Kai Huang, TU Munich]

2-1
Connecting the Analog and
Digital Worlds
Cyber: Physical:
• Digital • Continuum
• Discrete in time • Continuous in time
• Sequential • Concurrent
Interfaces

• Physical Connection
• Handshake
• Multiple connections
• Timing Characteristics

?
A Typical Microcomputer Board
This board has
analog and digital
inputs and outputs.
What are they?
How do they work?
Parallel vs. Serial Digital Interfaces
 Parallel
 Multiple data lines transmitting data
 Speed
 Ex: PCI, ATA, CF cards, Bus
 Serial
 Single data line transmitting data
 Low Power, length
 Ex: USB, SATA, SD cards,
PCI-Express
Simple Digital Output: GPIO
Open collector circuits
are often used on GPIO
(general-purpose I/O) pins
of a microcontroller.

The same pin can be used


for input and output. And
multiple users can connect
to the same bus.

Why is the current


limited?
Serial Interfaces
The old but persistent RS-232 standard
supports asynchronous serial
connections (no common clock). Many but not all uses of
How does it work? RS-232 are being
replaced by USB, which
is electrical simpler but
with a more complex
protocol.

Uppercase ASCII "K" character (0x4b)


with 1 start bit, 8 data bits, 1 stop bit.
Image license: Creative Commons
ShareAlike 1.0 License
UART: Universal Asynchronous
Receiver-Transmitter
• Convert serial data to
parallel data, and vice
versa.
• Uses shift registers to
load store data
• Can raise interrupt
when data is ready
• Commonly used with
RS-232 interface

Variant: USART: Universal Synchronous/Asynchronous


Receiver-Transmitter
Example Using a Serial Interface
In an Atmel AVR 8-bit microcontroller, to send a
byte over a serial port, the following C code will do:

while(!(UCSR0A & 0x20));


UDR0 = x;

• x is a variable of type uint8.


• UCSR0A and UDR0 are variables defined in
header.
• They refer to memory-mapped registers in the
UART.
Send a Sequence of Bytes
for(i = 0; i < 8; i++) {
while(!(UCSR0A & 0x20));
UDR0 = x[i];
}
How long will this take to execute? Assume:
• 57600 baud serial speed.
• 8/57600 =139 microseconds.
• Processor operates at 18 MHz.
Each while loop will consume 2500 cycles.
Receiving via UART
Again, on an Atmel AVR:
while(!(UCSR0A & 0x80));
return UDR0;

• Wait until the UART has received an incoming


byte.
• The programmer must ensure there will be one!
• If reading a sequence of bytes, how long will this
take?

Under the same assumptions as before, it will take


2500 cycles to receive each byte.
Standards
 Serial:
 Synchronous:
• SPI, I2C, JTAG, USB
 Asynchronous:
• RS232
 Parallel:
 Bus protocols
• Advanced Technology Attachment (ATA)
• Peripheral Component Interface (PCI)
• …
An I/O View of a
Microcontroller
Another I/O View of a
Microcontroller
Interrupt example: Pitfalls
static int iTemperatures[2]; Use “volatile” keyword here!
void interrupt vReadTemperatures (void) {
iTemperatures[0] = //Read value from hardware 1
iTemperatures[1] = //Read value from hardware 2
}
void main(void) {
int iTemp0, iTemp1;
// Setup code
iTemperatures[0] = 0;
iTemperatures[1] = 0;
while(TRUE) { What if interrupt
iTemp0 = iTemperatures[0]; updates both
iTemp1 = iTemperatures[1]; values here?
if ( iTemp0 != iTemp1 ) {
// Set off alarm! What if compiler
} optimizes this to
} if false { set off
} alarm}
Interrupt example revisited
static volatile int iTemperatures[2];
void interrupt vReadTemperatures (void) {
iTemperatures[0] = //Read value from hardware 1
iTemperatures[1] = //Read value from hardware 2
}

void main(void) {
int iTemp0, iTemp1;
//Setup code

while(TRUE) {
disableInterrupts();
iTemp0 = iTemperatures[0];
iTemp1 = iTemperatures[1];
enableInterrupts();
if ( iTemp0 != iTemp1 )
// Set off alarm!
}
}
Shared Data
 Data consistency
 Critical Section
• Need to protect portion of the code from other access
• Disable interrupts
 Compiler Optimizations
• Various optimization techniques
• Volatile keyword, or turn off optimizations

You might also like