M202 - A Comprehensive Introduction to Embedded C Programming of Microchip 16 bit devices using the XC16 Compiler
Duration: 5 Days
Intended Audience
This course is aimed at engineers with an understanding of microelectronics and programming who intend to create projects using the 'C' language, but who are new to the Microchip 16 bit processor architectures and/or MPLABX and the XC16 'C' compiler. Some prior knowledge of programming is assumed, together with familiarity with code development using an IDE. This is a very intensive course and its contents can be tailored to the requirements and experience of the attendees.
Synopsis
This hands-on course aims to provide engineers with an understanding of the core features of 16 bit PIC microcontrollers and experience of using the MPLABX IDE and the XC16 compiler to create and debug 'C' programs. It aims to provide students with
- An understanding the architecture and features of the Microchip 16 bit microcontrollers.
- Hands-on experience of using MPLABX and XC16 to create and debug 'C' programs on Microchip 16 bit PIC microcontrollers.
- Experience in making driving on-chip peripherals by using existing libraries, or implementing custom libraries.
Course Outline
- Overview of Development Tools
- Microchip development software: MPLABX and associated tools
- XC16 'C' compiler
- Microchip In-Circuit Debugger (ICD3) hardware
- Overview of available development boards
- The PIC24 and dsPIC Architectures
- Harvard versus Von Neumann architecture
- Organisation of data memory
- On-chip peripherals
- In-Circuit Serial Programming (ICSP)
- Differences between the PIC24 and dsPIC processor architectures and instruction sets.
- The XC16 Compiler
- Key features and ANSI C extensions to support the 16 bit processor architectures
- XC16 data types, storage classes and type qualifiers
- Programming style - use of templates and comments
- Debugging at 'C' source level using MPLABX and ICD3
- Inclusion of external source code modules to add functionality to the project
- Interrupt service routines - how to create interrupt handlers using XC8
- Developing and testing pure (portable) ANSI C code on the PC
- Overview of Microsoft Visual Studio and Eclipse CDT as C IDEs
- Advantages of testing and developing portable code on a PC.
- Foundations of C programming
- Basic C data types - characters, integers and floating point numbers.
- C arithmetic and logical operators
- Functions and function prototypes and header files
- if - else and switch statements
- Arrays and pointers
- Iteration using for loops, while loops and do - while loops
- Data structures in C
- Function pointers
- Pointers to data structures
- Data structures containing function pointers
- Unions and enums
- Bit level operators and bit level data structures
- Processor specific C - Manipulating Memory Mapped Microcontroller Registers from within C code
- How memory mapped registers are associated with variables and data structures
- Understanding the processor specific C header files
- Implementing interrupt handler code in C
- Implementing a custom peripheral library
- Overview of Microchip supplied peripheral libraries
- Embedded applications and examples
- Flashing LEDs and detecting button presses
- Software vs. timer interrupt driven delays
- Using ADC to acquire analog sensor data
- Basic serial communications using RS232
- Implementing a simple user interface using buttons and a LCD
- Acquiring data from a simple I2C / SPI sensor
- Implementing a basic timer interrupt driven scheduler