We may earn an affiliate commission when you visit our partners.
Shivkumar Iyer

The course will describe how to use the The The purpose of this course is to provide young engineers with exposure to microcontrollers used in industry, and help them land their first jobs as power electronics engineers or firmware engineers. The course can also be used as training material by companies to train their engineers in using PIC32 microcontrollers from Microchip. The course covers both theory and programming, with details on the architecture of the microcontroller and its peripherals, as well as code sessions where projects are built from the ground up. The projects are accompanied by experiments with the results being observable either through blinking LEDs or through waveforms on the oscilloscope.

Read more

The course will describe how to use the The The purpose of this course is to provide young engineers with exposure to microcontrollers used in industry, and help them land their first jobs as power electronics engineers or firmware engineers. The course can also be used as training material by companies to train their engineers in using PIC32 microcontrollers from Microchip. The course covers both theory and programming, with details on the architecture of the microcontroller and its peripherals, as well as code sessions where projects are built from the ground up. The projects are accompanied by experiments with the results being observable either through blinking LEDs or through waveforms on the oscilloscope.

The course describes how students can setup a low-cost electronics lab with components available from online marketplaces. The microcontroller kit (Curiosity Nano Evaluation Kit) needed for the course is readily available in many online marketplaces and costs merely USD 16. The course will begin with very simple examples such as how to make LEDs glow and flash. The course will then progress towards generating Pulse Width Modulation (PWM) gating signals and using the Analog to Digital Converter (ADC) for closed-loop control. The course will use the The course will describe how necessary software can be downloaded and how the student can interpret and understand the example projects.

Enroll now

What's inside

Learning objectives

  • Architecture of the pic32cm1216mc00032 microcontroller
  • Installing mplab x ide and other sdk
  • Understanding project setup and libraries
  • Overview of the peripherals used in power electronics applications
  • Using gpio pins through the port peripheral
  • Configuring and setting up interrupts and interrupt service routines (isr)
  • Using timers through the timer counter (tc) module
  • Generating pwm pulses through the timer counter for control (tcc) module
  • Using the analog to digital converter (adc) for measured signals and control implementation
  • Using the event system module

Syllabus

Introduction
Welcome
Target audience of the course
Hardware requirements of the course
Read more
Software requirements of the course
Tips for completing the course
Installing software, downloading example projects and documentation, testing the microcontroller kit with sample project.
Installing MPLAB X IDE and MPLAB XC32 compiler
Downloading the starter project for the Curiosity Nano Evaluation Kit
Microchip GitHub project repository
Testing the evaluation kit with the starter project
Project files and directories
Technical documentation
Tips for electronics
Basics of microcontroller architecture, PORT module layout and registers, how to program the GPIO pins
Basics of microcontroller architecture
GPIO pins and peripheral functionalities
Setting up the PORT module (GPIO) project
PORT registers
Reading header files for PORT register configurations
Reading PORT initialization function - part 1
Reading PORT initialization function - part 2
Cleaning up the base starter project
Connecting LEDs to GPIO pins of evaluation kit
Updating code for new project specifications - driving LEDs
Compiling the project
Executing the project
Conclusions
Enabling/starting the TCC module
Setting up oscillators and clocks, understanding interrupt handling, configuring timers and generating interrupts
Overview of timing
Setting up the 48MHz on-board oscillator
Setting up the 32.768kHz on-board oscillator
Setting up Generic Clock Generators
Setting up the Main Clock Generator
Configuring the Timer Counter (TC) module
Interrupt Vector Table
Choosing an example project from GitHub
Understanding example project code - part 1
Understanding example project code - part 2
Understanding example project code - part 3
Setting up new project
Correction on copying source file code
Rewriting project - part 1
Rewriting project (setting up 48MHz oscillator) - part 2
Rewriting project (setting up 32kHz oscillator) - part 3
Rewriting project (setting up GCLK Generators) - part 4
Rewriting project (enabling peripheral channels) - part 5
Rewriting project (main clock generator) - part 6
Rewriting project (expand TC module library) - part 7
Rewriting project (updating control register) - part 8
Rewriting project (completing config of TC0 module) - part 9
Rewriting project (duplicating config for TC3 module) - part 10
Rewriting project (setting up timer interrupts) - part 11
Rewriting project (update interrupt vector table) - part 12
Rewriting project (enabling timers and toggling GPIO pins) - part 13
Executing the timer project
Configuring the analog input channels
Configuring the TCC module, generating PWM waveforms
Overview of the TCC module
Waveform Generator
Output matrix
Interrupts
Control and status registers
Example TCC project from GitHub
Expanding GPIO project to include TCC library files
Choosing GPIO pins as TCC Waveform Output (WO) pins
Configuring TCC WO pins
Configuring clocks
Resetting the TCC0 module and choosing the clock prescaler
Choosing the waveform generator
Setting the PWM cycle period
Waiting for period register to synchronize
Writing ISR for the TCC0 interrupt
Updating the interrupt vector table
Executing the project to view basic gating signals
Inverting the gate pulses at output pins
Executing project - complementary waveforms with pins inverted
Dead-time insertion
Configuring dead-time using WEXCTRL register
Executing project - dead-time inserted between complementary pulses
Configuring the ADC, using the converted values for control
Overview of the ADC module
Control and setup of the ADC module
Completion of the ADC process
Generating mock analog signals for testing
Setting up the ADC project
Choosing the analog input pins in the project
Including Timer Counter (TC) modules for generating test signals
Initializing the timer counter module
Configuring the timer counter module

Save this course

Save Microchip PIC32CM MC microcontroller for power electronics to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Microchip PIC32CM MC microcontroller for power electronics with these activities:
Review Microcontroller Architecture Fundamentals
Solidify your understanding of microcontroller architecture to better grasp the specifics of the PIC32CM1216MC00032.
Show steps
  • Review basic microcontroller components (CPU, memory, peripherals).
  • Study different memory types (RAM, ROM, Flash).
  • Understand the fetch-decode-execute cycle.
Practice C Programming Fundamentals
Sharpen your C programming skills, as the course involves coding for the PIC32 microcontroller.
Show steps
  • Review data types, operators, and control flow statements.
  • Practice writing functions and using pointers.
  • Work through basic C programming exercises.
Read 'Embedded Systems Architecture' by Tammy Noergaard
Gain a broader understanding of embedded systems architecture to contextualize the PIC32's design and functionality.
Show steps
  • Read chapters on microcontroller architecture and memory management.
  • Focus on sections related to peripherals and interrupt handling.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Implement PWM Generation Examples
Reinforce your understanding of PWM generation by implementing various examples on the PIC32.
Show steps
  • Write code to generate PWM signals with varying duty cycles.
  • Experiment with different PWM frequencies.
  • Use an oscilloscope to observe the generated PWM waveforms.
Document Your Learning Journey
Improve retention by documenting your learning process, challenges, and solutions encountered during the course.
Show steps
  • Create a blog or online journal.
  • Regularly document your progress, code snippets, and debugging steps.
  • Share your insights and ask questions in online forums.
Develop a Simple Motor Control Application
Apply your knowledge by building a project that utilizes PWM and ADC for motor control.
Show steps
  • Design a circuit to control a DC motor using the PIC32.
  • Implement PWM generation for motor speed control.
  • Use the ADC to read motor current or voltage for feedback control.
  • Tune the control parameters for stable motor operation.
Read 'Programming 32-bit Microcontrollers in C' by Lucio Di Jasio
Deepen your understanding of 32-bit microcontroller programming in C, complementing the course's practical coding sessions.
Show steps
  • Review chapters on memory management and peripheral configuration.
  • Study examples of interrupt handling and real-time programming.
Contribute to a PIC32 Open Source Project
Solidify your skills by contributing to an open-source project that uses the PIC32 microcontroller.
Show steps
  • Find an open-source project on GitHub that uses the PIC32.
  • Identify a bug or feature to work on.
  • Contribute code, documentation, or testing to the project.

Career center

Learners who complete Microchip PIC32CM MC microcontroller for power electronics will develop knowledge and skills that may be useful to these careers:
Power Electronics Engineer
A power electronics engineer designs and develops electronic circuits and systems for power conversion and control. This course is specifically designed to help young engineers land their first jobs as power electronics engineers. With its focus on Pulse Width Modulation generation and using the Analog to Digital Converter for closed-loop control, the course provides relevant skills for designing power electronic systems. The course's instruction on setting up a low-cost electronics lab equips students with the ability to prototype and test their designs. Power electronics engineers may find the discussion of the event system module to be helpful.
Firmware Engineer
A firmware engineer specializes in writing and debugging the low-level software that controls hardware devices. This course directly addresses the needs of a firmware engineer by providing an overview of the architecture of the PIC32CM1216MC00032 microcontroller and practical experience in programming it. The course's focus on generating PWM gating signals, using the ADC for closed-loop control, and setting up interrupts translates into a stronger understanding of firmware development. By learning to install the necessary software and interpret example projects, a prospective firmware engineer gains a practical advantage. The course may be useful for developing skills in reading header files and writing initialization functions.
Embedded Systems Engineer
An embedded systems engineer designs, develops, and tests the software and hardware for embedded systems, which are specialized computer systems within larger devices or machines. This course helps build a foundation in microcontrollers, specifically the PIC32CM MC, which is widely used in embedded applications. The course's hands-on projects involving PWM signal generation, ADC usage, and interrupt handling are directly applicable to the tasks of an embedded systems engineer. Furthermore, the course helps one to configure timers, oscillators, and clocks, which are essential for precise control in embedded systems. Learning to set up a low-cost electronics lab, as covered in the course, may be useful for prototyping and debugging embedded systems projects.
Control Systems Engineer
A Control Systems Engineer designs and implements control systems for various applications, such as industrial processes and robotics. This course can equip aspiring control systems engineers with the knowledge of how to use microcontrollers for implementing control algorithms. The course's coverage of ADC for measured signals and PWM for control implementation addresses the core requirements for the control systems design. The projects in the course offer hands-on experience in implementing closed-loop control systems. The course's examples may be useful for interpreting technical documentation.
Mechatronics Engineer
A mechatronics engineer integrates mechanical, electrical, and computer engineering principles to design and develop automated systems. This course provides a relevant introduction to the use of microcontrollers in mechatronic systems. The course's hands-on projects, involving PWM signal generation and ADC usage for control, translate directly into the skills needed to control motors, sensors, and other mechatronic components. The course builds a foundation for developing embedded control systems. The mechatronics engineer may find the discussion of the event system module to be helpful.
Technical Trainer
A technical trainer develops and delivers training programs on technical topics, such as software, hardware, or engineering concepts. This course, designed to train engineers in using PIC32 microcontrollers, may be useful for a technical trainer who needs to create or deliver training on embedded systems. The course's comprehensive coverage of microcontroller architecture, peripherals, and programming provides a solid foundation for developing training materials. The trainer may find the course’s structure and example projects helpful for designing their module. The course also describes how necessary software can be downloaded.
Robotics Engineer
A robotics engineer designs, builds, and programs robots and robotic systems for various applications. This course builds a foundation in microcontroller programming and hardware interfacing, which are essential skills for robotics. The course's coverage of PWM signal generation, ADC usage, and interrupt handling gives the prospective robotics engineer the tools to control motors, sensors, and other robotic components. By working through the course's projects, one gains practical experience in developing embedded control systems. By learning to configure timers, oscillators, and clocks in the course, robotics engineers may find themselves able to perform precise control.
Automation Engineer
An Automation Engineer designs, develops, and implements automated systems and processes to improve efficiency and productivity. This course introduces the use of microcontrollers for control applications, which is a core skill for automation. The course's practical examples of generating PWM signals and using the ADC module are directly applicable to controlling actuators and sensors in automated systems. The course may be useful for understanding how to program GPIO pins and set up interrupts, which are common tasks. The course may give students insights into generating gating signals.
Hardware Engineer
A hardware engineer is involved in the design, development, and testing of computer hardware and related components. This course provides a practical introduction to microcontroller architecture and peripheral configuration, which are relevant to the work of a hardware engineer. The course's projects, which involve generating PWM signals and using ADCs, offer hands-on experience with microcontroller-based hardware control. The course may be useful for understanding project setup and libraries, which are valuable skills for hardware development. The course may be helpful in understanding how software interacts with the hardware.
Electrical Engineer
An electrical engineer researches, designs, develops, and tests electrical equipment and systems. This course gives prospective electrical engineers practical experience with microcontrollers, which are increasingly important in modern electrical engineering applications. The course's exploration of PWM signal generation and ADC usage builds a solid foundation for designing and implementing control systems. The course may be useful for understanding how to set up oscillators and clocks, which are essential for timing and synchronization in electrical systems. Electrical engineers may find the experiments with LEDs to be helpful for designing visual indicators.
Internet of Things Engineer
An Internet of Things Engineer designs and develops connected devices and systems that collect and exchange data. This course may be useful for building a foundation in microcontroller programming, which is essential for IoT device development. The course's focus on using the ADC, generating PWM signals, and handling interrupts translates into useful skills for interfacing with sensors and actuators in IoT applications. The course's practical examples involving microcontroller configuration and programming may be useful for developing custom IoT solutions. Furthermore, the course may be useful for enabling communication between devices.
System Validation Engineer
A system validation engineer validates that a system or product meets its specified requirements and performs as intended. This course may be useful for understanding the architecture and functionality of microcontroller-based systems, which is essential for system validation. The course's hands-on projects involving PWM signal generation and ADC usage may give insights into how to validate the performance of control systems. The system validation engineer may find the course's examples of using timers and interrupts to be helpful for validating real-time behavior. The course’s discussion of project setup and libraries may be useful for reverse engineering.
Product Development Engineer
A product development engineer is involved in the process of bringing new products to market, from initial concept to mass production. This course helps develop skills in using microcontrollers, which are often at the heart of new electronic products. The course’s focus on hands-on projects, such as generating PWM signals and interfacing with ADCs, may be useful for prototyping and testing product designs. The course’s experience in setting up a low-cost electronics lab also assists in rapid prototyping. The product development engineer may find the discussion to be helpful in producing products that use event systems.
Test Engineer
A test engineer designs and implements tests to ensure the quality and reliability of products. This course may be useful for understanding how to test microcontroller-based systems. The course's focus on setting up a low-cost electronics lab may be useful for creating test fixtures. The course's projects involving PWM signal generation and ADC usage may be helpful for developing test procedures. Specifically, the course may be useful for evaluating embedded systems that use timers, clocks, and oscillators. The test engineer may find examples of using GPIO pins to be helpful.
Application Engineer
An application engineer works closely with customers to understand their needs and provide technical solutions using a company's products. This course gives prospective application engineers familiarity with a specific microcontroller family, the PIC32CM MC, which may be useful if their company uses these microcontrollers in their products. The course’s hands-on projects involving PWM signal generation and ADC usage may be useful for demonstrating the capabilities of the microcontroller. The course may be useful for understanding the technical documentation. The application engineer may find the course helpful for understanding how to use MPLAB IDE.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Microchip PIC32CM MC microcontroller for power electronics.
Provides practical guidance on programming 32-bit microcontrollers using the C language. It covers essential topics such as memory management, peripheral configuration, and interrupt handling. While not specific to the PIC32CM series, the concepts and techniques discussed are broadly applicable. This book useful reference for understanding the software aspects of microcontroller programming.
Provides a comprehensive overview of embedded systems architecture, covering topics relevant to microcontroller programming. It offers a deeper understanding of the underlying hardware and software interactions. While not specific to the PIC32, it provides valuable background knowledge for understanding the microcontroller's architecture and peripherals. This book is useful as additional reading to expand on the course material.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser