Difference between revisions of "Microchip dsPIC33 PIC24"
(→dsPIC33EV Family) |
|||
| (5 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
| − | + | This manual describes the porting details of the ERIKA Enterprise v3 kernel(s) for Microchip dsPIC33/PIC24 families of microcontrollers. | |
= dsPIC33 features supported = | = dsPIC33 features supported = | ||
| Line 56: | Line 56: | ||
'''CPU_DATA''' object must be set to '''DSPIC33_PIC24'''. | '''CPU_DATA''' object must be set to '''DSPIC33_PIC24'''. | ||
| − | '''MODEL''' attribute of ''' | + | Example of a CPU_DATA section: |
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | === MODEL === | ||
| + | |||
| + | '''MODEL''' attribute of '''CPU_DATA''' supports for now the '''dsPIC33''' value only. | ||
| + | Deafult value is '''dsPIC33'''. | ||
| + | |||
| + | Example of a MODEL attribute of a CPU_DATA section: | ||
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | MODEL = dsPIC33; | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | ==== SPLIM ==== | ||
| + | |||
| + | '''SPLIM''' boolean property of '''MODEL''' attribute of '''CPU_DATA''' for the '''dsPIC33''' value only enables the hardware stack pointer overflow check. | ||
| + | Deafult value is '''TRUE'''. | ||
| + | |||
| + | Example of SPLIM boolean property of MODEL attribute of CPU_DATA for the dsPIC33 value only: | ||
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | MODEL = dsPIC33 { | ||
| + | SPLIM = FALSE; | ||
| + | }; | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | ==== DBG ==== | ||
| + | |||
| + | '''DBG''' property of '''MODEL''' attribute of '''CPU_DATA''' for the '''dsPIC33''' value only selects the hardware debugger: for now only the '''SK''' (Starter-Kit) value is supported. | ||
| + | Deafult value is '''SK'''. | ||
| + | |||
| + | Example of DBG property of MODEL attribute of CPU_DATA for the dsPIC33 value only: | ||
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | MODEL = dsPIC33 { | ||
| + | DBG = SK; | ||
| + | }; | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | === COMPILER === | ||
| + | |||
| + | '''COMPILER''' attribute of '''CPU_DATA''' supports for now the '''XC16''' value only. | ||
| + | Deafult value is '''XC16'''. | ||
| − | Example of a CPU_DATA section: | + | Example of a COMPILER attribute of CPU_DATA section: |
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | MODEL = dsPIC33; | ||
| + | COMPILER = XC16; | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | ==== MINIMAL_OPTS ==== | ||
| + | |||
| + | '''MINIMAL_OPTS''' boolean property of '''COMPILER''' attribute of '''CPU_DATA''' configures the build system with minimal compiling and linking options. | ||
| + | The default value is set to '''FALSE'''. | ||
| + | |||
| + | Example of a MINIMAL_OPTS property of COMPILER attribute of CPU_DATA section: | ||
CPU_DATA = DSPIC33_PIC24 { | CPU_DATA = DSPIC33_PIC24 { | ||
MODEL = dsPIC33; | MODEL = dsPIC33; | ||
| + | COMPILER = XC16 { | ||
| + | MINIMAL_OPTS = TRUE; | ||
| + | }; | ||
... | ... | ||
}; | }; | ||
| Line 68: | Line 133: | ||
'''MCU_DATA''' object supports for now the '''dsPIC33EV''' value only. | '''MCU_DATA''' object supports for now the '''dsPIC33EV''' value only. | ||
| + | |||
| + | Example of a MCU_DATA section: | ||
| + | |||
| + | MCU_DATA = dsPIC33EV { | ||
| + | ... | ||
| + | }; | ||
| + | |||
| + | === MODEL === | ||
'''MODEL''' attribute of '''MCU_DATA''' supports for now the '''dsPIC33EV256GM106''' value only. | '''MODEL''' attribute of '''MCU_DATA''' supports for now the '''dsPIC33EV256GM106''' value only. | ||
| − | Example of | + | Example of MODEL attribute of MCU_DATA section: |
MCU_DATA = dsPIC33EV { | MCU_DATA = dsPIC33EV { | ||
| Line 153: | Line 226: | ||
** <code>SENT2ERR</code>: SENT2 Error | ** <code>SENT2ERR</code>: SENT2 Error | ||
** <code>SENT2</code>: SENT2 TX/RX | ** <code>SENT2</code>: SENT2 TX/RX | ||
| − | ** <code>ECCSBE</code>: | + | ** <code>ECCSBE</code>: ECC Single-Bit Error |
= OSEK/VDX Extensions = | = OSEK/VDX Extensions = | ||
| Line 163: | Line 236: | ||
System Timer is microcontroller dependent so for each supported Microchip dsPIC33/PIC24 microcontroller family, the System Timer configuration of ERIKA Enterprise v3 is shown below. | System Timer is microcontroller dependent so for each supported Microchip dsPIC33/PIC24 microcontroller family, the System Timer configuration of ERIKA Enterprise v3 is shown below. | ||
| − | === dsPIC33EV Family === | + | ==== dsPIC33EV Family ==== |
For the '''dsPIC33EV''' family of '''dsPIC33/PIC24''' microcontrollers the System Timer is linked to Hardware Timers so the '''DEVICE''' attribute MUST be se to '''T1''' or'''T2''' or ... or '''T5''' as shown below. | For the '''dsPIC33EV''' family of '''dsPIC33/PIC24''' microcontrollers the System Timer is linked to Hardware Timers so the '''DEVICE''' attribute MUST be se to '''T1''' or'''T2''' or ... or '''T5''' as shown below. | ||
| Line 178: | Line 251: | ||
}; | }; | ||
| + | === CPU_CLOCK === | ||
| + | |||
| + | System Timer need the '''CPU_CLOCK''' attribute of '''CPU_DATA'''. This value, expressed as MHz, must be set to the configured frequency of the CPU. | ||
| + | |||
| + | Example of a CPU_CLOCK attribute of CPU_DATA section: | ||
| + | |||
| + | CPU_DATA = DSPIC33_PIC24 { | ||
| + | MODEL = dsPIC33; | ||
| + | CPU_CLOCK = 16.0; | ||
| + | ... | ||
| + | }; | ||
[[Category:Architectures]] | [[Category:Architectures]] | ||
Latest revision as of 11:14, 4 June 2018
Contents
Introduction
This manual describes the porting details of the ERIKA Enterprise v3 kernel(s) for Microchip dsPIC33/PIC24 families of microcontrollers.
dsPIC33 features supported
The following are the main features of the currently implemented support:
- Development tools
- Support for MPLAB-X IDE v4.05
- Support for MPLAB XC16 C Compiler v1.33
- dsPIC33/PIC24 parts supported:
- dsPIC33EV
- dsPIC33EV256GM106 specific MCU
- dsPIC33EV
- Evaluation boards
- dsPIC33EV 5V CAN-LIN STARTER KIT (dsPIC33EV256GM106)
Tutorials
The following tutorials are available for this architecture:
Configuration and Programming
ERIKA Enterprise is configured through RT-Druid and an OIL file and some other properties.
The following sections describe the properties and OIL fields customized for Microchip dsPIC33/PIC24 architecture.
MPLAB-X IDE Path
It is possible to choose the path in three different ways:
- Specific environment variables: MPLAB_X_IDE_FILES
- E.g.: MPLAB_X_IDE_FILES=C:\Program Files (x86)\Microchip\MPLABX\v4.05
- RT-Druid Eclipse IDE Property.
- RT-Druid Configuration File Entry: preference_dspic33_pic24__path_for_mplab_x_ide
- E.g.: preference_dspic33_pic24__path_for_mplab_x_ide=C:\Program Files (x86)\Microchip\MPLABX\v4.05
Here is an example of RT-Druid configuration file.
MPLAB XC16 C Compiler Path
It is possible to choose the path in three different ways:
- Specific environment variables: XC16_TOOLS
- E.g.: XC16_TOOLS=C:\Program Files (x86)\Microchip\xc16\v1.33
- RT-Druid Eclipse IDE Property.
- RT-Druid Configuration File Entry: preference_dspic33_pic24__path_for_xc16_compiler
- E.g.: preference_dspic33_pic24__path_for_xc16_compiler=C:\Program Files (x86)\Microchip\xc16\v1.33
Here is an example of RT-Druid configuration file.
CPU
CPU_DATA object must be set to DSPIC33_PIC24.
Example of a CPU_DATA section:
CPU_DATA = DSPIC33_PIC24 {
...
};
MODEL
MODEL attribute of CPU_DATA supports for now the dsPIC33 value only. Deafult value is dsPIC33.
Example of a MODEL attribute of a CPU_DATA section:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33;
...
};
SPLIM
SPLIM boolean property of MODEL attribute of CPU_DATA for the dsPIC33 value only enables the hardware stack pointer overflow check. Deafult value is TRUE.
Example of SPLIM boolean property of MODEL attribute of CPU_DATA for the dsPIC33 value only:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33 {
SPLIM = FALSE;
};
...
};
DBG
DBG property of MODEL attribute of CPU_DATA for the dsPIC33 value only selects the hardware debugger: for now only the SK (Starter-Kit) value is supported. Deafult value is SK.
Example of DBG property of MODEL attribute of CPU_DATA for the dsPIC33 value only:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33 {
DBG = SK;
};
...
};
COMPILER
COMPILER attribute of CPU_DATA supports for now the XC16 value only. Deafult value is XC16.
Example of a COMPILER attribute of CPU_DATA section:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33;
COMPILER = XC16;
...
};
MINIMAL_OPTS
MINIMAL_OPTS boolean property of COMPILER attribute of CPU_DATA configures the build system with minimal compiling and linking options. The default value is set to FALSE.
Example of a MINIMAL_OPTS property of COMPILER attribute of CPU_DATA section:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33;
COMPILER = XC16 {
MINIMAL_OPTS = TRUE;
};
...
};
MCU
MCU_DATA object supports for now the dsPIC33EV value only.
Example of a MCU_DATA section:
MCU_DATA = dsPIC33EV {
...
};
MODEL
MODEL attribute of MCU_DATA supports for now the dsPIC33EV256GM106 value only.
Example of MODEL attribute of MCU_DATA section:
MCU_DATA = dsPIC33EV {
MODEL = dsPIC33EV256GM106;
};
BOARD
BOARD_DATA object supports for now the dsPIC33EV_SK value only.
Example of a BOARD_DATA section:
BOARD_DATA = dsPIC33EV_SK;
Interrupt Handling
The Interrupt Handling support is microcontroller dependent. For each supported Microchip dsPIC33/PIC24 microcontroller family, the ISRs configuration of ERIKA3 is shown below.
dsPIC33EV Family
The dsPIC33EV family of dsPIC33/PIC24 microcontrollers has an interrupt vector table which is stored in the flash memory. The complete list of SOURCE entries is shown below.
- Traps
-
OSCFAIL: Oscillator Fail Trap -
ADDRERR: Address Error Trap -
SGHT: Generic Hard Trap -
STKERR: Stack Error Trap -
MATHERR: Math Error Trap -
DMACERR: DMAC Error Trap -
SGST: Generic Soft Trap
-
- Interrupts
-
INT0: External Interrupt 0 -
IC1: Input Capture 1 -
OC1: Output Compare 1 -
T1: Timer1 -
DMA0: DMA Channel 0 -
IC2: Input Capture 2 -
OC2: Output Compare 2 -
T2: Timer2 -
T3: Timer3 -
SPI1E:SPI1 Error -
SPI1: SPI1 Transfer Done -
U1RX: UART1 Receiver -
U1TX: UART1 Transmitter -
AD1: ADC1 Convert Done -
DMA1: DMA Channel 1 -
NVM: NVM Write Complete -
SI2C1: I2C1 Slave Event -
MI2C1: I2C1 Master Event -
CMP1: Comparator Combined Event -
CN: Input Change Interrupt -
INT1: External Interrupt 1 -
DMA2: DMA Channel 2 -
OC3: Output Compare 3 -
OC4: Output Compare 4 -
T4: Timer 4 -
T5: Timer 5 -
INT2: External Interrupt 2 -
U2RX: UART2 Receiver -
U2TX: UART2 Transmitter -
SPI2E: SPI2 Error -
SPI2: SPI3 Transfer Done -
C1RX: CAN1 RX Data Ready -
C1: CAN1 Event -
DMA3: DMA Channel 3 -
IC3: Input Capture 3 -
IC4: Input Capture 4 -
PSEM: PWM Special Event Match Interrupt -
U1E: UART1 Error Interrupt -
U2E: UART2 Error Interrupt -
C1TX: USART, Tx Complete -
CTMU: UART1 Error Interrupt -
PWM1: PWM Generator 1 -
PWM2: PWM Generator 2 -
PWM3: PWM Generator 3 -
ICD: ICD Application -
I2C1: Bus Collision -
SENT1ERR: SENT1 Error -
SENT1: SENT1 TX/RX -
SENT2ERR: SENT2 Error -
SENT2: SENT2 TX/RX -
ECCSBE: ECC Single-Bit Error
-
OSEK/VDX Extensions
This Section contains information about the OSEK/VDX Extensions (or optional features) that have been implemented for the dsPIC33/PIC24 support.
System Timer
System Timer is microcontroller dependent so for each supported Microchip dsPIC33/PIC24 microcontroller family, the System Timer configuration of ERIKA Enterprise v3 is shown below.
dsPIC33EV Family
For the dsPIC33EV family of dsPIC33/PIC24 microcontrollers the System Timer is linked to Hardware Timers so the DEVICE attribute MUST be se to T1 orT2 or ... or T5 as shown below.
COUNTER SystemTimer {
MINCYCLE = 1;
MAXALLOWEDVALUE = 65535;
TICKSPERBASE = 1;
TYPE = HARDWARE {
DEVICE = "T1";
SYSTEM_TIMER = TRUE;
};
SECONDSPERTICK = 0.001;
};
CPU_CLOCK
System Timer need the CPU_CLOCK attribute of CPU_DATA. This value, expressed as MHz, must be set to the configured frequency of the CPU.
Example of a CPU_CLOCK attribute of CPU_DATA section:
CPU_DATA = DSPIC33_PIC24 {
MODEL = dsPIC33;
CPU_CLOCK = 16.0;
...
};