1) Co to jest mikrokontroler?
Mikrokontroler to „komputer w jednym układzie scalonym”, zaprojektowany do sterowania urządzeniami. W odróżnieniu od komputera PC, mikrokontroler ma wbudowane: pamięć programu, pamięć danych oraz zestaw peryferiów (np. timery, PWM, ADC, UART), które pozwalają bezpośrednio sterować światem fizycznym: diodami, silnikami, czujnikami, wyświetlaczami.
2) AVR – czym się wyróżnia?
AVR to rodzina 8-bitowych mikrokontrolerów (historycznie Atmel, dziś Microchip), bardzo popularna w edukacji i prostych projektach embedded. Ich mocną stroną jest prostota, przewidywalność działania, dobre narzędzia (GCC-AVR, avrdude) oraz ogromna baza przykładów.
Typowe cechy AVR (w praktyce)
- 8-bitowe CPU – operacje na bajtach, proste i szybkie sterowanie I/O.
- Architektura Harvard – osobna pamięć dla programu i danych (szybszy dostęp).
- RISC – prosty zestaw instrukcji, wiele instrukcji wykonuje się w 1 cyklu.
- Rejestry I/O – sterowanie pinami i peryferiami przez zapis/odczyt rejestrów.
3) „Co siedzi w środku” – najważniejsze bloki
| Blok | Co robi? | Dlaczego to ważne w kursie? |
|---|---|---|
| CPU | Wykonuje instrukcje programu (pobierz → wykonaj → przejdź dalej). | Od tego zależy logika programu, pętle, warunki, reakcja na zdarzenia. |
| FLASH | Pamięć programu – tu znajduje się Twój kod po wgraniu HEX. | Wyjaśnia, skąd się bierze plik HEX i dlaczego program „zostaje” po odłączeniu zasilania. |
| SRAM | Pamięć danych – zmienne w czasie działania programu. | Tu żyją Twoje zmienne, bufory i wyniki obliczeń. |
| EEPROM | Pamięć nieulotna danych (konfiguracje, licznik, ustawienia). | Przydatna, gdy coś ma przetrwać restart (zrobimy to w dalszych projektach). |
| GPIO | Piny wejścia/wyjścia – sterowanie LED, odczyt przycisków itd. | To baza pierwszych lekcji (LED, przyciski, RGB, 7-seg). |
| Timery / PWM | Odmierzanie czasu i generowanie sygnałów PWM. | Klucz do „porządnych” opóźnień, regulatora jasności, dźwięku, itd. |
| ADC | Przetwornik analogowo-cyfrowy – pomiar napięć z czujników. | Wejście w świat czujników i pomiarów (później lekcja ADC). |
4) ATmega328P – dlaczego akurat on?
ATmega328P to jeden z najpopularniejszych AVR – znany z Arduino UNO, ale my w tym kursie pracujemy „bliżej metalu”,
czyli bez warstwy Arduino, bez gotowych funkcji typu digitalWrite().
Dzięki temu rozumiesz, co naprawdę dzieje się w układzie i jak pisać kod na poziomie rejestrów.
Co będziemy robić na ATmega328P?
- GPIO: LED, przyciski, logika sterowania
- Timery: precyzyjne odmierzanie czasu, przerwania
- PWM: regulacja jasności, dźwięk
- Wyświetlacze: 7-segment (1 cyfra i multipleks)
- ADC: pomiar napięcia, proste czujniki
5) Podstawy: jak mikrokontroler „myśli” (cykl pracy)
Mikrokontroler wykonuje instrukcje w pętli: pobiera kolejną instrukcję z pamięci programu (FLASH), wykonuje ją w CPU i przechodzi do następnej. „Reakcje na świat” realizujemy przez:
- odczyt wejść (np. stan przycisku),
- zapis na wyjścia (np. LED ON/OFF),
- przerwania (zdarzenie wywołuje kod natychmiast),
- timery (czas i PWM).
_delay_ms() są OK na start, ale docelowo będziemy przechodzić na timery i przerwania,
bo dają kontrolę i nie blokują programu.
6) Mini-powtórka: systemy liczbowe w elektronice
W embedded bardzo często zapisujemy wartości w systemie szesnastkowym (HEX), bo ładnie mapuje się na bity i bajty. Przykład: bajt ma 8 bitów, więc zakres to 0–255 (czyli 0x00–0xFF).
// Przykłady zapisów tej samej wartości:
255 // dziesiętnie
0xFF // szesnastkowo
0b11111111 // binarnie (dla czytelności)
7) Sprawdź się (krótki quiz)
- Wymień 3 różnice między mikrokontrolerem a komputerem PC.
- Co oznacza architektura Harvard w kontekście pamięci?
- Do czego służą GPIO?
- Dlaczego HEX jest tak często używany w embedded?
- Jakie ma napięcie zasilania (zakres)?
- Ile ma pamięci FLASH i SRAM?
- Jak nazywają się porty I/O?