M103 - A Comprehensive Introduction to Embedded C Programming of Microchip 8 bit devices using the XC8 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 8 bit processor architectures and/or MPLABX and the XC8 '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 8 bit PIC microcontrollers and experience of using the MPLABX IDE and the XC8 compiler to create and debug 'C' programs. It aims to provide students with
- An understanding the architecture and features of the Microchip 8 bit microcontrollers.
- Hands-on experience of using MPLABX and XC8 to create and debug 'C' programs on Microchip 8 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
- XC8 'C' compiler
- Microchip In-Circuit Debugger (ICD3) hardware
- Overview of available development boards
- The PIC10, PIC12, PIC16 and PIC18 Architectures
- Harvard versus Von Neumann architecture
- Organisation of data memory
- On-chip peripherals
- In-Circuit Serial Programming (ICSP)
- Differences between the PIC10,PIC12 , PIC16 and PIC18 processor architectures and instruction sets.
- The XC8 Compiler
- Key features and ANSI C extensions to support the 8 bit processor architectures
- XC8 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