ECE 443 – Distributed Processing and Control Networks (Fall 2022)


All assignments are due at the start of class on the specified due date. Late assignments will not be accepted without prior approval. Each assignment should have your name, the course number, the date, and the assignment designation (e.g., HW1, etc.). Attendance is mandatory. Students who miss five or more class periods will automatically receive a final grade of F.

Electronic Submission

Assignments will specify a particular submission format. These are generally either (a) a single PDF file and/or (b) a zip archive. PDF submisions should be uploaded as a single PDF file to the appropriate assignment in Canvas. MPLAB projects and other submissions involving binary files should be shared via your UI OneDrive account as a single zip file using the following naming convention (all lowercase):

For example, would be shared from Joe Vandal's OneDrive account, representing his MPLAB project folder for Project 1 in ECE443. Assignment designators are "h#" for homeworkor "p#" for projects.


Homework and Quizzes (10%)

Homework will be collected and graded throughout the semester. Students may work together on homework and should check their answers against the posted solutions. There may also be unannounced quizzes periodically, perhaps even daily! It is your responsibility to make sure you are prepared for every class.

  1. Aug 29  - Develop a software system (see ECE 341 Lab 4) on the ECE 341 Lab Platform that toggles LEDA and LEDB at different intervals, depending upon buttons 1 and 2 and specified as follows : No buttons pressed - both LED off; only BTN1 - LEDA toggles every 10 ms, LEDB every 15 ms; only BTN2 - LEDA every 20 ms, LEDB every 5 ms; both buttons - both LED every 10 ms. Capture appropriate waveforms using the logic analyzer and submit as a single PDF file with a one paragraph report summarizing your experience. The PDF is submitted via Canvas. No need to share the MPLAB project.
  2. Sep 2 - Download the FreeRTOS zip archive from the FreeRTOS section of the 443 Handouts directory and download the "blinky" repository into the "Projects" folder and follow the instructions on packaging your project below. Execute the MPLAB project and observe the behavior on LEDA and LEDB: What does this “instrumentation” say about the task execution behavior? Following the naming instructions under "Electronic Submission" above, submit  a single PDF file summarizing your findings via Canvas.
  3. Sep 9 - Dr. J can think of three ways that a FreeRTOS task can pass data to another task: a queue, a stream (or message) buffer, and shared memory (e.g., global variables). Write a brief paragraph for each method discussing the pros and cons.
  4. Sep 16 - For each of the following, discuss the pros and cons compared to the alternatives: Task Notifications, Software Timers, and Event Groups.
  5. Sep 21 - CRC calculation
  6. Oct 5 - Download the CAN repository into your FreeRTOS "Projects" folder and run the demo. Use Digilent Waveforms to capture the LED behavior and CAN message exchange by monitoring CAN1 RX on Pin 1 on connector JF on the Cerebot board. Please submit via Canvas a PDF with your captured waveforms. No discussion required - unless you encountered a problem!
  7. Oct 30 - Wireshark. Upload a PDF to Canvas by 10 pm PT
  8. Nov 9 - Download the tcp_timer repo as a zip file and build in the Projects folder under FreeRTOSv202104.00. Configure PuTTY appropiately and connect via TCP to the PIC32. Upoload a single PDF to Canvas by 10 pm showing Wireshark capture and the PuTTY window during execution.
  9. Nov 29 - Download the file from the Handouts/MQTT folder of my OneDrive, make the modifications specified in main.c, build, and run. Upload a single PDF to Canvas by 10 pm of a screenshot of the HiveMW web client with your subscription data published by the PIC32.

Projects (65%)

There will be projects throughout the semester, selected to complement the lectures. Students are to work independently unless specified otherwise, and contact the instructor if they have questions. Project packaging instructions.

  1. Sep 6 - Project 1. Code due by10 pm PT. Report (single PDF file!) due before the next class period
  2. Sep 12 - Project 2. Code due by 10 pm PT.  Report (single PDF file!) due before the next class period
  3. Sep 19 - Project 3. Share project by 10 pm PT.  Report uploaded to Canvas (single PDF file!) before the next class period, followed by a demo in the lab
  4. Sep 30 - Project 4. Share project by 10 pm PT.  Report uploaded to Canvas (single PDF file!) before the next class period
  5. Oct 10 - Project 5. Share your project folder via OneDrive by 10 pm PT. No report, Doxygen, or Tracealyzer requested! :-)  Demo in lab during class on Oct 12.
  6. Nov 7 - Enhancements to Web-Vending Machine. Demo in lab during class
  7. Nov 15 - Remote Control via TCP. Demo in lab during class. Share code via OneDrive beforehand.
  8. Dec 9 - Remote Monitoring. Demo in lab during class. Share code via OneDrive beforehand.

Exams (25%)

There will be two exams: a midterm and a comprehensive final, weighted equally. Handwritten material permitted, but no printed material unless otherwise specified, i.e., open notes/closed "book".  Please bring your own paper, pencils, and an eraser to each exam.

  1. Oct 17. Exam topics
  2. Final Exam. Tues, Dec 13, 12:45-2:45 pm, ECE conference room. Exam topics


Course grades will be available through Canvas. Final grades will be calculated using the traditional scale (90%=A, 80%=B, etc.).


Available on OneDrive.

Reference Material