Mikrodenetleyici Donanım Temelleri
Mikrodenetleyici Donanım Temelleri
Mikrodenetleyiciler, giriş-çıkış işlemlerini, veri işleme süreçlerini ve haberleşmeyi yönetmek için CPU, bellek, giriş/çıkış portları, zamanlayıcılar ve haberleşme arabirimleri gibi bileşenlerden oluşur. Mikrodenetleyici donanımını anlamak, gömülü sistemler ve elektronik projeler geliştirmek için temel bir adımdır.
Bu bölümde, mikrodenetleyicinin temel donanım bileşenlerini detaylı şekilde inceleyeceğiz.
1. Mikrodenetleyici Mimari Yapısı
Mikrodenetleyiciler, CPU, bellek, giriş/çıkış portları, zamanlayıcılar ve haberleşme modüllerini içeren entegre devrelerdir. Temel olarak iki mimari kullanılır:
a) Von Neumann Mimarisi
- Tek bir bellek veri yolu kullanır (program ve veri belleği aynı yolu paylaşır).
- İşlemci, program kodu ve verileri aynı bellekten okur.
- Daha düşük maliyetli ancak yavaş veri işleme hızına sahip olabilir.
- Kullanım Alanı: Basit mikrodenetleyiciler, küçük gömülü sistemler.
📌 Örnek: Atmel ATmega serisi, bazı PIC mikrodenetleyiciler.
b) Harvard Mimarisi
- Program ve veri belleği ayrı yollar üzerinden çalışır.
- Aynı anda hem program kodu hem de veri işlenebilir, bu da hız kazandırır.
- Daha karmaşık ve güçlü sistemler için uygundur.
- Kullanım Alanı: Gelişmiş mikrodenetleyiciler, ARM tabanlı sistemler.
📌 Örnek: ARM Cortex-M serisi, MSP430, STM32 mikrodenetleyicileri.
2. Merkezi İşlem Birimi (CPU)
Mikrodenetleyicinin beyni olan CPU (Central Processing Unit – Merkezi İşlem Birimi), aritmetik ve mantıksal işlemleri gerçekleştirir ve sistemin çalışmasını kontrol eder.
- ALU (Aritmetik Mantık Birimi): Matematiksel ve mantıksal işlemleri yapar.
- Kontrol Birimi: Talimatları işler ve sistemin çalışmasını yönetir.
- Kayıtlar (Registers): Geçici veri saklama alanlarıdır ve işlem hızını artırır.
📌 Örnek: AVR işlemciler 8-bit CPU kullanırken, ARM Cortex-M serisi 32-bit CPU kullanır.
3. Bellek Yapısı (RAM, ROM, EEPROM)
Bellek, mikrodenetleyicinin veri saklama ve kod çalıştırma işlevleri için hayati öneme sahiptir.
a) RAM (Random Access Memory – Rastgele Erişimli Bellek)
- Geçici veri saklama alanıdır (geçici değişkenler, yığın bellek vb.).
- Güç kesildiğinde veriler silinir.
- SRAM ve DRAM türleri vardır (mikrodenetleyiciler genellikle SRAM kullanır).
📌 Örnek: ATmega328 mikrodenetleyicisi 2 KB SRAM içerir.
b) ROM (Read-Only Memory – Salt Okunur Bellek)
- Program kodlarının saklandığı kalıcı bellektir.
- Mikrodenetleyiciler genellikle Flash ROM kullanır.
- Program güncellemesi yapılabilir.
📌 Örnek: Arduino'nun kullandığı ATmega328, 32 KB Flash bellek içerir.
c) EEPROM (Electrically Erasable Programmable ROM)
- Elektrikle silinebilen ve tekrar yazılabilen bir bellek türüdür.
- Sensör kalibrasyonu gibi uzun süre saklanması gereken verileri tutar.
📌 Örnek: ATmega328 1 KB EEPROM içerir.
4. Giriş ve Çıkış Portları (I/O Pins)
Mikrodenetleyiciler, sensörler, butonlar, motorlar, ekranlar gibi dış bileşenlerle dijital ve analog giriş/çıkış portları üzerinden iletişim kurar.
a) Dijital Giriş/Çıkış (GPIO - General Purpose Input/Output)
- Dijital sinyallerle çalışır (0 veya 1 – LOW/HIGH).
- Sensör okumak veya LED kontrol etmek için kullanılır.
- Pull-up veya pull-down dirençleri ile kararlı hale getirilebilir.
📌 Örnek: Arduino’da pinMode(), digitalRead(), digitalWrite() fonksiyonları kullanılır.
pinMode(2, INPUT); // Dijital giriş pini (buton)
pinMode(13, OUTPUT); // Dijital çıkış pini (LED)
b) Analog Giriş (ADC - Analog to Digital Converter)
- Analog sinyalleri sayısal değerlere dönüştürür.
- Potansiyometre, sıcaklık sensörü gibi analog girişleri okumak için kullanılır.
📌 Örnek: ATmega328, 10-bit ADC’ye sahiptir (0-1023 değer aralığı).
int deger = analogRead(A0); // A0 pininden analog veri oku
c) PWM Çıkışı (Pulse Width Modulation)
- Dijital sinyallerle analog benzeri çıkış üretir.
- Motor hız kontrolü, LED parlaklık ayarı gibi uygulamalarda kullanılır.
📌 Örnek: Arduino’da analogWrite() ile PWM çıkışı sağlanır.
analogWrite(9, 128); // 50% PWM sinyali üret
5. Zamanlayıcılar ve Kesme (Interrupts) Mekanizması
a) Zamanlayıcılar (Timers)
- Gecikme ve frekans tabanlı işlemleri yönetmek için kullanılır.
- PWM sinyalleri ve sayaç işlemleri zamanlayıcılarla gerçekleştirilir.
📌 Örnek: ATmega328’de Timer0, Timer1, Timer2 zamanlayıcıları bulunur.
delay(1000); // 1 saniyelik gecikme
b) Kesme (Interrupts)
- Mikrodenetleyici normal işleyişi durdurup belirli bir görevi çalıştırabilir.
- Örneğin, butona basıldığında anında işlem yapmak için kullanılır.
📌 Örnek: attachInterrupt() fonksiyonu ile Arduino'da kesme kullanımı.
void ISR_Buton() {
digitalWrite(13, !digitalRead(13));
}
void setup() {
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), ISR_Buton, FALLING);
}
void loop() {}
6. Haberleşme Modülleri
Mikrodenetleyiciler, dış donanımlarla haberleşmek için farklı protokoller kullanır:
- UART (Seri Haberleşme – TX/RX)
- I2C (Çoklu cihaz haberleşme – SDA/SCL)
- SPI (Hızlı seri haberleşme – MOSI/MISO/SCK/SS)
📌 Örnek: I2C kullanarak sıcaklık sensörü okuma.
Wire.begin();
Wire.requestFrom(0x48, 2);
Sonuç
- Mikrodenetleyicinin temel bileşenleri CPU, bellek, giriş/çıkış portları ve zamanlayıcılardır.
- Giriş/Çıkış portları sensörler ve motorlar gibi donanımlarla iletişimi sağlar.
- Haberleşme modülleri farklı cihazlarla bağlantı kurmamıza olanak tanır.
- Kesme ve zamanlayıcı mekanizmaları ile hassas zamanlama kontrolü yapılabilir.
Bu bilgileri daha iyi anlamak ve uygulamak için şu siteleri inceleyebilirsiniz:
- https://learn.sparkfun.com/search/results?term=microcontroller
- https://www.microchip.com/design-centers/microcontrollers/understanding-gpios
- https://www.embedded.com/search?text=microcontroller
- https://www.elprocus.com/?s=microcontroller
Yorumlar
Yorum Gönder