Please, put your comments for further improvement/correction of Fig-1A. The diagram is prepared to present to the 3rd year level undergraduate students of Electrical Engineering in their Microcontroller Interfacing and System Design course.
Figure-1A:
Latest/Edited Block Diagram based on the comments of posters:
Figure-1B
(1) M10 (Module-10): The ATmega328P MCU of the Arduino UNO Board runs at 16 MHz clock frequency. If desired, it can be operated by an 8 MHz internal oscillator (M11). Using internal Clock Prescaler Divider (not shown in Fig-1), the MCU can be run at 31250 Hz to 16 MHz.
(2) M7 – M8: The internal electronics world of the MCU are divided into Digital Electronics and Analog Electronics These modules have their own power supply (DAVcc and AVcc which are externally shorted (as shown in Fig-1) in the Arduino UNO Board. Two GND pins are internally shorted by the MCU chip.
(3) M9: When power switch is turned on, 5 V arrives at Vcc pin. Voltage at RESET/-pin (voltage across C1, VC1) begins to rise. The MCU remains at RESET state until VC1 crosses 1.7 V (VPOT, Power-on Reset Threshold Voltage).
(4) M16E: PORTB consists of six 1-bit data latch named as PB0 – PB5. They are connected with six IO (Input or Output) lines. IO lines are used to connect input device (switch) and output device (LED). Direction of an IO line can be input or output. An IO line originates from a physical pin of the MCU and terminates at the hole (Fig-1) of the edge connector of UNO Board. The holes are named as DPin-0 to DPin-8; DPin-A0/14 to DPin-A5/19. (DPin stands for Digital Pin.)
The direction of an IO line is set as INPUT or OUTPUT by executing the following functions:
pinMode(DPin, direction); //DPin = 0–13, A0/14–A5/19; direction = INPUT, INPUT_PULLUP, OUTPUT
pinMode(8, INPUT); //DPin-8 will work as input line with external pull-up or pull-down resistor.
pinMode(8, INPUT_PULLUP); //DPin-8 will work as input line with internal pull-up resistor, Rip (Fig-1.9)
pinMode(8, OUTPUT); //now, DPin-8 will work as output line
A HIGH (5 V) or LOW (0 V) can be written on a DPin by executing the following functions:
digitalWrite(DPin, value); //value = HIGH (5 V) or LOW (0 V)
digitalWrite(8, HIGH); //HIGH means 5 V is asserted on DPin-8
digitalWrite(8, LOW); //LOW means 0V is asserted/written on DPin-8
1-bit data (HIGH or LOW) from an input line can be read by executing the following functions:
bool y = digitalRead(DPin); //y holds logic value of DPin line
bool y = digitalRead(8); //
(5) M1: 8-bit AVR (Advanced Virtual RISC Microprocessor; where, RISC stands for Reduced Instruction Set Computer and Microprocessor is abbreviated as MPU. It takes command/data from user via keyboard, modifies data in a way user wants, sends result to user via display unit.
(6) M2: It is an 8-Bit Arithmetic and Logic Unit. It can add two 8-bit data at a time. If there is a carry bit due to addition, then the carry bit is saved in the Carry Flag (C) of the ALU Unit.
(7) M4: This is non-volatile Flash Memory (also known as Code Memory or Program Memory). A non-volatile memory does not loose code/data when power supply is disconnected. It holds the binary codes of the application program. The capacity is 32 Kbytes (32x1024 bytes).
(8) M5: This is non-volatile EEPROM (also called Data Memory) memory and holds critical data like password, bank balance etc. EEPROM stands for “Electrically Erasable Electrically Programmable Random Access Read Only Memory”. The size is 1 Kbytes (1024 bytes).
(9) M6: It is volatile RAM Memory and is used for the temporary storage of variables. RAM stands for “Random Access Read and Write Memory”. The size is 2 Kbytes.










