Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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 POLITEKNIK JAMBI | Irwan Kurniawan, ST
1
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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
POLITEKNIK JAMBI | Irwan Kurniawan, ST
2
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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 datadata 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.
3
POLITEKNIK JAMBI | Irwan Kurniawan, ST
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
Alternatif Functions SCK (SPI Bus Serial Clock) MISO (SPI Bus Master Input /Slave Output) MOSI (SPI Bus Master Output/Slave Input) തതത ܵܵ (SPI Slave Select Input) AIN1 (Analog Comparator Negatif Input) OC0 (Timer/Counter0 Output Compare Match Output) AIN0 (Analog Comparator Positif Input) INT2 (External Interrupt 2 Input)) T1 (Timer/Counter1 Eksternal Counter Input) 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 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
Alternatif Functions TOSC2 (timer Oscillator Pin 2) TOSC1 (timer Oscillator Pin 1) TDI (JTAG Test data In) TDO (JTAG Test data Output) TMS (JTAG Test Mode Select) TCK (JTAG Test Clock) SDA (Two-wire Serial Bus Data Input/Output Line) SCL (Two-wire Serial Bus Clock Line)
4
POLITEKNIK JAMBI | Irwan Kurniawan, ST
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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 PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0
Alternatif Functions OC2 (Timer/Counter2 Output Compare Match Output) ICP1 (Timer/Counter1 Input Capture Pin) OC1A (Output Compare A Match Output) OC1B (Output Compare B Match Output) INT1 (External Interrupt 1 Input) INT0 (External Interrupt 0 Input) TXD (USART Output Pin) 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.
POLITEKNIK JAMBI | Irwan Kurniawan, ST
5
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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; PORTA = 0b10001110;
semua pin dari PORTA sebagai output (luaran)
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.
6
POLITEKNIK JAMBI | Irwan Kurniawan, ST
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
Apa itu pull-up ? 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)
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; PORTC = 0b00001111;
pin PC0-PC3 dari PORTC sebagai input(masukan) pull-up pin PC0-PC3 diaktifkan
7
POLITEKNIK JAMBI | Irwan Kurniawan, ST
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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.
POLITEKNIK JAMBI | Irwan Kurniawan, ST
8
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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; } 9
POLITEKNIK JAMBI | Irwan Kurniawan, ST
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang
for ( [tipe_data nilai awal] ; [syarat] ; [operasi nilai] ) { [statement1]; [statement2]; ... } Contoh : for (int i=0;i++;i<100){ delay_ms(100); data = data + 10; PORTA = data; }
while: digunakan untuk pengulangan (looping) jika dan sealama memenuhi suatu kondisi masih dipenuhi (pengulangan selama benar)
while ( [persyaratan] ) { [statement1]; [statement2]; ... } Contoh : while (data == 0xf0){ delay_ms(100); data = PINC; data = data & 0xf0; PORTA = data; }
Operasi Logika dan Bilangan Biner
Operator Logika
Biner
AND: && NOT: ! OR : ||
AND: & OR : | XOR : ^ Shift right: >> Shift left : <<
POLITEKNIK JAMBI | Irwan Kurniawan, ST
10
Modul Praktikum Mikrokontroler ATMEGA-16 Mengenal Mikrokontroler ATMEGA-16
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 terusmenerus, contoh... void main() { // pernyataan-pernyataan program while (1); // infinite loop { // pernyataan2 } } Untuk keluar dari infinite looping gunakan perintah break;
11
POLITEKNIK JAMBI | Irwan Kurniawan, ST