• Tidak ada hasil yang ditemukan

MENGENAL MIKROKONTROLER ATMEGA-16

N/A
N/A
Protected

Academic year: 2021

Membagikan "MENGENAL MIKROKONTROLER ATMEGA-16"

Copied!
11
0
0

Teks penuh

(1)

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)

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

(3)

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.

(4)

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)

(5)

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.

(6)

POLITEKNIK JAMBI | Irwan Kurniawan, ST

6

Contoh:

DDRA = 0b11011010

Register PORTxsebagai 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.

(7)

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

(8)

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

(9)

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; }

(10)

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;

(11)

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 }

}

Gambar

Gambar 1.2 Diagram Blok Mikrokontroler Yang Disederhanakan

Referensi

Dokumen terkait

Pengenalan Seni Suara Sekar Agung Berbasis Multimedia Interaktif dimana didapatkan kesimpulan sebagai berikut. 1) Telah dihasilkanya aplikasi pengenalan mengenai

8 Florjančič, Vukovič 1998: Kadrovska funkcija – mamagement, Založba moderna organizacija, Kranj, str 44 9 Ibidem, str 44, 56 Janja Martinčič: Analiza absentizma in fluktuacije

Dalam penelitian ini, situasi sosial yang diteliti adalah karier dari wanita yang sudah menikah, bekerja dibidang yang didominasi oleh pria dan di bidang pekerjaan yang

Hasil penelitian menunjukkan bahwa peningkatan konsentrasi ekstrak kering kulit buah delima ( Punica granatum L.) mempengaruhi hasil uji secara signifikan, dimana

Jenis tindakan operasi terdiri dari: appendiktomi, cholesistektomi, hernia repair, dan berbagai jenis laparotomi (peritonitis, colostomi, reseksi colon karena:

Sasaran Peningkatan aksesibilitas masyarakat terhadap peradilan (acces to justice) pada tahun 2015 secara keseluruhan telah tercapai dengan baik sesuai dengan

dan prasarana dalam waktu 4 (empat) tahun sejumlah Rp16.000.000,00, sisa le bih tahun 2019 yang diterima a tau diperoleh oleh Yayasan HIS tidak dapat dikecualikan