Description
Morgan Introduction to Embedded Systems Using ANSI C and the Arduino Development Environment by David Russell
Many electrical and computer engineering projects involve some kind of embedded system in which a microcontroller sits at the center as the primary source of control._x000D__x000D_The recently-developed Arduino development platform includes an inexpensive hardware development board hosting an eight-bit ATMEL ATmega-family processor and a Java-based software-development environment. These features allow an embedded systems beginner the ability to focus their attention on learning how to write embedded software instead of wasting time overcoming the engineering CAD tools learning curve. The goal of this text is to introduce fundamental methods for creating embedded software in general, with a focus on ANSI C. The Arduino development platform provides a great means for accomplishing this task. As such, this work presents embedded software development using 100% ANSI C for the Arduino's ATmega328P processor._x000D__x000D_We deviate from using the Arduino-specific Wiring libraries in an attempt to provide the most general embedded methods. In this way, the reader will acquire essential knowledge necessary for work on future projects involving other processors. Particular attention is paid to the notorious issue of using C pointers in order to gain direct access to microprocessor registers, which ultimately allow control over all peripheral interfacing._x000D_ Table of contents :- _x000D_
Introduction_x000D_
ANSI C_x000D_
Introduction to Arduino_x000D_
Embedded Debugging_x000D_
ATmega328P Architecture_x000D_
General-Purpose Input/Output_x000D_
Timer Ports_x000D_
Analog Input Ports_x000D_
Interrupt Processing_x000D_
Serial Communications_x000D_
Assembly Language_x000D_
Non-volatile Memory_x000D_