← Tüm makaleler

Mikrodenetleyicilere Giriş

AVR ve ARM mimarilerinin temelleri

Mikrodenetleyici Nedir?

Bu dersin sonunda şunları yapabileceksiniz: Bir mikrodenetleyicinin iç bileşenlerini (CPU, Flash, SRAM, periferaller) ve her birinin görevini açıklamak; MCU'yu genel amaçlı işlemciden ayıran özellikleri sıralamak; AVR, STM32 ve ESP32 ailelerini tanımak.

Bir Mikrodenetleyici (MCU), işlemci, bellek ve giriş/çıkış arabirimlerini tek bir çip üzerinde birleştiren küçük bir bilgisayardır. Mikrodenetleyiciler bir anlamda modern teknolojinin "gizli kahramanlarıdır" diyebiliriz. Bilgisayarınızın işlemcisi (CPU) devasa bir güç ve hız sunarken, bir mikrodenetleyici belirli bir görevi (örneğin bir termostatı kontrol etmek) en verimli şekilde yapmak için tasarlanmıştır.

{anecdote:İlk mikrodenetleyici 1971 yılında Intel tarafından üretildi — 4004 modeli yalnızca 2300 transistör içeriyordu.}

1. Bir Mikrodenetleyicinin Anatomisi

Bir MCU'yu sıradan bir işlemciden ayıran en büyük fark, "All-in-One" (Hepsi Bir Arada) yapısıdır. Bir bilgisayar oluşturmak için işlemciye harici RAM ve anakart bağlamanız gerekirken, MCU'da her şey tek bir silikon çip içindedir:

{
  "title": "MCU İç Yapısı",
  "subtitle": "CPU, bellek ve periferaller tek çipte — tüm birimler CPU'ya doğrudan bağlı",
  "size": "lg",
  "nodes": [
    { "id": "mem",  "label": "Bellek",       "sub": "Flash = program kodu · SRAM = çalışma belleği",  "color": "amber" },
    { "id": "cpu",  "label": "CPU",          "sub": "Komutları çalıştırır · birimleri koordine eder", "color": "blue"  },
    { "id": "peri", "label": "Periferaller", "sub": "GPIO · Timer · ADC · USART · SPI · I²C",         "color": "green" }
  ],
  "edges": [
    { "from": "mem",  "to": "cpu",  "forwardLabel": "komut getirme", "backwardLabel": "veri r/w"      },
    { "from": "cpu",  "to": "peri", "forwardLabel": "kontrol",       "backwardLabel": "durum / kesme" }
  ]
}

CPU (Merkezi İşlem Birimi): Beyin kısmıdır; komutları işler.

Hafıza (RAM ve Flash): Program kodları Flash bellekte tutulur, geçici veriler RAM'de işlenir.

Giriş/Çıkış (I/O) Pinleri: Sensörlerden veri almak veya motorları/LED'leri çalıştırmak için kullanılan fiziksel bacaklardır.

Zamanlayıcılar ve Sayaçlar: Hassas zamanlama gerektiren görevleri yönetir.

ADC (Analog-Dijital Dönüştürücü): Dış dünyadaki analog sinyalleri (sıcaklık, ışık, kuvvet, ivme vs.) dijital veriye çevirir.

2. Temel Avantajlar ve Neden Kullanılırlar?

Mikrodenetleyicilerin tercih edilme nedenleri sadece "küçük" olmaları değildir:

Düşük Güç Tüketimi: Çoğu MCU, tek bir pil ile yıllarca çalışabilir. Özellikle "Deep Sleep" (Derin Uyku) modları sayesinde enerji tasarrufu sağlarlar.

Gerçek Zamanlı İşleme: Kritik sistemlerde (örneğin bir aracın hava yastığı sistemi) kararların milisaniyeler içinde verilmesini sağlayan deterministik (öngörülebilir) bir yapıya sahiptirler.

Maliyet Etkinliği: Milyonlarca üretildikleri için birim maliyetleri çok düşüktür (bazı modeller birkaç senttir).

{anecdote:Genel amaçlı bir işlemci (CPU) yüksek işlem hacmi için optimize edilirken, MCU öngörülebilir ve zamanında tepki vermek için optimize edilir. İkisi farklı problemleri çözer.}

3. Kullanım Alanları

Mikrodenetleyiciler hayatın her yerindedir — çoğu zaman farkında bile olmayız:

Bir akıllı telefon kutusu bile içinde onlarca MCU barındırır: dokunmatik ekran kontrolcüsü, şarj yönetimi, parmak izi okuyucusu — hepsi ayrı birer mikrodenetleyicidir.

4. Popüler Mikrodenetleyici Aileleri

Bu dünyaya adım atmak istiyorsanız, en sık karşılaşacağınız isimler şunlardır:

ATMEL (AVR): Arduino kartlarının kalbi olan çiplerdir (Örn: ATmega328P).

STM32 (ARM Cortex-M): Endüstriyel projelerde çok popüler, yüksek performanslı ve modern çipler.

ESP32 / ESP8266: Dahili Wi-Fi ve Bluetooth özellikleri sayesinde IoT dünyasının kralıdır.

PIC: Microchip firması tarafından üretilen, sağlamlığıyla bilinen klasik bir seri.

Zaman zaman mikrodenetleyici programlama kavramı o dönemde en popüler olan modellerin ismiyle anılabilmektedir. 90'lı yıllar ve 2000'lerin başında "PIC programlama" diye anılırken günümüzde "Arm programlama" ya da "STM32 programlama" olarak anılabilmektedir. Konunun asıl isminin "mikrodenetleyici programlama" olduğunu bilmekte fayda var.

5. Mikrodenetleyicilerle Çalışmak

Mikrodenetleyicilerin nasıl geliştirildiği ve çalışma yapılarının temeli dijital elektronik ve işlemci mimarisi gibi konulara dayanır. Ancak programlamayı öğrenmek için tüm bunları bilmek zorunlu değildir. Programlama açısından kendi komut setini bilerek yapılacak işlere uygun kodları yazmak yeterlidir. Günümüzde işlemcilerin kendi komut setleri, yani assembly dili ile programlama yerine çoğunlukla C ve C++ gibi dillerde programlama tercih edilir. C dilinde yazılan kodlar "derleyici (compiler)" tarafından işlemcinin kendi makine kodlarına çevrilir. C dili daha yüksek seviyeli bir dil olduğundan projelerin yazımı ve organizasyonu daha kolaylaşır.

Buradan hareketle mikrodenetleyicilerle çalışmak için şunları öğrenmek önemlidir:

Tabi ki mikrodenetleyicilerin kullanımında bir de donanım tasarımı işin içine girer. Bu konularda farklı dersleri yine bu platformda bulabileceksiniz!

Geliştirme araçları ve C kodundan işlemciye uzanan yolu "Derleme Aşamaları" dersinde bulabilirsiniz!

{anecdote: C programlama dili öğrenmesi zor görülen bir dil olabilir ancak sürekli çalışma ve egzersizlerle bu mümkün! Mikrodenetleyici çalışmalarından ayrı bir şekilde süreki C diline çalışmaya devam etmelisiniz!}

İlk Bakış: Register Seviyesinde Kod

Mikrodenetleyici programlamanın özü şu iki satırda gizlidir:

DDRB  |= (1 << PB5);   /* PB5 pinini çıkış olarak ayarla */
PORTB |= (1 << PB5);   /* PB5'i HIGH yap — LED yanar    */

DDRB ve PORTB birer register'dır — işlemcinin adres uzayındaki sabit bellek konumları. Bu tek satır bir bellek adresine değer yazar ve donanım anında tepki verir. Bu dersin devamındaki her ders bu iki satırın arkasındaki "neden"i açıklar: register nedir, bit nasıl set edilir, GPIO nasıl çalışır.

Özet

Bileşen Görevi
CPU Komutları işler, program akışını yönetir
Flash Program kodunu kalıcı olarak saklar
RAM Çalışma zamanı değişkenlerini geçici tutar
I/O Pinleri Sensörler ve aktüatörlerle fiziksel bağlantı sağlar
Zamanlayıcı Hassas zamanlamalı olayları yönetir
ADC Gerçek dünya analog sinyallerini dijitale çevirir
Kurslara göz at →