Tentang Mikrokontroler ATMEGA328P
ATmega328P adalah mikrokontroler CMOS 8-bit berdaya rendah yang didasarkan pada arsitektur RISC AVR yang disempurnakan. Chip ini dikembangkan oleh Atmel Corporation (Microchip Technology). Chip ini memiliki kecepatan clock 20MHz, memori flash 32KB, Timer 16-bit, dan 23 jalur I/O yang dapat diprogram. Chip ini umumnya digunakan pada papan Arduino dan proyek-proyek berbasis mikrokontroler lainnya.
Fitur ATMEGA328P
- Mikrokontroler AVR 8-bit berkinerja tinggi dan hemat daya;
- Arsitektur RISC canggih;
- Segmen memori non-volatil berdaya tahan tinggi;
- Reset saat dinyalakan dan deteksi brown-out yang dapat diprogram;
- Osilator yang dikalibrasi secara internal;
- Sumber Interupsi Eksternal dan Internal;
- Enam mode tidur: Idle, Pengurangan Kebisingan ADC, Penghematan Daya, Matikan, Siaga, dan Siaga Ekstensi.
Parameter ATMEGA328P
- Kapasitas memori flash: 32 KB
- SRAM: 2 KB
- Kapasitas memori EEPROM: 1KB
- Frekuensi jam: 20 MHz
- Jenis antarmuka: I2C, SPI, USART
- Tegangan suplai min: 1,8V maks: 5,5V
- Tegangan suplai Perangkat Pemasangan Permukaan: Pemasangan Permukaan
- Tipe kemasan: PDIP/TQFP
- Jumlah pin: 28-PDIP, 32-TQFP
- Rentang suhu operasi: -40°C hingga +85°C
- Jalur Masukan/Keluar: 23
- Jumlah masukan ADC: 8
- Timer/Penghitung 8-bit: 2
- Timer/Penghitung 16-bit: 1
- PWM: 6 saluran
- Metode pemrograman: ISP, IAP, H/PV
- Metode simulasi: debugWIRE
Konfigurasi Pin ATMEGA328P
Chip ATMEGA328P memiliki 28 pin input/output serbaguna (GPIO), yang masing-masing dapat dikonfigurasi sebagai input atau output digital.

Paket ATMEGA328P
ATmega328P tersedia dalam berbagai pilihan kemasan, seperti PDIP (Plastic Dual Inline Package), TQFP (Thin Quad Flat Package), dan QFN (Quad Flat No-Lead). Dalam konteks mikrokontroler ATmega328P, huruf "P" merujuk pada jenis kemasan chip tersebut. Jadi, di sini huruf "P" secara khusus mengacu pada kemasan PDIP.

Diagram Blok ATMEGA328P

Bagaimana Cara Menginstal Bootloader Arduino pada ATMEGA328P?
Papan pengembangan Arduino yang dibeli secara daring telah diprogram dengan BootLoader, sehingga Anda dapat langsung menggunakan Arduino IDE untuk mengunggah program.
Namun, mikrokontroler ATMEGA328P baru tidak dilengkapi dengan BootLoader, sehingga Arduino IDE tidak dapat digunakan untuk mengunggah program secara langsung, dan program hanya dapat diprogram melalui ICSP.
Kita perlu memprogram BootLoader untuk MCU tersebut sendiri agar dapat menggunakan Arduino IDE untuk pengembangan.
Bahan-bahan yang Dibutuhkan
- ATmega328P;
- osilator kristal 16 MHz;
- kapasitor 22 pF*2;
- Resistor 10 K;
- Papan pengembangan Arduino (Uno atau Nano).

Proses
- Unggah program ArduinoISP ke Arduino Uno;
- Hubungkan ATmega328P ke Arduino Uno;
- Tulis BootLoader ke ATmega328P;
- Uji program kedipan LED pada ATmega328P.
Langkah 1: Unggah program ArduinoISP ke Arduino Uno
Hubungkan papan pengembangan Arduino Uno ke komputer. Cari dan klik "File>Contoh>ArduinoISP" di perangkat lunak Arduino.

Dalam kode ArduinoISP, Anda dapat melihat bahwa pin MOSI, MISO, dan SCK masing-masing didefinisikan sebagai 11, 12, dan 13, yang sesuai dengan pin pada papan pengembangan Arduino Uno.

Kemudian, pengaturan di menu Tools pada IDE adalah sebagai berikut:
- Papan: "Arduino Uno"
- Port: "COM(Arduino Uno)"
- Programmer: "Arduino sebagai ISP"

Klik ikon unggah, dan setelah beberapa saat, program ArduinoISP akan diunggah ke papan pengembangan Arduino Uno Anda.

Langkah 2: Menghubungkan ATmega328P ke Arduino Uno
Berdasarkan definisi pin ISP dalam kode ArduinoISP di atas, metode dan skema pengkabelan antara Arduino dan ATmega328P adalah sebagai berikut:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

Langkah 3: Menulis BootLoader ke ATmega328P
Setelah menyelesaikan pemasangan kabel antara Arduino Uno dan ATmega328P, kita perlu menghubungkan Arduino Uno ke komputer. Kemudian klik "Tools>Burn Bootloader" untuk menginstal Bootloader pada ATmega328P.

Langkah 4: Uji program kedipan LED pada ATmega328P
Hubungkan kutub positif LED ke PIN2 ATmega328P, dan kutub negatifnya ke D. PIN2 pada ATmega328P mewakili PD0, sehingga nilainya “0” dalam kode.
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
}

Seperti yang dapat Anda lihat pada gambar GIF di atas, program kedipan LED berjalan dengan normal.




