pengantar-atmega-16

11
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16 POLITEKNIK JAMBI | Irwan Kurniawan, ST 1 MENGENAL MIKROKONTROLER ATMEGA-16 AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable Flash on-chip yang mengijinkan memori program untuk diprogram ulang dalam system menggunakan hubungan serial SPI. ATMega16 ATMega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer sistem untuk mengoptimasi konsumsi daya versus kecepatan proses. Beberapa keistimewaan dari AVR ATMega16 antara lain: 1. Advanced RISC Architecture 130 Powerful Instructions – Most Single Clock Cycle Execution 32 x 8 General Purpose Fully Static Operation Up to 16 MIPS Throughput at 16 MHz On-chip 2-cycle Multiplier 2. Nonvolatile Program and Data Memories 8K Bytes of In-System Self-Programmable Flash Optional Boot Code Section with Independent Lock Bits 512 Bytes EEPROM 512 Bytes Internal SRAM Programming Lock for Software Security 3. Peripheral Features Two 8-bit Timer/Counters with Separate Prescalers and Compare Mode Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode Real Time Counter with Separate Oscillator Four PWM Channels 8-channel, 10-bit ADC Byte-oriented Two-wire Serial Interface Programmable Serial USART 4. Special Microcontroller Features Power-on Reset and Programmable Brown-out Detection Internal Calibrated RC Oscillator External and Internal Interrupt Sources Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Powerdown, Standby and Extended Standby 5. I/O and Package 32 Programmable I/O Lines 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF 6. Operating Voltages 2.7 - 5.5V for Atmega16L 4.5 - 5.5V for Atmega16

Upload: bramasto-adi-nugroho

Post on 09-Dec-2015

6 views

Category:

Documents


0 download

DESCRIPTION

ATMEGA16

TRANSCRIPT

Page 1: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

1

MENGENAL MIKROKONTROLER ATMEGA-16

AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur

RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus

clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode

compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan

mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable

Flash on-chip yang mengijinkan memori program untuk diprogram ulang dalam system

menggunakan hubungan serial SPI. ATMega16

ATMega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer sistem

untuk mengoptimasi konsumsi daya versus kecepatan proses.

Beberapa keistimewaan dari AVR ATMega16 antara lain:

1. Advanced RISC Architecture

� 6 130 Powerful Instructions – Most Single Clock Cycle Execution

� 6 32 x 8 General Purpose Fully Static Operation

� 6 Up to 16 MIPS Throughput at 16 MHz

� 6 On-chip 2-cycle Multiplier

2. Nonvolatile Program and Data Memories

� 6 8K Bytes of In-System Self-Programmable Flash

� 6 Optional Boot Code Section with Independent Lock Bits

� 6 512 Bytes EEPROM

� 6 512 Bytes Internal SRAM

� 6 Programming Lock for Software Security

3. Peripheral Features

� 6 Two 8-bit Timer/Counters with Separate Prescalers and Compare Mode

� 6 Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes

� 6 One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and

Capture Mode

� 6 Real Time Counter with Separate Oscillator

� 6 Four PWM Channels

� 6 8-channel, 10-bit ADC

� 6 Byte-oriented Two-wire Serial Interface

� 6 Programmable Serial USART

4. Special Microcontroller Features

� 6 Power-on Reset and Programmable Brown-out Detection

� 6 Internal Calibrated RC Oscillator

� 6 External and Internal Interrupt Sources

� 6 Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Powerdown, Standby

and Extended Standby

5. I/O and Package

� 6 32 Programmable I/O Lines

� 6 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF

6. Operating Voltages

� 6 2.7 - 5.5V for Atmega16L 6 4.5 - 5.5V for Atmega16

Page 2: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

2

Gambar 1.1 Pin-Out ATMEGA 16

Gambar 1.2 Diagram Blok Mikrokontroler Yang Disederhanakan

ALU, Instruction Decoder, Accumulator dan Control Logic, sebagaimana ditunjukkan pada

Gambar 1.2, merupakan Otak-nya mikrokontroler yang bersangkutan. Jantungnya berasal

dari detak

Page 3: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

3

OSC (lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat

berbagai

macam periferal seperti SFR (Special Function Register) yang bertugas menyimpan data-

data

sementara selama proses berlangsung). Instruction Decoder bertugas menerjemahkan

setiap

instruksi yang ada di dalam Program Memory (hasil dari pemrograman yang kita buat

sebelumnya).

Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh ALU

(Arithmetic Logic Unit), mungkin dengan bantuan memori sementara Accumulator yang

kemudian menghasilkan sinyal-sinyal kontrol ke seluruh periferal yang terkait melalui

Control Logic.

Memori RAM atau RAM Memory bisa digunakan sebagai tempat penyimpan sementara,

sedangkan

SFR (Special Function Register) sebagian ada yang langsung berhubungan dengan I/O dari

mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam

operasional mikrokontroler.

ADC atau Analog to Digital Converter (tidak setiap mikrokontroler memiliki ADC internal),

digunakan untuk mengubah data-data analog menjadi digital untuk diolah atau diproses

lebih lanjut.

Timer atau Counter digunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya

seperti sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih

digunakan sebagai penghitung atau pencacah event atau bisa juga digunakan untuk

menghitung berapa jumlah pulsa dalam satu detik dan lain sebagainya. Biasanya sebuah

mikrokontroler bisa memiliki lebih dari 1 timer.

EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak

mendapatkan sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk

melakukan komunikasi dengan periferal eksternal mikrokontroler seperti sensor dan

aktuator.

Page 4: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

4

PENJELASAN SINGKAT PIN-PIN PADA MIKROKONTROLER AVR ATMEGA16

Vcc Masukan tegangan catu daya

GND Ground,...

Port A (PA7..PA0) Port A berfungsi sebagai masukan analog ke ADC internal pada

mikrokontroler ATMega16, selain itu juga berfungsi sebagai port I/O dwi-arah 8-bit, jika

ADC-nya tidak digunakan. Masing-masing pin menyediakan resistor pull-up internal 4 yang

bisa diaktifkan untuk masing-masing bit.

Port B (PB7..PB0) Port B berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing

pin menyediakan resistor pull-up internal yang biasa diaktifkan untuk masing-masing bit.

Port B juga memiliki berbagai macam fungsi alternatif, sebagaimana ditunjukkan pada Tabel

berikut :

PORT Pin Alternatif Functions

PB7 SCK (SPI Bus Serial Clock)

PB6 MISO (SPI Bus Master Input /Slave Output)

PB5 MOSI (SPI Bus Master Output/Slave Input)

PB4 ����� (SPI Slave Select Input)

PB3 AIN1 (Analog Comparator Negatif Input)

OC0 (Timer/Counter0 Output Compare Match Output)

PB2 AIN0 (Analog Comparator Positif Input)

INT2 (External Interrupt 2 Input))

PB1 T1 (Timer/Counter1 Eksternal Counter Input)

PB0 T0 (Timer/Counter0 Eksternal Counter Input)

XCK (USART Eksternal Clock Input/Output)

Port C (PC7..PC0) Port C berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing

pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. Port

C juga digunakan sebagai antarmuka JTAG, sebagaimana ditunjukkan pada Tabel berikut :

PORT Pin Alternatif Functions

PC7 TOSC2 (timer Oscillator Pin 2)

PC6 TOSC1 (timer Oscillator Pin 1)

PC5 TDI (JTAG Test data In)

PC4 TDO (JTAG Test data Output)

PC3 TMS (JTAG Test Mode Select)

PC2 TCK (JTAG Test Clock)

PC1 SDA (Two-wire Serial Bus Data Input/Output Line)

PC0 SCL (Two-wire Serial Bus Clock Line)

Page 5: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

5

Port D (PD7..PD0) Port D berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing

pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.

PORT D juga memiliki berbagai macam fungsi alternatif, sebagaimana ditunjukkan pada

table berikut :

PORT Pin Alternatif Functions

PD7 OC2 (Timer/Counter2 Output Compare Match Output)

PD6 ICP1 (Timer/Counter1 Input Capture Pin)

PD5 OC1A (Output Compare A Match Output)

PD4 OC1B (Output Compare B Match Output)

PD3 INT1 (External Interrupt 1 Input)

PD2 INT0 (External Interrupt 0 Input)

PD1 TXD (USART Output Pin)

PD0 RXD (USART Input Pin)

PORT SEBAGAI INPUT/OUTPUT DIGITAL

ATMega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.

Keempat port tersebut merupakan jalur bidirectional (dua arah) yaitu sebagai Jalur

Output/Keluaran atau sebagai jalur Input (Masukkan).

Deskripsi Register PORT (Misalnya PORT A)

Register DDRx (Data Direction Register)

Digunakan untuk menentukan apakah sebuah pin pada sebuah PORT (A, B, C atau D)

sebagai masukan atau luaran atau disebut sebagai arah (direction) dari pin yang

bersangkutan:

� Berikan logika 1 (satu) pada bit yang terkait agar dijadikan sebagai luaran atau

output.

� Berikan logika 0 (nol) pada bit yang terkait agar dijadikan sebagai masukan atau

input.

Page 6: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

6

Contoh:

DDRA = 0b11011010

Register PORTx sebagai pengatur data keluaran PORT (A,B,C,D)

Digunakan untuk men-set logika pada pin dari PORT(A,B,C,atau D) jika pin dari PORT

tersebut digunakan sebagai luaran atau output. Sebagai contoh misalkan semua pin dari

PORTA digunakan sebagai output.

DDRA = 0b11111111; semua pin dari PORTA sebagai output (luaran) PORTA = 0b10001110;

Register PORTX sebagai pengaktif Pull-Up jika pin dari PORT sebagai Input/masukan

Jika misalkan pin 7 dari PORTB dijadikan sebagai input atau masukan (bit 7 register DDRB

=0) maka ketika bit-7 dari register PORTB di set logika ‘1’ maka pin PB7 akan di-pullup.

Page 7: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

7

Apa itu pull-up ?

Register PINX sebagai pembaca data pada pin yang dijadikan input

Register PINx digunakan membaca kondisi logika pada pin-pin yang dijadikan sebagai

masukan dari port terkait. Untuk mempermudah proses pembacaan data dari pin, sebaiknya

pin tersebut di-set ke kondisi pull-up aktif, seperti yang telah dijelaskan sebelumnya.

DDRC = 0b11110000; pin PC0-PC3 dari PORTC sebagai input(masukan) PORTC = 0b00001111; pull-up pin PC0-PC3 diaktifkan

Perhatikan Gambar Disamping !

Jika PIN 1 dihubungkan ke VCC melalui resistor (R)

maka inilah yang dimaksud dengan kondisi PULL-UP.

Ketika tidak ada tegangan dari luar PIN 1, maka

kondisi logika yang terbaca pada PIN 1 adalah HIGH

(Logik 1), tetapi jika terhubung dengan tegangan

luarannya 0 (ground) maka PIN 1 akan terbaca

sebagai kondisi LOW (logik 0).

Sedangkan PIN.2 dibiarkan begitu saja sehingga

kondisi logik dari PIN.2 begitu rentan terhadap

pengaruh disekitarnya. PIN.2 bisa berlogika HIGH,

bisa juga berlogika LOW, ini artinya logika PIN.2

mengambang (floating)

Page 8: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

8

Pengenalan Bahasa C untuk Mikrokontroler AVR

Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk

mikrokontroler, hususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini

merupakan High Level Language sisanya menyebut sebagai Midle Level Language. Dengan

demikian seorang programmer dapat menuangkan (menuliskan) algoritmanya dengan

mudah.

Struktur Penulisan Bahasa C

Perhatikan struktur penulisan dalam Bahasa C sebagai berikut.

Keterangan:

� Opsional artinya boleh ditulis boleh tidak, menyesuaikan kebutuhan – tuliskan

pustaka apa saja yang digunakan dan lain sebagainya

� Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program,

demikian juga dengan deklarasi fungsi-fungsi yang terlibat

Tipe-tipe data dalam Bahasa C

� char : 1 byte ( -128 s/d 127 )

� unsigned char : 1 byte ( 0 s/d 255 )

� int: 2 byte ( -32768 s/d 32767 )

� unsigned int: 2 byte ( 0 s/d 65535 )

� long: 4 byte ( -2147483648 s/d 2147483647 )

� unsigned long: 4 byte ( 0 s/d 4294967295 )

� float: bilangan desimal

� array: kumpulan data-data yang sama tipenya.

Deklarasi Variabel dan Konstanta

� Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.

� Penulisan :

[tipe data] [nama] = [nilai];

� Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.

Penulisan :

const [nama] = [nilai];

� Global variable atau constant dapat diakses di seluruh bagian program.

� Local variable atau constant hanya dapat diakses oleh fungsi tempat

dideklarasikannya.

Page 9: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

9

Pernyataan

Statement atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan

[;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris.

Lebih dari 1 baris gunakan pasangan [/*] dan [*/]. Pernyataan yang tidak dieksekusi disebut

juga komentar.

Contoh:

suhu = 100*adc/255; //contoh rumus perhitungan suhu Fungsi

Function atau fungsi adalah bagian program yang dapat dipanggil oleh program utama.

Penulisan :

[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) {

[pernyataan_1]; [pernyataan_2]; ... return output;

}

Contoh :

int konversi_suhu (int data_adc) { int suhu = 100*data_adc/255 ; return suhu; }

Pernyataan berkondisi dan Pengulangan

if else: digunakan untuk menyeleksi satu atau beberapa kondisi

if ( [persyaratan] ) { [statement1]; [statement2]; ...

} else {

[statement3]; [statement4]; ...

}

Contoh :

if (data == 0xf0){ PORTA = 0xff; }else{ PORTA = 0xff; }

Page 10: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

10

for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali

diulang

for ( [tipe_data nilai awal] ; [syarat] ; [operasi nilai] ) {

[statement1]; [statement2]; ...

}

while: digunakan untuk pengulangan (looping) jika dan sealama memenuhi suatu kondisi

masih dipenuhi (pengulangan selama benar)

while ( [persyaratan] ) { [statement1]; [statement2]; ... }

Operasi Logika dan Bilangan Biner

Operator Logika AND: && NOT: ! OR : ||

Biner AND: & OR : | XOR : ^ Shift right: >> Shift left : <<

Contoh :

for (int i=0;i++;i<100){

delay_ms(100);

data = data + 10;

PORTA = data;

}

Contoh :

while (data == 0xf0){

delay_ms(100);

data = PINC;

data = data & 0xf0;

PORTA = data;

}

Page 11: pengantar-atmega-16

Modul Praktikum Mikrokontroler ATMEGA-16

Mengenal Mikrokontroler ATMEGA-16

POLITEKNIK JAMBI | Irwan Kurniawan, ST

11

Apa itu Pengulangan terus-menerus atau infinite looping? Yaitu suatu pengulangan atau

kalang (loop) yang dilakukan terus-menerus tanpa batas, hingga rangkaian tidak lagi

mendapatkan sumber catu daya.

Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C,

adalah yang ada di fungsi utama atau main, seperti contoh berikut...

void main() { // pernyataan-pernyataan program }

Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan

dijalankan sekali saja. Jika menggunakan infinite loop (ada yang mengatakan sebagai

pengulangan tak-hingga atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka

program yang ada di dalam pengulangan tersebut akan dijalankan berulang-ulang terus-

menerus, contoh... void main() { // pernyataan-pernyataan program

while (1); // infinite loop { // pernyataan2 }

}

Untuk keluar dari infinite looping gunakan perintah break;