ATMEGA328P Mikrodenetleyici Hakkında
ATmega328P, AVR geliştirilmiş RISC mimarisine dayanan, düşük güç tüketimli bir CMOS 8 bit mikrodenetleyicidir. Çip, Atmel Corporation (Microchip Technology) tarafından geliştirilmiştir. 20 MHz saat hızına, 32 KB flash belleğe, 16 bit zamanlayıcıya ve 23 programlanabilir I/O hattına sahiptir. Genellikle Arduino kartlarında ve diğer mikrodenetleyici tabanlı projelerde kullanılır.
ATMEGA328P Özellikleri
- Yüksek performanslı, düşük güç tüketimli AVR 8 bit mikrodenetleyici;
- Gelişmiş RISC Mimarisi;
- Yüksek dayanıklılığa sahip kalıcı bellek segmenti;
- Güç açıldığında sıfırlama ve programlanabilir voltaj düşüşü algılama;
- Dahili olarak kalibre edilmiş osilatör;
- Harici ve dahili kesme kaynakları;
- Altı uyku modu: Boşta, ADC Gürültü Azaltma, Güç Tasarrufu, Kapatma, Bekleme ve Uzatılmış Bekleme.
ATMEGA328P Parametreleri
- Flash bellek kapasitesi: 32 KB
- SRAM: 2 KB
- EEPROM bellek kapasitesi: 1 KB
- Saat frekansı: 20 MHz
- Arayüz türü: I2C, SPI, USART
- Besleme gerilimi min: 1,8 V maks: 5,5 V
- Besleme Gerilimi Yüzey Montajlı Cihazlar: Yüzey Montajlı
- Paket Türü: PDIP/TQFP
- Pin sayısı: 28-PDIP, 32-TQFP
- Çalışma sıcaklığı aralığı: -40°C ila +85°C
- Giriş/Çıkış Hatları: 23
- ADC giriş sayısı: 8
- 8 bit Zamanlayıcı/Sayaç: 2
- 16 bit Zamanlayıcı/Sayaç: 1
- PWM: 6 kanal
- Programlama yöntemi: ISP, IAP, H/PV
- Simülasyon yöntemi: debugWIRE
ATMEGA328P Pin Dizilişi
ATMEGA328P yongası, her biri dijital giriş veya çıkış olarak yapılandırılabilen 28 adet genel amaçlı giriş/çıkış (GPIO) pini içerir.

ATMEGA328P Paketi
ATmega328P, PDIP (Plastik Çift Sıralı Paket), TQFP (İnce Dörtlü Düz Paket) ve QFN (Dörtlü Düz Kurşunsuz Paket) gibi çeşitli paket seçenekleriyle sunulmaktadır. ATmega328P mikrodenetleyici bağlamında, "P" harfi yonganın paket türünü ifade eder. Dolayısıyla burada "P" harfi özellikle PDIP paketini belirtir.

ATMEGA328P Blok Şeması

ATMEGA328P'ye Arduino Bootloader'ı Nasıl Yazılır?
İnternetten satın alınan Arduino geliştirme kartları BootLoader ile programlanmıştır; bu sayede programları yüklemek için doğrudan Arduino IDE'yi kullanabilirsiniz.
Ancak, yeni bir ATMEGA328P Mikrodenetleyicide BootLoader bulunmadığından, programı yüklemek için Arduino IDE doğrudan kullanılamaz ve program yalnızca ICSP aracılığıyla programlanabilir.
Geliştirme için Arduino IDE'yi kullanabilmek amacıyla MCU için BootLoader'ı kendimiz programlamamız gerekir.
Gerekli Malzemeler
- ATmega328P;
- 16 MHz kristal osilatör;
- 22 pf kondansatör*2;
- 10 K direnç;
- Bir Arduino geliştirme kartı (Uno veya Nano).

Süreç
- Arduino Uno'ya ArduinoISP programını yükleyin;
- ATmega328P'yi Arduino Uno'ya bağlayın;
- ATmega328P'ye BootLoader'ı yazın;
- ATmega328P üzerinde LED Yanıp Sönme programını test edin.
1. Adım: ArduinoISP programını Arduino Uno'ya yükleyin
Arduino Uno geliştirme kartını bilgisayara bağlayın. Arduino yazılımında "Dosya > Örnekler > ArduinoISP" seçeneğini bulun ve tıklayın.

ArduinoISP kodunda, MOSI, MISO ve SCK pinlerinin sırasıyla 11, 12 ve 13 olarak tanımlandığını görebilirsiniz; bu, Arduino Uno geliştirme kartındaki pinlerle uyumludur.

IDE'deki Araçlar menüsündeki ayarlar şu şekildedir:
- Kart: "Arduino Uno"
- Bağlantı Noktası: "COM(Arduino Uno)"
- Programlayıcı: "Arduino as ISP"

Yükle simgesine tıklayın; bir süre sonra ArduinoISP programı Arduino Uno geliştirme kartınıza yüklenecektir.

2. Adım: ATmega328P'yi Arduino Uno'ya bağlama
Yukarıdaki ArduinoISP kodunda ISP pinlerinin tanımına göre, Arduino ile ATmega328P arasındaki kablolama yöntemi ve şeması şu şekildedir:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

3. Adım: ATmega328P'ye BootLoader'ı yazma
Arduino Uno ile ATmega328P arasındaki kablolama işlemini tamamladıktan sonra, Arduino Uno'yu bilgisayara bağlamamız gerekiyor. Ardından, ATmega328P'ye Bootloader'ı yüklemek için "Araçlar > Bootloader'ı Yaz" seçeneğine tıklayın.

4. Adım: ATmega328P üzerinde LED Yanıp Sönme programını test edin
LED'in artı kutbunu ATmega328P'nin PIN2'sine, eksi kutbunu ise D'ye bağlayın. ATmega328P'nin PIN2'si PD0'a karşılık gelir, bu nedenle kodda "0" olarak belirtilmiştir.
const int LED_PIN = 2; // Define the LED pin
void setup() {
pinMode(0, OUTPUT); // Set the LED pin as output
}
void loop() {
digitalWrite(0, HIGH); // Turn on the LED
delay(1000); // Wait for one second
digitalWrite(0, LOW); // Turn off the LED
delay(1000); // Wait for one second
}

Yukarıdaki GIF görüntüsünde de görebileceğiniz gibi, LED yanıp sönme programı normal şekilde çalışıyor.




