From ccf2d029feb19c5c976807d29cc78fcb9d06e981 Mon Sep 17 00:00:00 2001
From: Sam Anthony <sam@samanthony.xyz>
Date: Mon, 13 Oct 2025 13:37:27 -0400
Subject: midterm report: firmware

---
 midterm_report/midterm_report.tex | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

(limited to 'midterm_report/midterm_report.tex')

diff --git a/midterm_report/midterm_report.tex b/midterm_report/midterm_report.tex
index 8c7e3f0..1e358f1 100644
--- a/midterm_report/midterm_report.tex
+++ b/midterm_report/midterm_report.tex
@@ -203,7 +203,21 @@ TODO
 
 \section{Firmware}
 
-TODO
+Firmware is the program that runs on the PIC microcontroller.
+It is responsible for interacting with the peripherals and transforming data from the CAN bus into output signals for the gauges.
+
+The firmware is written in C for Microchip's XC8 compiler.
+
+Each peripheral---MCP2515, 25LC160C, and MCP4912---has a corresponding translation unit.
+So far, I have written and tested the MCP4912 DAC unit.
+The 25LC160C and MCP2515 units are mostly written but still require more testing.
+
+The firmware must also communicate with a PC via USB.
+The Microchip MLA USB library is employed for this purpose \cite{mla_usb}.
+However, the USB code uses a lot of the PIC's flash memory.
+Some system test builds already fail to link due to lack of space.
+As a result, USB may have to be dropped from the project, and another method will have to be devised for programming the user configuration into the EEPROM.
+This is a major disappointment, but I will have to work around it seeing as the hardware has already been finalized.
 
 
 \section{Software}
-- 
cgit v1.2.3

