Microchip dsPIC33 PIC24

From ERIKA WIKI
Revision as of 10:14, 4 June 2018 by G.serano (talk | contribs) (dsPIC33EV Family)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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:

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;
     ...
   };