Interfacing Materi 2: AVR Architecture Disusun Oleh: I Nyoman Kusuma Wardana
Outline Keluarga Mikrokontroler AVR Arsitektur internal AVR RISC Von Neumann dan Harvard Architecture Atmega16 Workshop Kusuma Wardana - Interfacing 2013 2
Keluarga Mikrokontroler AVR Mikrokontroler AVR dpt dibagi mjd 4 grup: 1. tinyavr Contoh: ATtiny13, ATtiny25 2. AVR (classic AVR) Contoh: AT90S2313, AT90S4433 Kusuma Wardana - Interfacing 2013 3
Keluarga Mikrokontroler AVR 3. megaavr Contoh: ATmega8, ATmega32, ATmega128 4. Special Purpose AVR Contoh: AT90PWM216, AT90USB1287 Kusuma Wardana - Interfacing 2013 4
Keluarga Mikrokontroler AVR Perbedaan antar ketiga grup tersebut adlh ketersediaan fitur yg dimiliki tinyavr umumnya memiliki jumlah pin dan pengurangan fitur ketimbang megaavr Semua jenis AVR memiliki set instruksi dan organisasi memori yg sama Jadi, migrasi dari satu jenis ke jenis yg lain akan mudah Kusuma Wardana - Interfacing 2013 5
Memilih Jenis µc yang Tepat Secara umum, pemilihan tinyavr, AVR klasik tidak merefleksikan performance (kinerja) namun, lebih pd kompleksitas fitur Banyak fitur = megaavr Fitur yg dikurangi = tinyavr Antara keduanya = AVR klasik Kusuma Wardana - Interfacing 2013 6
Memilih Jenis µc yang Tepat Kode pg mikronkontroler ATMEL Kusuma Wardana - Interfacing 2013 7
Memilih Jenis µc yang Tepat Mikrokontroler yang sering digunakan: 8-bit microcontrollers AVR PIC HCS12 8051 32-bit microcontrollers ARM PIC32 Kusuma Wardana - Interfacing 2013 8
Arsitektur Internal AVR Kusuma Wardana - Interfacing 2013 9
megaavr tinyavr Kusuma Wardana - Interfacing 2013 10
Arsitektur Internal AVR AVR Klasik Kusuma Wardana - Interfacing 2013 11
Reduced Instruction Set Computer (RISC) Mikrokontroler (µc) adlh keseluruhan sistem komputer yang dimasukkan ke dalam satu chip Kusuma Wardana - Bahasa Rakitan 2013 12
Reduced Instruction Set Computer Operasi pd µc dikontrol oleh program yg dibuat oleh user dgn memperhatikan arsitektur hardware yg dimiliki oleh µc tsb. Arsitektur suatu µc bisa berupa: accumulatorbased, register-based, stack-based, atau beraksitektur pipeline Ambil contoh: ATmega16 dlm pembahasan kita Atmel ATmega16 adalah register-based architecture Kusuma Wardana - Bahasa Rakitan 2013 13
RISC Keterkaitan erat dgn register-based architecture (arsitektur berbasis register) adlh konsep RISC Prosesor menggunakan RISC dilengkapi dgn dasar 2 operasi yg sangat sederhana dan efisien Operasi yg lebih kompleks dibangun oleh operasi 2 dasar ini Kusuma Wardana - Bahasa Rakitan 2013 14
RISC Atmel ATmega16 dilengkapi dgn 131 tipe instruksi RISC (assembly) Kebanyakan perintah ini dieksekusi dlm 1 clock Atmel ATmega16 jg dilengkapi hardware tambahan utk melakukan operasi perkalian (multiplication) dlm 2 clock! Arsitektur mikrokontroler lain melakukan operasi perkalian dgn jumlah clock berkali-kali lipat Kusuma Wardana - Bahasa Rakitan 2013 15
RISC Elemen kunci dr RISC adalah: Memiliki banyak general-purpose register dan/atau menggunakan teknologi compiler utk mengoptimasi penggunaan register Set instruksi yg terbatas dan sederhana Bertujuan utk mengoptimalkan instruksi pipeline Kusuma Wardana - Bahasa Rakitan 2013 16
RISC Atmel ATmega16 dilengkapi dgn 32 general purpose 8-bit register yg terkoneksi erat dgn arithmetic logic unit (ALU) pd CPU Prosesor menggunakan arsitektur Harvard Dua konsep dasar arsitektur: Von Neumann (Princeton) Harvard Kusuma Wardana - Bahasa Rakitan 2013 17
RISC Von Neumann: Komputer memiliki memori yg sama utk menyimpan dan mengontrol program, bgitu jg variabel dan struktur data yg lain Program dieksekusi secara sekuensial (dikontrol oleh Program Counter) Harvard: Menggunakan memori terpisah utk menyimpan program dan variabel RAM Instruksi dieksekusi lebih cepat drpd Von Neumann karena memungkinkan parallelism Kusuma Wardana - Bahasa Rakitan 2013 18
Von Neumann & Harvard Kusuma Wardana - Bahasa Rakitan 2013 19
Atmel ATmega16 Overview Kusuma Wardana - Interfacing 2013 20
Atmel ATmega16 NONVOLATILE & MEMORI DATA Atmega 16 dilengkapi dgn 3 memori utama: 1. Flash Electrically Erasable Programmable Read-Only Memory (EEPROM) 2. Static Random Access Memory (SRAM) 3. Byte-addressable EEPROM utk penyimpanan data Kusuma Wardana - Interfacing 2013 21
Atmel ATmega16 1. In-System Programmable Flash EEPROM Digunakan utk menyimpan program Bersifat nonvolatile isi memori tidak hilang ketika daya hilang Atmega 16 dilengkapi dgn 16K byte onboard flash memory dlm struktur 8K location dgn masing2 16 bit Kusuma Wardana - Interfacing 2013 22
Atmel ATmega16 16 KB Organisasi: 8K x 16 Flash EEPROM adalah in-system Programmable maksudnya, uc dpt diprogram ketika msh berada dlm suatu rangkaian PC mendownload program ke uc Kusuma Wardana - Interfacing 2013 23
Atmel ATmega16 2. Byte-Addressable EEPROM Digunakan utk menyimpan dan memanggil variabel scr permanen slama program dieksekusi Bersifat nonvolatile Berguna utk logging system malfunction dan fault data selama program dieksekusi Juga berguna utk mempertahankan data jg terjd kegagalan power supply Contoh: electronic lock combination, automatic garage door electronic unlock sequences ATmega16 dilengkapi dgn 512 Byte EEPROM Kusuma Wardana - Interfacing 2013 24
Atmel ATmega16 3. Static Random Access memory (SRAM) Bersifat volatile isinya hilang ketika daya dimatikan ATmega16 dilengkapi dgn 1KB SRAM Digunakan utk menyimpan variabel program dll Kusuma Wardana - Interfacing 2013 25
Atmel ATmega16 PORT SYSTEM ATmega16 dilengkapi dgn 8-bit general-purpose, digital I/O port Terdiri dr PORTA, PORTB, PORTC dan PORTD Port memiliki fungsi alternatif Kusuma Wardana - Interfacing 2013 26
Atmel ATmega16 Trdpt 3 register yg dipakai utk port: 1. Data Direction Register (DDRx) menunjukkan arah port sbg input (0) atau output (1) 2. Data Register (PORTx) menulis data output ke port 3. Input Pin Address (PINx) membaca data input dr port Kusuma Wardana - Interfacing 2013 27
Amati Register Port I/O sbb: Lebar = 8 bit Pertama tentukan sgb input/output Jika input bisa high impedande atau sbg input pin Jika output logika 1 atau o Kusuma Wardana - Interfacing 2013 28
Dari datasheet Atmel ATmega16 Kusuma Wardana - Interfacing 2013 29
Atmel ATmega16 Contoh program untuk melakukan inisiasi menggunakan bahasa C, sbb: #include <mega16.h> void main (void) { DDRC = 0xFF; PORTC = 0b10101011; while(1); } Kusuma Wardana - Interfacing 2013 30
Rangkai pada Proteus Kusuma Wardana - Interfacing 2013 31
Selanjutnya Run Simulator. Amati LED yg aktif Kusuma Wardana - Interfacing 2013 32
Contoh: tulislah program berikut dan amati hasilnya #include <mega16.h> #include <delay.h> unsigned char data; // menyimpan variabel data led void main (void) { DDRC = 0xFF; PORTC = 0b00000001; while(1) { data = PORTC; data>>=1; // geser kanan if (data==0x00) data=0x80; PORTC=data; delay_ms(20); // delay sebentar } } 33
Latihan : Geserlah nyala LED ke kiri #include <mega16.h> #include <delay.h> unsigned char data; // menyimpan variabel data led void main (void) { DDRC = 0xFF; PORTC = 0b100000000; while(1) { data = PORTC; data<<=1; // geser kiri if (data==0x00) data=0x01; PORTC=data; delay_ms(20); // delay sebentar } } 34
Tugas Kelompok Buatlah program dalam bahasa C utk mensimulasikan dancing LED dgn skenario sbb: LED akan bergerak ke kiri dan ke kanan Kusuma Wardana - Bahasa Rakitan 2013 35
Tugas Kelompok Kalau dibuat per tahapan akan terlihat sbb: Kusuma Wardana - Bahasa Rakitan 2013 36
Daftar Pustaka Mazidi, Naimi and Naimi, 2011, The AVR Microcontroller and Embedded System: Using Assembly and C, Prentice Hall AVR ATmega16 Manual, Atmel Corporation Kusuma Wardana - Interfacing 2013 37