Welcome to the repository for my assignments in the subject "Embedded System Design." This course, instructed by Professor McClure from the Department of Electrical, Computer, and Energy Engineering, delves into the fundamentals of hardware and firmware design for embedded systems. Throughout this course, I have acquired a diverse set of skills and knowledge, which include:
- Processor Selection: Understanding the criteria and considerations for selecting an appropriate processor for embedded system development.
- Power Delivery and Decoupling: Knowledge of power delivery techniques and decoupling methods to ensure reliable operation of embedded systems.
- Clocks and Resets: Familiarity with clocking and resetting mechanisms and their role in system synchronization and initialization.
- Assembly Programming: Proficiency in low-level assembly programming for embedded systems.
- Embedded C Programming: Competence in programming embedded systems using the C programming language.
- Incremental Development (HW, SW): Experience in iterative hardware and software development processes for embedded systems.
- Test Equipment and Instrumentation: Utilizing various test equipment and instrumentation, such as oscilloscopes, multimeters, and logic analyzers, for debugging and validation.
- Debugging Techniques: Understanding and applying effective debugging techniques for identifying and resolving software and hardware issues.
- Data Sheets: Ability to interpret and utilize data sheets provided by microcontroller manufacturers for hardware understanding and programming requirements.
- Bus Cycles, Transaction Types, Timing Diagrams: Understanding communication protocols, timing requirements, and transaction types through bus cycles and timing diagrams.
- Memory Maps and Chip Select Logic: Managing memory and controlling external devices through memory mapping and chip select logic.
- Serial Interfaces (RS-232, I2C, SPI): Implementing popular serial communication interfaces in embedded systems.
- I/O Port Pin Driver Circuits: Knowledge of I/O port pin driver circuits, including pull-up/pull-down resistors and open-drain configurations.
- In-Circuit Programming: Ability to program microcontrollers without removing them from the circuit using in-circuit programming techniques.
- Device Drivers: Developing device drivers for interfacing with various peripherals and external devices.
- Interrupts and ISR's: Understanding interrupts and writing interrupt service routines (ISR's) for time-critical events in embedded systems.
- Memory Mapped I/O: Implementing memory-mapped I/O for accessing and controlling peripheral devices.
- Data Conversion (DAC's, ADC's): Understanding and utilizing digital-to-analog converters (DAC's) and analog-to-digital converters (ADC's) in embedded systems.
- Passive Components: Knowledge of passive components such as resistors, capacitors, and inductors, and their applications in embedded system design.
- Design Reviews and Trade-Offs: Conducting design reviews and making trade-offs to meet system requirements and constraints.
- Entrepreneurship: Understanding the entrepreneurial aspects of embedded system design, including product development and commercialization considerations.
This repository contains a collection of assignments that demonstrate my understanding and application of the concepts covered in the course. Each assignment is accompanied by detailed descriptions, source code, and relevant documentation. Feel free to explore the individual assignment folders for more information.
As a culmination of the course, I have completed a significant final project. This project extends the base microcontroller board developed earlier in the course and showcases my comprehensive knowledge and skills acquired throughout the semester. Detailed documentation and source code for the final project can be found in the corresponding folder.
If you have any questions or would like to discuss any aspect of this repository, please feel free to contact me at [email protected]
Thank you!
Kiran Jojare