Arhitecturi Embedded & Sisteme de Calcul

Microcontrolere: Arhitectură, Memorie & Periferice

Cum funcționează un calculator complet pe un singur cip de siliciu: diferența dintre MCU și MPU, harta memoriei (Flash/SRAM/EEPROM) și modularea în durată a impulsurilor (PWM).

1. Microcontroler (MCU) vs. Microprocesor (MPU)

Un microprocesor clasic (cum este cel din laptop sau Raspberry Pi) este doar o unitate de calcul brută: nu funcționează fără cipuri externe de memorie RAM DDR, stocare SSD și controllere de alimentare, rulând un sistem de operare complex precum Linux. În schimb, un microcontroler (MCU) integrează pe o singură pastilă de siliciu tot ce are nevoie: procesor, memorie Flash, SRAM, convertoare analog-digitale (ADC) și timere hardware, pornind codul instantaneu în microsecunde (Bare-Metal).

AVR RISC • 16 MHz • 5V Logic
Microchip ATmega328P (Arduino Uno)

Memorie: 32 KB Flash, 2 KB SRAM, 1 KB EEPROM. Arhitectură Harvard clasică pe 8 biți. Extrem de tolerant la erori electrice (suportă 5V curat și 20mA per pin), ideal pentru începători.

Simulator Interactiv: Modulația PWM (Pulse Width Modulation)

Timer Hardware 490 Hz

Microcontrolerele digitale nu pot emite tensiuni analogice intermediare (cum ar fi 2.5V). În schimb, comută ultrarapid între 0V și 5V; modificând procentul de timp activ (Duty Cycle), sarcina resimte o tensiune medie proporțională.

Factor de Umplere (Duty Cycle):50% (128 / 255)
Osciloscop Digital Semnal GPIO (Timer PWM)T = 2.04 ms (f = 490 Hz)
Tensiune Medie Rezultată (V_eff)
2.50 V
Efect pe LED / Motor:

2. Triada Memoriei: Flash vs. SRAM vs. EEPROM

Memoria Flash (ROM Non-Volatil)
Stocare Cod & Constante

Aici se compilează instrucțiunile mașină (.hex / .bin). Datele rămân intacte după deconectarea alimentării. Cicluri de scriere: ~10.000 cicluri.

Memoria SRAM (RAM Volatil)
Variabile, Heap & Stack

Memorie ultrarapidă în care rulează variabilele tale. La oprirea alimentării, conținutul dispare instantaneu. Dacă depășești cei 2 KB pe Arduino, apare fenomenul de Stack Overflow.

Memoria EEPROM (NVRAM)
Setări & Calibrări Senzori

Poate fi ștearsă și scrisă octet cu octet. Ideală pentru stocarea parolelor Wi-Fi, pragurilor de temperatură sau contorilor de ore de funcționare (100.000 cicluri).

3. Cod Model: Control PWM Hardware

hardware_pwm_timer.ino
// Control PWM Hardware cu timer intern (Fara functii blocante delay())
const int pwmPin = 9; // Pin cu capabilitate Timer PWM

void setup() {
  pinMode(pwmPin, OUTPUT);
}

void loop() {
  // Generare semnal analogic simulat (0 - 255 pentru 8-bit PWM)
  for (int duty = 0; duty <= 255; duty += 5) {
    analogWrite(pwmPin, duty); // Modifica factorul de umplere (Duty Cycle)
    delay(20);
  }
  for (int duty = 255; duty >= 0; duty -= 5) {
    analogWrite(pwmPin, duty);
    delay(20);
  }
}