Difference between revisions of "Microchip dsPIC33 PIC24"

From ERIKA WIKI
Jump to: navigation, search
(dsPIC33EV Family)
(dsPIC33EV Family)
Line 91: Line 91:
 
=== dsPIC33EV Family ===
 
=== dsPIC33EV Family ===
  
The '''dsPIC33EV''' family of '''dsPIC33/PIC24''' microcontrollers has an interrupt vector table which is stored in the flash memory. The lowest addresses of the interrupt vector table are allocated to the RESET and to the interrupt vectors. Interrupt handlers placed at lower addresses have higher hardware priorities than interrupt handlers placed at higher addresses so the '''PRIORITY''' attribute of the '''ISR''' object in the OIL is USELESS. The complete list of '''SOURCE''' entries is shown below.
+
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.
  
* <code>OSCFAIL</code>: External Pin, Power-on Reset, Brown-out Reset and Watchdog System Reset
+
* Traps
* <code>ADDRERR</code>: External Interrupt Request 0
+
** <code>OSCFAIL</code>: Oscillator Fail Trap
* <code>SGHT</code>: External Interrupt Request 1
+
** <code>ADDRERR</code>: Address Error Trap
* <code>STKERR</code>: Pin Change Interrupt Request 0
+
** <code>SGHT</code>: Generic Hard Trap
* <code>MATHERR</code>: Pin Change Interrupt Request 1
+
** <code>STKERR</code>: Stack Error Trap
* <code>DMACERR</code>: Pin Change Interrupt Request 2
+
** <code>MATHERR</code>: Math Error Trap
* <code>SGST</code>: Watchdog Time-out Interrupt
+
** <code>DMACERR</code>: DMAC Error Trap
* <code>INT0</code>: Timer/Counter2 Compare Match A
+
** <code>SGST</code>: Generic Soft Trap
* <code>IC1</code>: Timer/Counter2 Compare Match B
+
 
* <code>OC1</code>: Timer/Counter2 Overflow
+
* Interrupts
* <code>T1</code>: Timer/Counter1 Capture Event
+
** <code>INT0</code>: External Interrupt 0
* <code>DMA0</code>: Timer/Counter1 Compare Match A
+
** <code>IC1</code>: Input Capture 1
* <code>IC2</code>: Timer/Coutner1 Compare Match B
+
** <code>OC1</code>: Output Compare 1
* <code>OC2</code>: Timer/Counter1 Overflow
+
** <code>T1</code>: Timer1
* <code>T2</code>: Timer/Counter0 Compare Match A
+
** <code>DMA0</code>: DMA Channel 0
* <code>T3</code>: Timer/Counter0 Compare Match B
+
** <code>IC2</code>: Input Capture 2
* <code>SPI1E</code>: Timer/Counter0 Overflow
+
** <code>OC2</code>: Output Compare 2
* <code>SPI1</code>: SPI Serial Transfer Complete
+
** <code>T2</code>: Timer2
* <code>U1RX</code>: USART Rx Complete
+
** <code>T3</code>: Timer3
* <code>U1TX</code>: USART, Data Register Empty
+
** <code>SPI1E</code>:SPI1 Error
* <code>AD1</code>: USART, Tx Complete
+
** <code>SPI1</code>: SPI1 Transfer Done
* <code>DMA1</code>: Conversion Complete
+
** <code>U1RX</code>: UART1 Receiver
* <code>NVM</code>: EEPROM Ready
+
** <code>U1TX</code>: UART1 Transmitter
* <code>SI2C1</code>: Analog Comparator
+
** <code>AD1</code>: ADC1 Convert Done
* <code>MI2C1</code>: 2-wire Serial Interface
+
** <code>DMA1</code>: DMA Channel 1
* <code>CMP1</code>: Store Program Memory Ready
+
** <code>NVM</code>: NVM Write Complete
* <code>CN</code>: External Pin, Power-on Reset, Brown-out Reset and Watchdog System Reset
+
** <code>SI2C1</code>: I2C1 Slave Event
* <code>INT1</code>: External Interrupt Request 0
+
** <code>MI2C1</code>: I2C1 Master Event
* <code>DMA2</code>: External Interrupt Request 1
+
** <code>CMP1</code>: Comparator Combined Event
* <code>OC3</code>: Pin Change Interrupt Request 0
+
** <code>CN</code>: Input Change Interrupt
* <code>OC4</code>: Pin Change Interrupt Request 1
+
** <code>INT1</code>: External Interrupt 1
* <code>T4</code>: Pin Change Interrupt Request 2
+
** <code>DMA2</code>: DMA Channel 2
* <code>T5</code>: Watchdog Time-out Interrupt
+
** <code>OC3</code>: Output Compare 3
* <code>INT2</code>: Timer/Counter2 Compare Match A
+
** <code>OC4</code>: Output Compare 4
* <code>U2RX</code>: Timer/Counter2 Compare Match B
+
** <code>T4</code>: Timer 4
* <code>U2TX</code>: Timer/Counter2 Overflow
+
** <code>T5</code>: Timer 5
* <code>SPI2E</code>: Timer/Counter1 Capture Event
+
** <code>INT2</code>: External Interrupt 2
* <code>SPI2</code>: Timer/Counter1 Compare Match A
+
** <code>U2RX</code>: UART2 Receiver
* <code>C1RX</code>: Timer/Coutner1 Compare Match B
+
** <code>U2TX</code>: UART2 Transmitter
* <code>C1</code>: Timer/Counter1 Overflow
+
** <code>SPI2E</code>: SPI2 Error
* <code>DMA3</code>: Timer/Counter0 Compare Match A
+
** <code>SPI2</code>: SPI3 Transfer Done
* <code>IC3</code>: Timer/Counter0 Compare Match B
+
** <code>C1RX</code>: CAN1 RX Data Ready
* <code>IC4</code>: Timer/Counter0 Overflow
+
** <code>C1</code>: CAN1 Event
* <code>PSEM</code>: SPI Serial Transfer Complete
+
** <code>DMA3</code>: DMA Channel 3
* <code>U1E</code>: USART Rx Complete
+
** <code>IC3</code>: Input Capture 3
* <code>U2E</code>: USART, Data Register Empty
+
** <code>IC4</code>: Input Capture 4
* <code>C1TX</code>: USART, Tx Complete
+
** <code>PSEM</code>: PWM Special Event Match Interrupt
* <code>CTMU</code>: Conversion Complete
+
** <code>U1E</code>: UART1 Error Interrupt
* <code>PWM1</code>: EEPROM Ready
+
** <code>U2E</code>: UART2 Error Interrupt
* <code>PWM2</code>: Analog Comparator
+
** <code>C1TX</code>: USART, Tx Complete
* <code>PWM3</code>: 2-wire Serial Interface
+
** <code>CTMU</code>: UART1 Error Interrupt
* <code>ICD</code>: Store Program Memory Ready
+
** <code>PWM1</code>: PWM Generator 1
* <code>I2C1</code>: USART Rx Complete
+
** <code>PWM2</code>: PWM Generator 2
* <code>SENT1ERR</code>: USART, Data Register Empty
+
** <code>PWM3</code>: PWM Generator 3
* <code>SENT1</code>: USART, Tx Complete
+
** <code>ICD</code>: ICD Application
* <code>SENT2ERR</code>: Conversion Complete
+
** <code>I2C1</code>: Bus Collision
* <code>SENT2</code>: EEPROM Ready
+
** <code>SENT1ERR</code>: SENT1 Error
* <code>ECCSBE</code>: Analog Comparator
+
** <code>SENT1</code>: SENT1 TX/RX
 +
** <code>SENT2ERR</code>: SENT2 Error
 +
** <code>SENT2</code>: SENT2 TX/RX
 +
** <code>ECCSBE</code>: SENT1 TX/RX
  
 
= OSEK/VDX Extensions =
 
= OSEK/VDX Extensions =

Revision as of 17:22, 25 May 2018

Introduction

ERIKA3 now supports Microchip dsPIC33/PIC24 MCUs.

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.

The following sections describe the 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.

MODEL attribute of MCU_DATA supports for now the dsPIC33 value only.

Example of a CPU_DATA section:

   CPU_DATA = DSPIC33_PIC24 {
     MODEL = dsPIC33;
     ...
   };

MCU

MCU_DATA object supports for now the dsPIC33EV value only.

MODEL attribute of MCU_DATA supports for now the dsPIC33EV256GM106 value only.

Example of a 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: SENT1 TX/RX

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