I am using IBM logiscope to bring a pic24 project to MISRA compliance.

Due to the use of unions in the standard PIC header file (which maps all the registers to the locations in the linker) I have created my own local register mappings whenever needed.

i.e. for PORT configuration source, the header contains

Code: Select all

```
extern volatile unsigned int TRISA;
typedef struct
{
unsigned TRISA0:1;
unsigned TRISA1:1;
unsigned TRISA2:1;
unsigned TRISA3:1;
unsigned TRISA4:1;
unsigned :2;
unsigned TRISA7:1;
unsigned TRISA8:1;
unsigned TRISA9:1;
unsigned TRISA10:1;
} TRISABITS;
extern volatile TRISABITS TRISAbits;
extern volatile unsigned int TRISB;
typedef struct
{
unsigned TRISB0:1;
unsigned TRISB1:1;
unsigned TRISB2:1;
unsigned TRISB3:1;
unsigned TRISB4:1;
unsigned TRISB5:1;
unsigned TRISB6:1;
unsigned TRISB7:1;
unsigned TRISB8:1;
unsigned TRISB9:1;
unsigned TRISB10:1;
unsigned TRISB11:1;
unsigned TRISB12:1;
unsigned TRISB13:1;
unsigned TRISB14:1;
unsigned TRISB15:1;
} TRISBBITS;
extern volatile TRISBBITS TRISBbits;
extern volatile unsigned int TRISC;
typedef struct
{
unsigned TRISC0:1;
unsigned TRISC1:1;
unsigned TRISC2:1;
unsigned TRISC3:1;
unsigned TRISC4:1;
unsigned TRISC5:1;
unsigned TRISC6:1;
unsigned TRISC7:1;
unsigned TRISC8:1;
unsigned TRISC9:1;
} TRISCBITS;
extern volatile TRISCBITS TRISCbits;
extern volatile unsigned int LATA;
typedef struct
{
unsigned LATA0:1;
unsigned LATA1:1;
unsigned LATA2:1;
unsigned LATA3:1;
unsigned LATA4:1;
unsigned :2;
unsigned LATA7:1;
unsigned LATA8:1;
unsigned LATA9:1;
unsigned LATA10:1;
} LATABITS;
extern volatile LATABITS LATAbits;
```

**extern**variables should be

**static**.

How can get around this?

Matthew Shearer