DESIGNING EMBEDDED SYSTEMS WITH PIC MICROCONTROLLERS
Principles and Applications To order this title, and for more information, click here
By Tim Wilmshurst, University of Derby, UK
Description This book is a hands-on introduction to the principles and practice of embedded system design using the PIC microcontroller. Packed with
helpful examples and illustrations, it gives an in-depth treatment of microcontroller design, programming in both assembly language and
C, and features advanced topics such as networking and real-time operating systems. It is accompanied by a CD-ROM containing copies of
all programs and software tools used in the text and a ?student' version of the C complier.
Designing Embedded Systems with
PIC Microcontrollers: Principles and Applications is ideal for students of electronics, mechatronics and computer engineering.
Engineers in industry and informed hobbyists will also find this book a valuable resource when designing and implementing both simple
and sophisticated embedded systems using the PIC Microcontroller.
Support material, including new and supporting information, links
to useful sites, and errata, is available from the book's companion site .
Audience
Professional engineers developing embedded systems, informed hobbyists and engineering students.
Contents Section 1 Getting started with embedded systems
1. Tiny computers, hidden control
1.1 The main idea-embedded systems in today's world
1.2 Some example embedded systems
1.3 Some computer essentials
1.4 Microprocessors and microcontrollers
1.5 Microchip and the PIC
microcontroller
1.6 An introduction to PIC microcontrollers using the 12 series
1.7 What others do- a Freescale microcontroller
Summary
References
Section 2 Minimum systems and the PIC 16F84A
2. Introducing the PIC 16 series and the 16F84A
2.1 The main idea- the PIC
16 series family
2.2 An architecture overview of the 16F84A
2.3 A review of memory technologies
2.4 The 16F84A memory
2.5 Some issues
of timing
2.6 Power up and reset
2.7 What others do- the Atmel AT89C2051
2.8 Taking things further- the 16F84A on-chip reset circuit
Summary
References
3. Parallel ports, power supply and the clock oscillator
3.1 The main idea- parallel input/output
3.2 The technical
challenge of parallel input/output
3.3 Connecting to the parallel port
3.4 The PIC 16F84A parallel ports
3.5 The clock oscillator
3.6 Power supply
3.7 The hardware design of the electronic ping-pong
Summary
References
4. Starting to program- an introduction to
Assembler
4.1 The main idea- what programs do and how we develop them
4.2 The PIC 16 series instruction set, with a little more on
the ALU
4.3 Assemblers and the assembler format
4.4 Creating simple programs
4.5 Adopting a development environment
4.6 An introductory
MPLAB tutorial
4.7 An introduction to simulation
4.8 Downloading the program to a microcontroller
4.9 What others do- a brief comparison
of CISC and RISC instruction sets
4.10 Taking things further- the 16 series instruction set format
Summary
References
5. Building
assembler programs
5.1 The main idea- building structured programs
5.2 Flow control- branching and subroutines
5.3 Generating time
delays and intervals
5.4 Dealing with data
5.5 Introducing logical systems
5.6 Introducing arithmetic instructions and the Carry flag
5.7 Taming assembler complexity
5.8 More use of the MPLAB simulator
5.9 The ping-pong program
5.10 Simulating the ping-pong program-
tutorial
5.11 What others do- graphical simulators
Summary
References
6. Working with time: interrupts, counters & timers
6.1 The main
idea- interrupts
6.2 Working with interrupts
6.3 The main idea- counters and timers
6.4 Applying the 16F84A Timer 0, with examples
using the electronic ping-pong
6.5 The watchdog timer
6.6 Sleep mode
6.7 What others do
6.8 Taking things further- interrupt latency
Summary
References
Section 3 Larger systems & the PIC 16F873A
7. Larger systems and the PIC 16F873A
7.1 The main idea- the PIC 16F87XA
7.2 The 16F873A block diagram and CPU
7.3 16F873A memory and memory maps
7.4 'Special' memory operations
7.5 The 16F873A interrupts
7.6 The 16F873A oscillator, reset and power supply
7.7 The 16F873A parallel ports
7.8 Test, commission and diagnostic tools
7.9 The
Microchip in-circuit debugger (ICD2)
7.10 Applying the 16F873A: the Derbot AGV
7.11 Downloading, testing and running a simple program
with ICD 2
7.12 Taking things further- the 16F874A/16F877A
Summary
References
8. The human and physical interfaces
8.1 The main idea-
the human interface
8.2 From switches to keypads
8.3 LED displays
8.4 Liquid crystal displays
8.5 The main idea- interfacing to the
physical world
8.6 Some simple sensors
8.7 More on digital input
8.8 Actuators: motors and servos
8.9 Interfacing to actuators
8.10
Building up the Derbot
8.11 Applying sensors and actuators- a 'blind' navigation Derbot program
Summary
References
9. Taking timing
further
9.1 The main ideas- taking counting and timing further
9.2 The 16F87XA Timer 0 and Timer 1
9.3 The 16F87XA Timer 2, comparator
and PR2 register
9.4 The capture/compare/PWM (CCP) modules
9.5 Pulse width modulation
9.6 Generating PWM in software
9.7 PWM used
for digital-to-analog conversion
9.8 Frequency measurement
9.9 Speed control applied to the Derbot
9.10 Where there is no timer
9.11
Sleep mode
9.12 Where do we go from here?
9.13 Building up the Derbot
Summary
References
10. Starting with serial
10.1 The main idea-
introducing serial
10.2 Simple serial links- synchronous data communication
10.3 The 16F87XA Master Synchronous Serial Port (MSSP)
module in SPI mode
10.4 A simple SPI example
10.5 The limitations of Microwire and SPI, and of simple synchronous serial transfer
10.6
Enhancing synchronous serial, and the Inter-Integrated Circuit bus
10.7 The MSSP configured for IC
10.8 IC applied in the Derbot AGV
10.9 Evaluation of synchronous serial data communication
10.10 The 16F87XA Addressable Universal Synchronous Asynchronous Receiver Transmitter
(USART)
10.11 Implementing serial with a serial port- 'bit banging'
10.12 Building up the Derbot
Summary
References
11. Data acquisition
and manipulation
11.1 The main idea- analog and digital quantities, their acquisition and use
11.2 The data acquisition system
11.3
The PIC 16F87XA ADC module
11.4 Applying the ADC in the Derbot light meter program
11.5 Some simple data manipulation techniques
11.6
The Derbot light-seeking program
11.7 The comparator module
11.8 Applying the Derbot circuit for measurement purposes
11.9 Configuring
the Derbot AGV as a light-seeking robot
Summary
References
Section 4 Smarter systems and the PIC 18FXX2
12. Smarter systems and the
PIC 18FXX2
12.1 The main idea- the PIC 18 series and the 18FXX2
12.2 The 18F2X2 block diagram and Staus register
12.3 The 18 series
instruction set
12.4 Data memory and Special Function Registers
12.5 Program memory
12.6 The Stacks
12.7 The interrupts
12.8 Power
supply and reset
12.9 The oscillator sources
12.10 Introductory programming with the 18F242
Summary
References
13 The PIC 18FXX2
peripherals
13.1 The main idea- the 18FXX2 peripherals
13.2 The parallel ports
13.3 The timers
13.4 The capture/compare/PWM (CCP)
modules
13.5 The serial ports
13.6 The analog-to-digital converter (ADC)
13.7 Low-voltage detect
13.8 Applying the 18 series in the
Derbot-18
13.9 The 18F2420 and the extended instruction set
Summary
References
14 Introducing C
14.1 The main idea- why C?
14.2
An introduction to C
14.3 Compiling the C program
14.4 The MPLAB C18 compiler
14.5 A C18 tutorial
14.6 Simulating a C program
14.7
A second C example- the Fibonacci program
14.8 The MPLAB C18 libraries
14.9 Further reading
Summary
References
15 C and the embedded
environment
15.1 The main idea- adapting C to the embedded environment
15.2 Controlling and branching on bit values
15.3 More on functions
15.4 More branching and looping
15.5 Using the timer and PWM peripherals
Summary
References
16 Acquiring and using data with C
16.1 The main idea- using C for data manipulation
16.2 Using the 18FXX2 ADC
16.3 Pointers, arrays and strings
16.4 Using the IC peripheral
16.5 Formatting data for display
Summary
References
17 More C and the wider C environment
17.1 The main idea- more C and the wider
C environment
17.2 Assembler inserts
17.3 Controlling memory allocation
17.4 Interrupts
17.5 Example with interrupt on overflow-
flashing LEDs on the Durbot
17.6 Storage classes and their application
17.7 Start-up code: c018i.c
17.8 Structures, unions and bit-fields
17.9 Processor-specific header files
17.10 Taking things further- the MPLAB Linker and the .map file
Summary
References
18 Multi-tasking
and the Real Time Operating System
18.1 The main ideas- the challenge of multi-tasking and real time
18.2 Achieving multi-tasking with
sequential programming
18.3 The Real Time Operating System (RTOS)
18.4 Scheduling and the scheduler
18.5 Developing tasks
18.6 Data
and resource protection- the semaphore
18.7 Where do we go from here?
Summary
References
19 The Salvo Real Time Operating System
19.1 The main idea- Salvo, an example RTOS
19.2 Configuring the Salvo application
19.3 Writing Salvo programs
19.4 A first Salvo
example
19.5 Using interrupts, delays and semaphores with Salvo
19.6 Using Salvo messages and increasing RTOS complexity
19.7 A program
example with messages
19.8 The RTOS overhead
Summary
References
Section 5 Techniques of connectivity and networking
20 Connectivity
and networks
20.1 The main idea-networking and connectivity
20.2 Infrared connectivity
20.3 Radio connectivity
20.4 Controller Area
Network (CAN) and Local Interconnect Network (LIN)
20.5 Embedded systems and the Internet
20.6 Conclusion
Summary
References
Appendix
1 The PIC 16 series instruction set
Appendix 2 The electronic ping-pong
Appendix 3 The Derbot AGV- hardware design details
Appendix 4
Some basics of Autonomous Guided Vehicles
Appendix 5 PIC 18 series instruction set (non-extended)
Appendix 6 Essentials of C
Index
Books and book related electronic products are priced in US dollars (USD), euro (EUR), and Great Britain Pounds (GBP). USD prices apply to the Americas and Asia Pacific. EUR prices apply in Europe and the Middle East. GBP prices apply to the UK and all other countries.