In this lab, I implemented a Finite State Machine to simulate the functions of a toaster oven. Following the state machine diagram and figuring out how to implement the logic into the code was challenging and greatly helped my understanding of how microcontrollers work in everyday appliances and uses. It also furthered my understanding of working with several structs and enums and using them to implement a state machine. I think this lab was very important in preparing me for future computer engineering labs where I may have to implement state machines again on different kinds of hardware.
This lab was tough to get started on for me because of how many instructions there were, and it admittedly got kind of overwhelming. I started by reading all the requirements and funcionality of the toaster oven and our code, then read through the sections in between, before reaching the FSM diagram. I looked at the diagram for a while and frequently went back to the diagram and beginning requirements while writing the code. I probably read the whole manual over at least 5-10 times. The previous lab prepared me well for working with ISRs and the hardware, so I felt comfortable writing the code for the most part. Writing the state machine function was probably the hardest part. It took a lot of tweaking and debugging to get the logic right, but the end result was satisfying to achieve. If I were to approach it differently, I would probably plan out my code better before writing any of it by choosing how I wanted to block and order my code systematically.
The lab ended up going well and my toaster oven ran just as I had wanted it to and how it was outlined in the manual. I probably spent around 15 hours on this lab, but I think a lot of the time was spent reading and debugging the hardware. This lab was probably one of the most important ones in this class, and it combined everything I learned so far in this class. The points distribution was fine except for the extra credit. It seemed like a lot of work for just one point, so this time I didn't do it, even though I normally do them.