Difference between revisions of "Microchip dsPIC33 PIC24"
(Created page with "== Introduction == ERIKA3 supports Microchip dsPIC33/PIC24 CPU of Microchip dsPIC33EV256GM106 MCU.<br> Such support has been successfully tested on the following board: * [ht...") |
(→dsPIC33EV Family) |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | = 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 [http://ww1.microchip.com/downloads/en/DeviceDoc/MPLABX-v4.05-windows-installer.exe MPLAB-X IDE v4.05] | ||
+ | ** Support for [http://ww1.microchip.com/downloads/en/DeviceDoc/xc16-v1.33-full-install-windows-installer.exe MPLAB XC16 C Compiler v1.33] | ||
+ | * dsPIC33/PIC24 parts supported: | ||
+ | ** [http://www.microchip.com/design-centers/16-bit/products/dspic33f-dspic33e dsPIC33EV] | ||
+ | *** [http://www.microchip.com/wwwproducts/en/dsPIC33EV256GM106 dsPIC33EV256GM106] specific MCU | ||
+ | * Evaluation boards | ||
+ | ** [http://www.microchip.com/developmenttools/productdetails.aspx?partno=dm330018 dsPIC33EV 5V CAN-LIN STARTER KIT] (dsPIC33EV256GM106) | ||
+ | |||
+ | == Tutorials == | ||
+ | |||
+ | The following tutorials are available for this architecture: | ||
+ | * [[Microchip_dsPIC33/PIC24_-_dsPIC33EV-SK_application_build_on_Windows|dsPIC33/PIC24: dsPIC33EV-SK application build on Windows]] | ||
+ | * [[Microchip_MPLAB-X_-_Integration_on_Windows| MPLAB-X IDE - Integration on Windows]] | ||
+ | |||
+ | = Configuration and Programming = | ||
+ | |||
+ | ERIKA Enterprise is configured through [[Tutorial: RT-Druid and OIL basics | 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 [[Common oil.pref example|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 [[Common oil.pref example|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 | ||
+ | ** <code>OSCFAIL</code>: Oscillator Fail Trap | ||
+ | ** <code>ADDRERR</code>: Address Error Trap | ||
+ | ** <code>SGHT</code>: Generic Hard Trap | ||
+ | ** <code>STKERR</code>: Stack Error Trap | ||
+ | ** <code>MATHERR</code>: Math Error Trap | ||
+ | ** <code>DMACERR</code>: DMAC Error Trap | ||
+ | ** <code>SGST</code>: Generic Soft Trap | ||
+ | |||
+ | * Interrupts | ||
+ | ** <code>INT0</code>: External Interrupt 0 | ||
+ | ** <code>IC1</code>: Input Capture 1 | ||
+ | ** <code>OC1</code>: Output Compare 1 | ||
+ | ** <code>T1</code>: Timer1 | ||
+ | ** <code>DMA0</code>: DMA Channel 0 | ||
+ | ** <code>IC2</code>: Input Capture 2 | ||
+ | ** <code>OC2</code>: Output Compare 2 | ||
+ | ** <code>T2</code>: Timer2 | ||
+ | ** <code>T3</code>: Timer3 | ||
+ | ** <code>SPI1E</code>:SPI1 Error | ||
+ | ** <code>SPI1</code>: SPI1 Transfer Done | ||
+ | ** <code>U1RX</code>: UART1 Receiver | ||
+ | ** <code>U1TX</code>: UART1 Transmitter | ||
+ | ** <code>AD1</code>: ADC1 Convert Done | ||
+ | ** <code>DMA1</code>: DMA Channel 1 | ||
+ | ** <code>NVM</code>: NVM Write Complete | ||
+ | ** <code>SI2C1</code>: I2C1 Slave Event | ||
+ | ** <code>MI2C1</code>: I2C1 Master Event | ||
+ | ** <code>CMP1</code>: Comparator Combined Event | ||
+ | ** <code>CN</code>: Input Change Interrupt | ||
+ | ** <code>INT1</code>: External Interrupt 1 | ||
+ | ** <code>DMA2</code>: DMA Channel 2 | ||
+ | ** <code>OC3</code>: Output Compare 3 | ||
+ | ** <code>OC4</code>: Output Compare 4 | ||
+ | ** <code>T4</code>: Timer 4 | ||
+ | ** <code>T5</code>: Timer 5 | ||
+ | ** <code>INT2</code>: External Interrupt 2 | ||
+ | ** <code>U2RX</code>: UART2 Receiver | ||
+ | ** <code>U2TX</code>: UART2 Transmitter | ||
+ | ** <code>SPI2E</code>: SPI2 Error | ||
+ | ** <code>SPI2</code>: SPI3 Transfer Done | ||
+ | ** <code>C1RX</code>: CAN1 RX Data Ready | ||
+ | ** <code>C1</code>: CAN1 Event | ||
+ | ** <code>DMA3</code>: DMA Channel 3 | ||
+ | ** <code>IC3</code>: Input Capture 3 | ||
+ | ** <code>IC4</code>: Input Capture 4 | ||
+ | ** <code>PSEM</code>: PWM Special Event Match Interrupt | ||
+ | ** <code>U1E</code>: UART1 Error Interrupt | ||
+ | ** <code>U2E</code>: UART2 Error Interrupt | ||
+ | ** <code>C1TX</code>: USART, Tx Complete | ||
+ | ** <code>CTMU</code>: UART1 Error Interrupt | ||
+ | ** <code>PWM1</code>: PWM Generator 1 | ||
+ | ** <code>PWM2</code>: PWM Generator 2 | ||
+ | ** <code>PWM3</code>: PWM Generator 3 | ||
+ | ** <code>ICD</code>: ICD Application | ||
+ | ** <code>I2C1</code>: Bus Collision | ||
+ | ** <code>SENT1ERR</code>: SENT1 Error | ||
+ | ** <code>SENT1</code>: SENT1 TX/RX | ||
+ | ** <code>SENT2ERR</code>: SENT2 Error | ||
+ | ** <code>SENT2</code>: SENT2 TX/RX | ||
+ | ** <code>ECCSBE</code>: 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''' or'''T2''' 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; | ||
+ | ... | ||
+ | }; | ||
[[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; ... };