What is included with this book?
Microcomputer-Based Systems | p. 1 |
Computer Architecture | p. 2 |
Embedded Computer Systems | p. 6 |
The Design Process | p. 10 |
Top-Down Design | p. 10 |
Bottom-Up Design | p. 14 |
Digital Logic and Open Collector | p. 15 |
Digital Representation of Numbers | p. 20 |
Fundamentals | p. 20 |
8-Bit Numbers | p. 22 |
Character Information | p. 23 |
16-Bit Numbers | p. 23 |
Fixed-Point Numbers | p. 25 |
Common Architecture of the 6811 and the 6812 | p. 27 |
Registers | p. 28 |
Terminology | p. 29 |
Addressing Modes | p. 30 |
Numbering Scheme Used by Freescale for the 6811 and the 6812 | p. 33 |
6811 Architecture | p. 33 |
6811 Family | p. 33 |
MC68HC711E9 | p. 35 |
MC68HC11D3 | p. 37 |
6812 Architecture | p. 37 |
6812 Family | p. 37 |
MC9C12C32 | p. 38 |
MC68HC812A4 | p. 41 |
MC68HC912B32 | p. 42 |
Parallel I/O Ports | p. 43 |
Basic Concepts of Input and Output Ports | p. 43 |
Introduction to I/O Programming and the Direction Register | p. 46 |
Our First Design Problem | p. 47 |
Choosing a Microcontroller | p. 53 |
Exercises | p. 54 |
Lab Assignments | p. 56 |
Design of Software Systems | p. 58 |
Quality Programming | p. 58 |
Quantitative Performance Measurements | p. 59 |
Qualitative Performance Measurements | p. 59 |
Assembly Language Programming | p. 60 |
Introduction | p. 60 |
Assembly Language Syntax | p. 62 |
Memory and Register Transfer Operations | p. 64 |
Indexed Addressing Mode | p. 66 |
Arithmetic Operations | p. 69 |
Extended Precision Arithmetic Instructions on the 6812 | p. 74 |
Shift Operations | p. 75 |
Logical Operations | p. 77 |
Subroutines and the Stack | p. 78 |
Branch Operations | p. 82 |
Assembler Pseudo-ops | p. 84 |
Memory Allocation | p. 88 |
Self-Documenting Code | p. 91 |
Comments | p. 91 |
Naming Convention | p. 94 |
Abstraction | p. 95 |
Definitions | p. 95 |
6811 Timer Details | p. 96 |
6812 Timer Details | p. 96 |
Time Delay Software Using the Built-in Timer | p. 97 |
Moore Finite State Machine Traffic Light Controller | p. 98 |
Mealy Finite State Machine Robot Controller | p. 101 |
Modular Software Development | p. 104 |
Local Variables in Assembly Language | p. 104 |
Modules | p. 109 |
Dividing a Software Task into Modules | p. 113 |
Rules for Developing Modular Software in Assembly Language | p. 116 |
Layered Software Systems | p. 118 |
Device Drivers | p. 119 |
Basic Concept of Device Drivers | p. 119 |
Design of a Serial Communications Interface (SCI) Device Driver | p. 121 |
Object-Oriented Interfacing | p. 122 |
Encapsulated Objects Using Standard C | p. 122 |
Object-Oriented Interfacing Using C++ | p. 123 |
Portability Using Standard C and C++ | p. 124 |
Threads | p. 126 |
Single-Threaded Execution | p. 126 |
Multithreading and Reentrancy | p. 126 |
Recursion | p. 128 |
Debugging Strategies | p. 128 |
Debugging Tools | p. 128 |
Debugging Theory | p. 129 |
Functional Debugging | p. 131 |
Performance Debugging | p. 133 |
Profiling | p. 136 |
Exercises | p. 137 |
Lab Assignments | p. 141 |
Interfacing Methods | p. 142 |
Introduction | p. 142 |
Performance Measures | p. 142 |
Synchronizing the Software with the State of the I/O | p. 143 |
Variety of Available I/O Ports | p. 146 |
Handshake protocols | p. 148 |
6811 Handshake Protocol | p. 148 |
MC68HC812A4 Key Wakeup Interrupts | p. 149 |
MC9S12C32 Key Wakeup Interrupts | p. 150 |
Blind Cycle Counting Synchronization | p. 151 |
Blind Cycle Printer Interface | p. 151 |
Blind Cycle ADC Interface | p. 152 |
Gadfly or Busy Waiting Synchronization | p. 153 |
Parallel I/O Interface Examples | p. 155 |
Blind Cycle Printer Interface | p. 156 |
Blind Cycle ADC Interface | p. 157 |
Gadfly Keyboard Interface Using Latched Input | p. 158 |
Gadfly ADC Interface Using Simple Input | p. 159 |
Gadfly External Sensor Interface Using Input Handshake | p. 161 |
Gadfly Printer Interface Using Output Handshake | p. 163 |
Gadfly Synchronous Serial Interface to a Temperature Sensor | p. 164 |
Serial Communications Interface (SCI) Device Driver | p. 173 |
Transmitting in Asynchronous Mode | p. 174 |
Receiving in Asynchronous Mode | p. 175 |
6811 SCI Details | p. 177 |
6812 SCI Details | p. 178 |
SCI Device Driver | p. 179 |
Exercises | p. 181 |
Lab Assignments | p. 187 |
Interrupt Synchronization | p. 189 |
What Are Interrupts? | p. 190 |
Interrupt Definition | p. 190 |
Interrupt Service Routines | p. 191 |
When to Use Interrupts | p. 192 |
Interthread Communication | p. 192 |
Reentrant Programming | p. 197 |
First-In-First-Out Queue | p. 204 |
Introduction to FIFOs | p. 204 |
Two-Pointer FIFO Implementation | p. 205 |
Two-Pointer/Counter FIFO Implementation | p. 208 |
FIFO Dynamics | p. 209 |
General Features of Interrupts on the 6811/6812 | p. 210 |
6811 Interrupts | p. 212 |
6812 Interrupts | p. 213 |
Interrupt Vectors and Priority | p. 214 |
MC68H11E Interrupt Vectors and Priority | p. 214 |
MC68HC812A4 Interrupt Vectors and Priority | p. 216 |
MC68HC912B32 Interrupt Vectors and Priority | p. 217 |
MC9S12C32 Interrupt Vectors and Priority | p. 218 |
External Interrupt Design Approach | p. 219 |
Polled Versus Vectored Interrupts | p. 221 |
Keyboard Interface Using Interrupts | p. 223 |
Printer Interface Using IRQ Interrupts | p. 226 |
Power System Interface Using XIRQ Synchronization | p. 229 |
Interrupt Polling Using Linked Lists | p. 231 |
6811 Interrupt Polling Using Linked Lists | p. 232 |
6812 Interrupt Polling Using Linked Lists | p. 234 |
Fixed Priority Implemented Using One Interrupt Line | p. 235 |
Fixed Priority Implemented Using XIRQ | p. 237 |
Round-Robin Polling | p. 238 |
Periodic Polling | p. 238 |
MC68HC711E9 Periodic Interrupts | p. 240 |
MC68HC812A4 Periodic Interrupts | p. 243 |
MC9S12C32 Periodic Interrupts | p. 245 |
Exercises | p. 249 |
Lab Assignments | p. 254 |
Threads | p. 255 |
Multithreaded Preemptive Scheduler | p. 256 |
Round-Robin Scheduler | p. 257 |
Other Scheduling Algorithms | p. 262 |
Dynamic Allocation of Threads | p. 262 |
Semaphores | p. 262 |
Spin-Lock Semaphore Implementation | p. 263 |
Blocking Semaphore Implementation | p. 265 |
Applications of Semaphores | p. 267 |
Thread Synchronization or Rendezvous | p. 268 |
Resource Sharing, Nonreentrant Code or Mutual Exclusion | p. 268 |
Thread Communication Between Two Threads Using a Mailbox | p. 268 |
Thread Communication Between Many Threads Using a FIFO Queue | p. 268 |
Fixed Scheduling | p. 269 |
Exercises | p. 274 |
Lab Assignments | p. 275 |
Timing Generation and Measurements | p. 276 |
Input Capture | p. 276 |
Basic Principles of Input Capture | p. 276 |
Input Capture Details | p. 277 |
Real Time Interrupt Using an Input Capture | p. 281 |
Period Measurement | p. 283 |
Pulse-Width Measurement | p. 288 |
Output Compare | p. 294 |
General Concepts | p. 294 |
Output Compare Details | p. 295 |
Square-Wave Generation | p. 298 |
Pulse-Width Modulation | p. 301 |
Delayed Pulse Generation | p. 303 |
Frequency Measurement | p. 304 |
Frequency Measurement Concepts | p. 304 |
Frequency Measurement with [Delta]f = 100Hz | p. 305 |
Conversion Between Frequency and Period | p. 306 |
Using Period Measurement to Calculate Frequency | p. 306 |
Using Frequency Measurement to Calculate Period | p. 307 |
Measurements Using Both Input Capture and Output Compare | p. 307 |
Period Measurement with [Delta]p = 1 ms | p. 307 |
Frequency Measurement with [Delta]f = 0.1Hz | p. 309 |
Pulse Accumulator | p. 311 |
MC68HC711 Pulse Accumulator Details | p. 311 |
MC9S12C32 Pulse Accumulator Details | p. 312 |
Frequency Measurement | p. 313 |
Pulse-Width Measurement | p. 314 |
Pulse-width Modulation on the MC9S12C32 | p. 314 |
Exercises | p. 318 |
Lab Assignments | p. 323 |
Serial I/O Devices | p. 326 |
Introduction and Definitions | p. 326 |
RS232 Specifications | p. 332 |
RS422/USB/RS423/RS485 Balanced Differential Lines | p. 334 |
RS422 Output Specifications | p. 337 |
RS422 Input Specifications | p. 338 |
RS485 Half-Duplex Channel | p. 338 |
Other Communication Protocols | p. 339 |
Current Loop Channel | p. 339 |
Introduction to Modems | p. 339 |
Optical Channel | p. 340 |
Digital Logic Channel | p. 340 |
Serial Communications Interface | p. 341 |
Transmitting in Asynchronous Mode | p. 341 |
Receiving in Asynchronous Mode | p. 343 |
MC68HC711E9 SCI Details | p. 345 |
MC9S12C32 SCI Details | p. 346 |
SCI Software Interfaces | p. 349 |
Full Duplex Serial Channel | p. 349 |
Use of Data Terminal Ready (DTR) to Interface a Printer | p. 352 |
Use of XON/XOFF to Interface a Printer | p. 354 |
Synchronous Transmission and Receiving Using the SPI | p. 355 |
SPI Fundamentals | p. 355 |
MC68HC711E9 SPI Details | p. 358 |
MC9S12C32 SPI Details | p. 359 |
SPI Applications | p. 361 |
Exercises | p. 368 |
Lab Assignments | p. 370 |
Parallel Port Interfaces | p. 375 |
Input Switches and Keyboards | p. 375 |
Interfacing a Switch to the Computer | p. 375 |
Hardware Debouncing Using a Capacitor | p. 377 |
Software Debouncing | p. 381 |
Basic Approaches to Interfacing Multiple Keys | p. 386 |
Sixteen-Key Electronic Piano | p. 389 |
4 by 4 Scanned Keyboard | p. 393 |
Multiplexed/Demultiplexed Scanned Keyboard | p. 396 |
Output LEDs | p. 398 |
Single LED Interface | p. 400 |
Seven-Segment LED Interfaces | p. 402 |
Scanned Seven-Segment LED Interface | p. 402 |
Scanned LED Interface Using the 7447 Seven-Segment Decoder | p. 405 |
Integrated LED Interface Using the MC14489 Display Driver | p. 408 |
Liquid Crystal Displays | p. 410 |
LCD Fundamentals | p. 410 |
Simple LCD Interface with the MC14543 | p. 412 |
Scanned LCD Interface with the MC145000, MC145001 | p. 414 |
Parallel Port LCD Interface with the HD44780 Controller | p. 416 |
Transistors Used for Computer-Controlled Current Switches | p. 419 |
Computer-Controlled Relays, Solenoids, and DC Motors | p. 421 |
Introduction to Relays | p. 421 |
Electromagnetic Relay Basics | p. 422 |
Reed Relays | p. 424 |
Solenoids | p. 424 |
Pulse-Width Modulated DC Motors | p. 424 |
Interfacing EM Relays, Solenoids, and DC Motors | p. 425 |
Solid-State Relays | p. 430 |
Stepper Motors | p. 431 |
Stepper Motor Example | p. 431 |
Basic Operation | p. 434 |
Stepper Motor Hardware Interfaces | p. 438 |
Stepper Motor Shaft Encoder | p. 441 |
Exercises | p. 443 |
Lab Assignments | p. 446 |
Memory Interfacing | p. 448 |
Introduction | p. 448 |
Address Decoding | p. 451 |
Full-Address Decoding | p. 452 |
Minimal-Cost Address Decoding | p. 454 |
Special Cases When Address Decoding | p. 457 |
Flexible Full-Address Decoder | p. 458 |
Integrated Address Decoder on the MC68HC812A4 | p. 459 |
Timing Syntax | p. 461 |
Available and Required Time Intervals | p. 461 |
Timing Diagrams | p. 463 |
General Memory Bus Timing | p. 463 |
Synchronous Bus Timing | p. 464 |
Partially Asynchronous Bus Timing | p. 465 |
Fully Asynchronous Bus Timing | p. 466 |
External Bus Timing | p. 468 |
Synchronized Versus Unsynch-ronized Signals | p. 468 |
Freescale MC68HC11A8 External Bus Timing | p. 469 |
Freescale MC68HC812A4 External Bus Timing | p. 472 |
Freescale MC9S12C32 External Bus Timing | p. 477 |
General Approach to Interfacing | p. 483 |
Interfacing to a 6811 | p. 483 |
Interfacing to a 6812 in Expanded Narrow Mode | p. 484 |
Interfacing to a 6812 in Expanded Wide Mode | p. 485 |
Memory Interface Examples | p. 487 |
32K PROM Interface | p. 487 |
8K RAM Interface | p. 492 |
32K by 16-bit PROM Interface to a MC68HC812A4 | p. 505 |
8K by 16-bit RAM Interface | p. 507 |
Extended Address Data Page Interface to the MC68HC812A4 | p. 509 |
Extended Address Program Page Interface to the MC68HC812A4 | p. 511 |
Dynamic RAM (DRAM) | p. 514 |
Exercises | p. 514 |
Lab Assignments | p. 523 |
High-Speed I/O Interfacing | p. 524 |
The Need for Speed | p. 524 |
High-Speed I/O Applications | p. 525 |
Mass Storage | p. 525 |
High-Speed Data Acquisition | p. 526 |
Video Displays | p. 527 |
High-Speed Signal Generation | p. 527 |
Network Communications | p. 527 |
General Approaches to High-Speed Interfaces | p. 528 |
Hardware FIFO | p. 528 |
Dual Port Memory | p. 529 |
Bank-Switched Memory | p. 529 |
Fundamental Approach to DMA | p. 530 |
DMA Cycles | p. 530 |
DMA Initiation | p. 531 |
Burst Versus Cycle Steal DMA | p. 531 |
Single-Address Versus Dual-Address DMA | p. 532 |
DMA Programming | p. 534 |
LCD Graphics | p. 535 |
LCD Graphics Controller | p. 535 |
Practical LCD Graphics Interface | p. 538 |
Exercises | p. 539 |
Lab Assignments | p. 540 |
Analog Interfacing | p. 541 |
Resistors and Capacitors | p. 541 |
Resistors | p. 541 |
Capacitors | p. 542 |
Operational Amplifiers (Op Amps) | p. 543 |
Op Amp Parameters | p. 543 |
Threshold Detector | p. 546 |
Simple Rules for Linear Op Amp Circuits | p. 547 |
Linear Mode Op Amp Circuits | p. 549 |
Instrumentation Amplifier | p. 553 |
Current-to-Voltage Circuit | p. 555 |
Voltage-to-Current Circuit | p. 555 |
Integrator Circuit | p. 555 |
Derivative Circuit | p. 556 |
Voltage Comparators with Hysteresis | p. 556 |
Analog Isolation | p. 557 |
Analog Filters | p. 558 |
Simple Active Filter | p. 558 |
Butterworth Filters | p. 559 |
Bandpass and Band-Reject Filters | p. 560 |
Digital-to-Analog Converters | p. 561 |
DAC Parameters | p. 561 |
DAC Using a Summing Amplifier | p. 563 |
Three-Bit DAC with an R-2R Ladder | p. 564 |
Twelve-Bit DAC with a DAC8043 | p. 566 |
DAC Selection | p. 567 |
DAC Waveform Generation | p. 570 |
Analog-to-Digital Converters | p. 573 |
ADC Parameters | p. 573 |
Two-Bit Flash ADC | p. 574 |
Successive Approximation ADC | p. 575 |
Sixteen-Bit Dual Slope ADC | p. 576 |
Sigma Delta ADC | p. 577 |
ADC Interface | p. 578 |
Sample and Hold | p. 579 |
BiFET Analog Multiplexer | p. 580 |
ADC System | p. 582 |
ADC Block Diagram | p. 582 |
Power and Grounding for the ADC System | p. 584 |
Input Protection for High-Speed CMOS Analog Inputs | p. 584 |
Multiple-Access Circular Queue | p. 585 |
Internal ADCs | p. 587 |
6811 ADC System | p. 587 |
6812 ADC System | p. 589 |
ADC Software | p. 591 |
Exercises | p. 593 |
Lab Assignments | p. 595 |
Data Acquisition Systems | p. 597 |
Introduction | p. 597 |
Accuracy | p. 599 |
Resolution | p. 601 |
Precision | p. 601 |
Reproducibility or Repeatability | p. 602 |
Transducers | p. 602 |
Static Transducer Specifications | p. 602 |
Dynamic Transducer Specifications | p. 606 |
Nonlinear Transducers | p. 607 |
Position Transducers | p. 608 |
Velocity Measurements | p. 609 |
Force Transducers | p. 611 |
Temperature Transducers | p. 612 |
DAS Design | p. 617 |
Introduction and Definitions | p. 617 |
Using Nyquist Theory to Determine Sampling Rate | p. 618 |
How Many Bits Does One Need for the ADC? | p. 621 |
Specifications for the Analog Signal Processing | p. 621 |
How Fast Must the ADC Be? | p. 626 |
Specifications for the S/H | p. 626 |
Analysis of Noise | p. 627 |
Thermal Noise | p. 627 |
Shot Noise | p. 630 |
1/f, or Pink Noise | p. 630 |
Galvanic Noise | p. 630 |
Motion Artifact | p. 630 |
Electromagnetic Field Induction | p. 631 |
Techniques to Measure Noise | p. 631 |
Techniques to Reduce Noise | p. 633 |
Data Acquisition Case Studies | p. 635 |
Temperature Measurement | p. 635 |
EKG Data Acquisition System | p. 639 |
Position Measurement System | p. 642 |
Exercises | p. 643 |
Lab Assignments | p. 650 |
Microcomputer-Based Control Systems | p. 652 |
Introduction to Digital Control Systems | p. 652 |
Open-Loop Control Systems | p. 653 |
Open-Loop Control of a Toaster | p. 654 |
Open-Loop Robotic Arm | p. 654 |
Simple Closed-Loop Control Systems | p. 659 |
Bang-Bang Temperature Control | p. 659 |
Closed-Loop Position Control System Using Incremental Control | p. 661 |
PID Controllers | p. 663 |
General Approach to a PID Controller | p. 663 |
Design Process for a PID Controller | p. 666 |
Velocity PID Controller | p. 668 |
Proportional-Integral Controller with a PWM actuator | p. 669 |
Fuzzy Logic Control | p. 672 |
DAC, ADC Fuzzy Controller | p. 675 |
PWM Fuzzy Controller | p. 681 |
Temperature Controller Using Fuzzy Logic | p. 687 |
Exercises | p. 691 |
Lab Assignments | p. 694 |
Simple Networks | p. 696 |
Introduction | p. 696 |
Communication Systems Based on the SCI Serial Port | p. 698 |
Design and Implementation of a Controller Area Network (CAN) | p. 700 |
The Fundamentals of CAN | p. 700 |
Details of the 9S12C32 CAN | p. 703 |
9S12C32 CAN Device Driver | p. 706 |
Inter-Integrated Circuit (I[superscript 2]C) Network | p. 709 |
The Fundamentals of the I[superscript 2]C Network | p. 709 |
I[superscript 2]C Synchronization | p. 712 |
9S12 I[superscript 2]C Details | p. 714 |
9S12 I[superscript 2]C Single Master Example | p. 717 |
Modem Communications | p. 718 |
FSK Modem | p. 718 |
Phase-Encoded Modems | p. 721 |
Quadrature Amplitude Modems | p. 722 |
X-10 Protocol | p. 723 |
Universal Serial Bus (USB) | p. 730 |
Introduction | p. 730 |
Modular USB Interface | p. 734 |
Integrated USB Interface | p. 735 |
Exercises | p. 735 |
Lab Assignments | p. 739 |
Digital Filters | p. 742 |
Basic Principles | p. 743 |
Simple Digital Filter Examples | p. 745 |
Impulse Response | p. 752 |
High-Q 60-Hz Digital Notch Filter | p. 755 |
Effect of Latency on Digital Filters | p. 760 |
High-Q Digital High-Pass Filters | p. 762 |
Digital Low-Pass Filter | p. 763 |
Direct-Form Implementations | p. 765 |
Exercises | p. 766 |
Lab Assignments | p. 767 |
Appendix 1 | p. 769 |
Appendix 2 | p. 789 |
Index | p. 802 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.