*Just months after the introduction of the new generation of 32-bit PIC microcontrollers, a Microchip insider and acclaimed author takes you by hand at the exploration of the PIC32 *Free CD-ROM includes source code in C and the Microchip MPLAB C32 compiler *Includes handy checklists to help readers perform the most common programming and debugging tasks
Author(s): Lucio Di Jasio
Series: Embedded Technology
Publisher: Newnes
Year: 2008
Language: English
Commentary: not
Pages: 554
Front Cover......Page 1
Programming 32-bit Microcontrollers in C: Exploring the PIC32......Page 4
Copyright Page......Page 5
Contents......Page 10
Introduction......Page 20
Part 1: Exploring......Page 28
Preparation......Page 30
The Adventure Begins......Page 33
Compiling and Linking......Page 35
The Linker Script......Page 37
Building the First Project......Page 38
Using the Simulator......Page 39
Finding a Direction......Page 41
The JTAG Port......Page 43
Testing PORTB......Page 44
Mission Debriefing......Page 46
Notes for the Assembly Experts......Page 47
Tips & Tricks......Page 49
Exercises......Page 50
Links......Page 51
Preparation......Page 52
The Exploration......Page 54
While Loops......Page 55
An Animated Simulation......Page 58
Using the Logic Analyzer......Page 62
Debriefing......Page 64
Notes for the 16-Bit PIC Microcontroller Experts......Page 65
Tips & Tricks......Page 66
Notes on Using the Peripheral Libraries......Page 67
Links......Page 69
The Exploration......Page 70
Do Loops......Page 71
Variable Declarations......Page 72
for Loops......Page 74
More Loop Examples......Page 75
Arrays......Page 76
Sending a Message......Page 77
Testing with the Logic Analyzer......Page 80
Testing with the Explorer 16 Demonstration Board......Page 81
Testing with the PIC32 Starter Kit......Page 82
Notes for the Assembly Experts......Page 84
Notes for the C Experts......Page 85
Tips & Tricks......Page 86
Links......Page 87
The Exploration......Page 88
Testing......Page 91
Going long long......Page 92
Integer Divisions......Page 94
Floating Point......Page 96
Measuring Performance......Page 97
Notes for the Assembly Experts......Page 100
Notes for the 8-Bit PIC® Microcontroller Experts......Page 102
Notes for the 16-Bit PIC and dsPIC® Microcontroller Experts......Page 103
Tips & Tricks......Page 104
Exercises......Page 105
Links......Page 106
The Exploration......Page 108
Interrupts and Exceptions......Page 109
Sources of Interrupt......Page 111
Interrupt Priorities......Page 112
Interrupt Handlers Declaration......Page 115
Single Vector Interrupt Management......Page 117
Managing Multiple Interrupts......Page 122
Multivectored Interrupt Management......Page 125
A Simple Application......Page 130
The Secondary Oscillator......Page 135
The Real-Time Clock Calendar (RTCC)......Page 136
Notes for the PIC Microcontroller Experts......Page 138
Tips & Tricks......Page 139
Links......Page 140
Preparation......Page 142
The Exploration......Page 143
Memory Space Allocation......Page 145
Looking at the MAP......Page 150
Pointers......Page 154
The Heap......Page 155
The PIC32MX Bus......Page 156
PIC32MX Memory Mapping......Page 157
The Embedded-Control Memory Map......Page 161
Notes for the C Experts......Page 162
Notes for the PIC Microcontroller Experts......Page 163
Exercises......Page 164
Links......Page 165
Part 2: Experimenting......Page 166
Preparation......Page 168
The Exploration......Page 169
Performance vs. Power Consumption......Page 171
The Primary Oscillator Clock Chain......Page 173
The Peripheral Bus Clock......Page 174
Initial Device Configuration......Page 175
Setting Configuration Bits in Code......Page 177
Heavy Stuff......Page 179
Ready, Set, Go!......Page 185
Fine-Tuning the PIC32: Configuring Flash Wait States......Page 187
Fine-Tuning the PIC32: Enabling the Instruction and Data Cache......Page 190
Fine-Tuning the PIC32: Enabling the Instruction Pre-Fetch......Page 191
Fine-Tuning the PIC32: Final Notes......Page 192
Notes for the PIC® Microcontroller Experts......Page 194
Tips & Tricks......Page 195
Links......Page 198
Preparation......Page 200
Synchronous Serial Interfaces......Page 201
Asynchronous Serial Interfaces......Page 203
Parallel Interfaces......Page 204
Synchronous Communication Using the SPI Modules......Page 205
Testing the Read Status Register Command......Page 209
Writing Data to the EEPROM......Page 213
A 32-bit Serial EEPROM Library......Page 214
Testing the New SEE Library......Page 218
Notes for the Explorer 16 Experts......Page 220
Tips & Tricks......Page 221
Exercises......Page 222
Links......Page 223
The Exploration......Page 224
UART Configuration......Page 227
Sending and Receiving Data......Page 229
Testing the Serial Communication Routines......Page 231
Building a Simple Console Library......Page 233
Testing a VT100 Terminal......Page 236
The Matrix Project......Page 238
Notes for the C Experts......Page 241
Tips & Tricks......Page 242
Books......Page 243
Links......Page 244
The Exploration......Page 246
HD44780 Controller Compatibility......Page 248
The Parallel Master Port......Page 250
Configuring the PMP for LCD Module Control......Page 251
A Small Library of Functions to Access an LCD Display......Page 252
Building an LCD Library and Using the PMP Library......Page 258
Creating the include and lib Directories......Page 264
Advanced LCD Control......Page 267
Progress Bar Project......Page 268
Notes for the PIC24 Experts......Page 272
Exercises......Page 273
Links......Page 274
The Exploration......Page 276
The First Conversion......Page 280
Automating Sampling Timing......Page 281
Developing a Demo......Page 282
Creating Our Own Mini ADC Library......Page 284
Fun and Games......Page 285
Sensing Temperature......Page 288
Notes for the PIC24 Experts......Page 293
Exercises......Page 294
Links......Page 295
Part 3: Expansion......Page 296
Preparation......Page 298
Buttons and Mechanical Switches......Page 299
Button Input Packing......Page 302
Button Inputs Debouncing......Page 304
Rotary Encoders......Page 307
Interrupt-Driven Rotary Encoder Input......Page 310
PS/2 Physical Interface......Page 315
The PS/2 Communication Protocol......Page 316
Input Capture......Page 317
Testing Using a Stimulus Scripts......Page 323
The Simulator Profiler......Page 328
Change Notification......Page 329
Evaluating Cost......Page 335
I/O Polling......Page 336
Testing the I/O Polling Method......Page 341
Cost and Efficiency Considerations......Page 344
Keyboard Buffering......Page 346
Key Code Decoding......Page 351
Debriefing......Page 355
Tips & Tricks......Page 356
Books......Page 357
Links......Page 358
Preparation......Page 360
The Exploration......Page 361
Generating the Composite Video Signal......Page 364
The Output Compare Modules......Page 369
Image Buffers......Page 372
Serialization, DMA, and Synchronization......Page 373
Completing a Video Library......Page 380
Testing the Composite Video......Page 384
Seeing the Dark Screen......Page 387
Test Pattern......Page 389
Plotting......Page 391
A Starry Night......Page 393
Line Drawing......Page 395
Bresenham Algorithm......Page 397
Plotting Math Functions......Page 400
Two-Dimensional Function Visualization......Page 403
Fractals......Page 408
Text......Page 416
Printing Text on Video......Page 418
Text Test......Page 421
The Matrix Reloaded......Page 422
Debriefing......Page 425
Tips & Tricks......Page 426
Exercises......Page 428
Links......Page 429
Preparation......Page 430
The Exploration......Page 431
The Physical Interface......Page 432
Interfacing to the Explorer 16 Board......Page 433
Starting a New Project......Page 434
Sending Commands in SPI Mode......Page 435
Completing the SD Card Initialization......Page 438
Reading Data from an SD/MMC Card......Page 440
Writing Data to an SD/MMC Card......Page 443
Testing the SD/MMC Interface......Page 446
Debriefing......Page 451
Tips & Tricks......Page 452
Links......Page 453
Preparation......Page 454
Sectors and Clusters......Page 455
The File Allocation Table......Page 456
The Root Directory......Page 457
The Treasure Hunt......Page 460
Opening a File......Page 471
Reading Data from a File......Page 481
Closing a File......Page 486
The Fileio Module......Page 487
Testing fopenM ( ) and freadM ( )......Page 490
Writing Data to a File......Page 492
Closing a File, Take Two......Page 498
Accessory Functions......Page 500
Testing the Complete Fileio Module......Page 503
Code Size......Page 507
Tips & Tricks......Page 508
Books......Page 509
Links......Page 510
Preparation......Page 512
The Exploration......Page 513
OC PWM Mode......Page 515
Testing the PWM as a D/A Converter......Page 517
Producing Analog Waveforms......Page 519
Reproducing Voice Messages......Page 524
A Media Player......Page 525
The WAVE File Format......Page 527
The Play ( ) Function......Page 528
The Audio Routines......Page 537
A Simple WAVE File Player......Page 540
Debriefing......Page 542
Books......Page 543
Final Note for the Experts......Page 544
C......Page 546
E......Page 547
I......Page 548
L......Page 549
O......Page 550
R......Page 551
S......Page 552
W......Page 553
Z......Page 554