2
Home Exploring the PIC32 AV16/32 board AV16/32 Projects MultiMedia Boards MultiMedia Projects Blog University Corner Updates FAQs and Errata Downloads Links and Books About Should you notice a conflict between my narration and the official Microchip documentation, ALWAYS refer to the latter. However please send me an email if a conflict arises. If you find a problem that is not covered in the list below, please check the Updates page as well. Changes in tools and software products (after the book was published) required a few modifications to the code in the book. Errata Page 14, the PIC32MX datasheet covers I/O Ports in Chapter 12. Page 18, the final text paragraph, just above the code listing, refers to the "AD1PCGF " SFR. This should be "AD1PCFG". Page 32, Figure 2.1: 16-bit Timer1 module block diagram contains a typo, replace: TGATE (T1CON<6>) with: TGATE (T1CON< 7>) Page 33, the formulat for Tdelay contains a typo. Replace: Tdelay = (Fpb) * 256 * DELAY with: Tdelay = ( 1/Fpb) * 256 * DELAY Page 41, third paragraph, I state that the OpenTimer1() library function does not clear the TMR1 register. This is not true anymore, the library has been updated to include this feature. Page 44, in the second do loop example, a semicolon is missing, replace } while (1) with: } while (1) ; Page 75, the example of access to a bit field contains a typo, replace T1CONbits.ON = 1; with: T1CONbits. TON = 1; Page 95, in the definition of the InterruptHandler function, replace: void __ISR( 0, IPL1) InterruptHandler( void) with void __ISR _SINGLE() InterruptHandler( void) See the Updates page for a complete explanation. Page 128, replace the statement: for( i=0, p=a; i < 10; i++) with: for( i=0, p i=a; i < 10; i++) Page 200, in Equation 9.1 the generic peripheral register UxBRG has been incorrectly spelled as a product of two terms: U x BRG. Page 201, in the calculation of the baud rate error, replace % with x 100 to clarify how to obtain the correct value. Page 202, replace the statement: #define U_TX 0x0400 // enable tx, clear all flags with #define U_TX 0x 1400 // enable tx & rx, clear all flags So that both RX and TX are enabled, which is necessary for the following demo to work. Page 210, replace the statement: #define home() putsU2( "\x1b[1,1H") with #define home() putsU2( "\x1b[1 ;1H") Notice the comma separating the two "1" digits is changed in a semicolon. Page 226, replace the code segment: void LCDinit( void) { // PMP initialization PMPEN = 0x0001 with void initLCD( void) { // PMP initialization PM AEN = 0x0001

FAQs and Errata - Exploring the PIC32

Embed Size (px)

DESCRIPTION

Examples, Faqs and errata.

Citation preview

Page 1: FAQs and Errata - Exploring the PIC32

Home

Exploring the PIC32

AV16/32 board

AV16/32 Projects

MultiMedia Boards

MultiMedia Projects

Blog

University Corner

Updates

FAQs and Errata

Downloads

Links and Books

About

Should you notice a conflict between my narration and the official Microchip

documentation, ALWAYS refer to the latter. However please send me an email if a

conflict arises.

If you find a problem that is not covered in the list below, please check the Updates

page as well. Changes in tools and software products (after the book was published)

required a few modifications to the code in the book.

Errata

Page 14, the PIC32MX datasheet covers I/O Ports in Chapter 12.

Page 18, the final text paragraph, just above the code listing, refers to the

"AD1PCGF " SFR. This should be "AD1PCFG".

Page 32, Figure 2.1: 16-bit Timer1 module block diagram contains a typo,

replace:

TGATE (T1CON<6>)

with:

TGATE (T1CON<7>)

Page 33, the formulat for Tdelay contains a typo. Replace:

Tdelay = (Fpb) * 256 * DELAY

with:

Tdelay = (1/Fpb) * 256 * DELAY

Page 41, third paragraph, I state that the OpenTimer1() library function

does not clear the TMR1 register.

This is not true anymore, the library has been updated to include this feature.

Page 44, in the second do loop example, a semicolon is missing, replace

} while (1)

with:

} while (1);

Page 75, the example of access to a bit field contains a typo, replace T1CONbits.ON = 1;

with: T1CONbits.TON = 1;

Page 95, in the definition of the InterruptHandler function, replace:

void __ISR( 0, IPL1) InterruptHandler( void)

with

void __ISR_SINGLE() InterruptHandler( void)

See the Updates page for a complete explanation.

Page 128, replace the statement:

for( i=0, p=a; i < 10; i++)

with:

for( i=0, pi=a; i < 10; i++)

Page 200, in Equation 9.1 the generic peripheral register UxBRG has been

incorrectly spelled as a product of two terms: U x BRG.

Page 201, in the calculation of the baud rate error, replace % with x 100 to

clarify how to obtain the correct value.

Page 202, replace the statement:

#define U_TX 0x0400 // enable tx, clear all flags

with

#define U_TX 0x1400 // enable tx & rx, clear all flags

So that both RX and TX are enabled, which is necessary for the following demo

to work.

Page 210, replace the statement:

#define home() putsU2( "\x1b[1,1H")

with

#define home() putsU2( "\x1b[1;1H")

Notice the comma separating the two "1" digits is changed in a semicolon.

Page 226, replace the code segment:

void LCDinit( void) {

// PMP initialization

PMPEN = 0x0001

with

void initLCD( void) {

// PMP initialization

PMAEN = 0x0001

Page 2: FAQs and Errata - Exploring the PIC32

Further down on the same page replace:

#define PMDATA PMDIN1

with

#define PMDATA PMDIN

Page 230, replace the statement:

#define putLCD( d) LCDwrite( LCDDATA, (d))

with

#define putLCD( d) writeLCD( LCDDATA, (d))

Page 252, replace the statement:

#define AINPUTS 0xffef // Analog inputs POT, TSENS

with

#define AINPUTS 0xffcf // Analog inputs POT, TSENS

Page 392, in function putcV() replace the statement:

const char *pf;

with

const unsigned char *pf;

Page 422, The expression used to compute the sector number:

if ( !readSECTOR( addr+i*j, buffer) )

should be replaced with:

if ( !readSECTOR( addr+i+j*N_BLOCKS, buffer))

in order to produce a linear sequence

Page 431, In figure 15.4: the File Size item is incorrectly reported as:

long integer ( 132-bit)

replace with:

long integer (32-bit)

Page 503, The code segment where the WAVE struct is defined (first three

lines) reads:typedef struct {

// data chunk

unsigned int dlength; // actual data size

chardata[4];

replace with:typedef struct {

// data chunk

unsigned int dlength; // actual data size

char data[4];

Notice the added space between char and data.

FAQs

If you are using a PIC32MX7 PIM on the Explorer 16 demonstration board you

might notice that the potentiometer input is not working in the demo project

of Day 10 (page 75). In reality on the PIC32MX7 pin RB5 (AN5) is multiplexed

with a USB function and the designers of the PIC32MX7 PIM have decided to

remap it to a different pin so that USB operation are possible without conflict.

You will find that AN2, is connected instead to the potentiometer input of the

EXplorer 16 board. For a complete pin mapping of the PIC32MX7 PIM please

refer to the related official documentation (51949A.pdf).