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 dasar2 operasi yg sangat sederhana dan efisien • Operasi yg lebih kompleks dibangun oleh operasi2 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
Atmel ATmega16 • Dari datasheet
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