1. Arsitektur Mikrokontroler
Mikrokontroler adalah komputer lengkap dalam satu chip (System on Chip - SoC) yang terdiri dari CPU, memori, dan peripheral I/O. Arsitektur mikrokontroler menentukan bagaimana komponen-komponen ini berinteraksi dan mengakses memori.
Karakteristik Mikrokontroler
- Single-chip solution - Semua komponen dalam satu IC
- Low power consumption - Dirancang untuk efisiensi daya
- Cost-effective - Harga rendah untuk produksi massal
- Dedicated function - Untuk aplikasi spesifik
- Real-time operation - Respons waktu nyata
Arsitektur Harvard vs Von Neumann
| Aspek | Arsitektur Harvard | Arsitektur Von Neumann |
|---|---|---|
| Bus Memori | Terpisah untuk instruksi dan data | Sama untuk instruksi dan data |
| Kecepatan | Lebih cepat (parallel access) | Lebih lambat (sequential access) |
| Kompleksitas | Lebih kompleks | Lebih sederhana |
| Biaya | Lebih mahal | Lebih murah |
| Contoh | AVR, PIC, ARM Cortex-M | Intel x86, Motorola 68k |
Mengapa Harvard Architecture untuk Embedded?
Mikrokontroler modern umumnya menggunakan arsitektur Harvard karena memungkinkan fetch instruksi dan akses data secara bersamaan, meningkatkan throughput dan cocok untuk aplikasi real-time.
2. Komponen Internal Mikrokontroler
CPU CORE
Central Processing Unit - Otak Mikrokontroler
FLASH/ROM
Program Memory
32KB untuk ATMega328P
SRAM
Data Memory
2KB untuk ATMega328P
EEPROM
Non-volatile Data Storage
1KB untuk ATMega328P
Peripheral Terintegrasi
GPIO Ports
Digital I/O (PORTB, PORTC, PORTD)
Timer/Counters
Timer0, Timer1, Timer2
USART
Serial Communication
SPI
Serial Peripheral Interface
ADC
Analog to Digital Converter
Interrupts
External & Internal Interrupts
Detail Komponen Internal
CPU Core Components
- ALU (Arithmetic Logic Unit) - Melakukan operasi aritmatika dan logika
- Control Unit - Mengontrol aliran data dan instruksi
- Registers - Penyimpanan sementara berkecepatan tinggi
- Program Counter - Menunjuk ke alamat instruksi berikutnya
- Instruction Decoder - Menerjemahkan instruksi mesin
3. Organisasi Memori
Mikrokontroler memiliki organisasi memori yang terpisah untuk program dan data, sesuai dengan arsitektur Harvard.
Memory Map ATMega328P
| Alamat | Jenis Memori | Ukuran | Fungsi |
|---|---|---|---|
| 0x0000 - 0x1FFF | Flash/Program Memory | 8KB | Menyimpan program (instruksi) |
| 0x0100 - 0x04FF | SRAM/Data Memory | 1KB | Menyimpan data variabel |
| 0x0000 - 0x001F | General Purpose Registers | 32 byte | Register serba guna R0-R31 |
| 0x0020 - 0x005F | I/O Registers | 64 byte | Register untuk peripheral I/O |
| 0x0000 - 0x03FF | EEPROM | 1KB | Penyimpanan data non-volatile |
Jenis-jenis Memori dalam Mikrokontroler
Flash Memory (Program Memory)
- Non-volatile - Data tetap saat power off
- Read Mostly - Dapat ditulis ulang terbatas (~10,000 cycles)
- Menyimpan firmware - Program yang dijalankan
- Word-addressable - Diakses per word (16-bit untuk AVR)
SRAM (Data Memory)
- Volatile - Data hilang saat power off
- High-speed - Akses sangat cepat
- Menyimpan variable - Data sementara program
- Byte-addressable - Diakses per byte
4. Register dan Addressing Mode
Register dalam AVR Architecture
General Purpose Registers (R0 - R31)
Klik pada bit untuk mengubah nilai
Nilai Register: 0x0A (Decimal: 10)
Addressing Modes dalam AVR
| Mode | Syntax | Contoh | Keterangan |
|---|---|---|---|
| Register Direct | ADD Rd, Rr | ADD R16, R17 | Operasi antara dua register |
| Immediate | LDI Rd, K | LDI R16, 0xFF | Load nilai langsung ke register |
| Direct | LDS Rd, K | LDS R16, 0x100 | Load dari alamat SRAM tertentu |
| Indirect | LD Rd, X | LD R16, X | Load dari alamat di register X |
| I/O Direct | IN Rd, P | IN R16, PINB | Baca dari port I/O |
; Contoh berbagai addressing mode dalam AVR Assembly
; Immediate Addressing
LDI R16, 0x25 ; Load nilai 0x25 langsung ke R16
LDI R17, 100 ; Load nilai 100 (desimal) ke R17
; Register Direct Addressing
ADD R16, R17 ; R16 = R16 + R17
SUB R18, R19 ; R18 = R18 - R19
; Direct Addressing
STS 0x0100, R16 ; Store R16 ke alamat SRAM 0x0100
LDS R20, 0x0100 ; Load dari 0x0100 ke R20
; Indirect Addressing
LDI R26, 0x00 ; Low byte address (XL)
LDI R27, 0x01 ; High byte address (XH)
LD R21, X ; Load dari alamat di X register
; I/O Direct Addressing
IN R22, PINB ; Baca PORT B ke R22
OUT PORTB, R23 ; Output R23 ke PORT B
5. Peripheral Terintegrasi
Mikrokontroler modern dilengkapi dengan berbagai peripheral yang terintegrasi untuk mengurangi komponen eksternal dan biaya sistem.
Jenis Peripheral dalam ATMega328P
GPIO (General Purpose Input/Output)
- 23 I/O pins - Terbagi di PORTB, PORTC, PORTD
- Configurable - Dapat diatur sebagai input atau output
- Pull-up resistors - Internal pull-up untuk input
- High current drive - Dapat menggerakkan LED langsung
Timer/Counters
- Timer0 - 8-bit timer dengan PWM
- Timer1 - 16-bit timer dengan input capture
- Timer2 - 8-bit timer asynchronous
- Fungsi - Time delay, PWM generation, input capture
Communication Interfaces
- USART - Universal Synchronous/Asynchronous Receiver/Transmitter
- SPI - Serial Peripheral Interface (high-speed)
- TWI - Two Wire Interface (I2C compatible)
#include
#include
// Konfigurasi Timer1 untuk interrupt setiap 1 detik
void timer1_init() {
// Set prescaler to 1024
TCCR1B |= (1 << CS12) | (1 << CS10);
// Set compare value for 1 second
OCR1A = 15624; // 16MHz/1024/1Hz - 1
// Enable compare match interrupt
TIMSK1 |= (1 << OCIE1A);
// Set timer to CTC mode
TCCR1B |= (1 << WGM12);
}
// Interrupt Service Routine untuk Timer1
ISR(TIMER1_COMPA_vect) {
// Toggle LED setiap 1 detik
PORTB ^= (1 << PB5);
}
int main(void) {
// Set PB5 sebagai output (LED pada Arduino)
DDRB |= (1 << DDB5);
// Inisialisasi timer
timer1_init();
// Enable global interrupts
sei();
while(1) {
// Program utama
}
}
Latihan Praktikum
Tugas untuk memperdalam pemahaman arsitektur mikrokontroler
Tugas 1: Analisis Arsitektur
Berdasarkan datasheet ATMega328P, identifikasi dan buat laporan tentang:
- Spesifikasi teknis lengkap (kecepatan clock, voltase operasi, dll)
- Diagram blok arsitektur internal
- Memory mapping dan organisasi
- Daftar semua peripheral dan fungsinya
Tugas 2: Simulasi Register
Buat program simulasi yang menunjukkan operasi register:
- Implementasikan operasi bit manipulation (SET, CLEAR, TOGGLE)
- Demonstrasikan operasi shift dan rotate
- Simulasikan operasi arithmetic (ADD, SUB, INC, DEC)
- Buat visualisasi nilai register dalam biner dan heksadesimal
Tugas 3: Peripheral Mapping
Buat tabel mapping peripheral untuk proyek sederhana:
- LED control menggunakan PWM timer
- Sensor reading menggunakan ADC
- Serial communication menggunakan USART
- Input control menggunakan external interrupt