Tutorial Pemrograman Mikrokontroler AVR dengan AVR Studio dan WinAVR GCC (ATMega16/32/8535)

Ukuran: px
Mulai penontonan dengan halaman:

Download "Tutorial Pemrograman Mikrokontroler AVR dengan AVR Studio dan WinAVR GCC (ATMega16/32/8535)"

Transkripsi

1 Tutorial Pemrograman Mikrokontroler AVR dengan AVR Studio dan WinAVR GCC (ATMega16/32/8535) Versi oleh Agfianto Eko Putra dan Dhani Nugraha Unit Layanan Elektronika dan Instrumentasi Jurusan Ilmu Komputer dan Elektronika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada Yogyakarta 2011 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 1

2 Tutorial Pemrograman Mikrokontroler AVR dengan AVR Studio dan WinAVR GCC (ATMega16/32/8535) Disusun oleh: Agfianto Eko Putra dan Dhani Nugraha - dhan_t46@yahoo.com Daftar Isi 1. Apakah Mikrokontroler itu? Pengetahuan Dasar Mikrokontroler AVR Pendahuluan Memilih AVR yang benar Ada apa dengan Mikrokontroler AVR ATMega16? Ringkasan Fitur-fitur Mikrokontroler AVR ATMega Diagram Pin dan Diagram Blok Mikrokontroler AVR ATMega Penjelasan Singkat Pin-pin pada Mikrokontroler AVR ATMega Pengenalan Bahasa C untuk Mikrokontroler AVR Struktur Penulisan Bahasa C Tipe-tipe data dalam Bahasa C Deklarasi Variabel dan Konstanta Pernyataan Fungsi Pernyataan berkondisi dan Pengulangan Operasi Logika dan Bilangan Biner Operasi Aritmetika Pengulangan Terus-menerus atau Infinite Looping Menggunakan AVR Studio 4 dengan WinAVR GCC Masukan/Luaran (I/O) pada Mikrokontroler AVR Register DDRx Register PORTx Register PINx Percobaan-1: LED berkedip-kedip Percobaan-2: Membunyikan buzzer! Percobaan-3: Aplikasi Pushbutton untuk ON/OFF LED Timer/Counter dan Watchdog pada Mikrokontroler AVR Percobaan-4: Menggunakan Timer Percobaan-5: Menggunakan Timer Percobaan-6: Menggunakan Timer Percobaan-7: Lima Kali pencacahan aplikasi Counter Tentang Watchdog Percobaan-8: Aplikasi Watchdog (Bagian-1) Percobaan-9: Aplikasi Watchdog (Bagian-2) Interupsi dan Aplikasinya Pendahuluan Interupsi Mikrokontroler AVR Percobaan-10: ON/OFF LED menggunakan Interupsi Timer Percobaan-11: ON/OFF LED melalui Interupsi Eksternal Komunikasi Serial Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 2

3 8.1. Penghasil Detak - Clock Generator Mengirim Data USART Transmitter Menerima Data USART Receive Percobaan-12: Komunikasi Serial LCD dan ADC Rangkaian antarmuka LCD dan ADC Percobaan-13: Aplikasi LCD Bagian Percobaan-14: Aplikasi LCD Bagian Percobaan-15: Aplikasi LCD Bagian Percobaan-16: Aplikasi LCD Bagian Percobaan-17: Menggunakan ADC Internal Bagian Percobaan-18: Menggunakan ADC Internal Bagian Komunikasi I2C untuk RTC dan EEPROM Pendahuluan RTC DS Komunikasi I 2 C pada RTC DS Rangkaian Baku RTC DS Percobaan-19: Aplikasi RTC (I2C) Bagian Percobaan-20: Aplikasi RTC (I2C) Bagian Tentang Two-wire Serial EEPROM AT24C32/ Percobaan-21: Akses EEPROM Internal Percobaan-22: Akses EEPROM Eksternal (I2C) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 3

4 1. Apakah Mikrokontroler itu? Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer (atau Mikrokomputer), antara lain: Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPU (Central Processing Unit); CPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari ROM (Read Only Memory) 1 atau RAM (Random Access Memory) 2 ; Sama-sama memiliki RAM yang digunakan untuk menyimpan data-data sementara atau yang lebih dikenal dengan variabel-variabel; Sama-sama memiliki beberapa luaran dan masukan (I/O) yang digunakan untuk melakukan komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), perhatikan bagan yang ditunjukkan pada Gambar 1. Masukanmasukan sensor cahaya sensor suhu sensor tekanan, dll Pemroses uc AT89 uc AVR uc PIC16F, dll Luaran-luaran aktuator - motor relay speaker, dll Gambar 1. Bagan masukan, pemrosesan hingga luaran Lantas apa yang membedakan antara Mikrokontroler dengan Komputer atau Mikrokomputer? Begitu mungkin pertanyaan yang ada di benak kita, saat kita membaca beberapa daftar kesamaan yang sudah saya tuliskan tersebut. Sama sekali berbeda, itu jawaban yang saya berikan kepada Anda: Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer! Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan menekankan pada perbedaan antara Mikrokontroler dan Mikrokomputer: CPU pada sebuah Komputer berada eksternal dalam suatu sistem, sampai saat ini kecepatan operasionalnya sudah mencapai lebih dari 2,5 GHz, sedangkan CPU pada Mikrokontroler berada didalam (internal) sebuah chip, kecepatan kerja atau operasionalnya masih cukup rendah, dalam orde MHz (misalnya, 24 MHz, 40 MHz dan lain sebagainya). Kecepatan yang relatif rendah ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler. Jika CPU pada mikrokomputer menjalankan program dalam ROM atau yang lebih dikenal dengan BIOS (Basic I/O System) pada saat awal dihidupkan, kemudian mengambil atau menjalankan program yang tersimpan dalam hard disk. Sedangkan mikrokontroler sejak awal menjalankan program yang tersimpan dalam ROM internal-nya (bisa berupa Mask ROM atau Flash PEROM atau Flash ROM). Sifat memori program dalam mikrokontroler ini nonvolatile, artinya tetap akan tersimpan walaupun tidak diberi catu daya. 1 Memori yang hanya bisa dibaca saja. 2 Memori yang bisa dibaca juga bisa ditulisi. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 4

5 RAM pada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade ke ukuran yang lebih besar dan berlokasi di luar CPU-nya, sedangkan RAM pada mikrokontroler ada di dalam chip dan kapasitasnya rendah, misalnya 128 byte, 256 byte dan seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi mikrokontroler. Luaran dan masukan (I/O) pada mikrokomputer jauh lebih kompleks dibandingkan dengan mikrokontroler, yang jauh lebih sederhana, selain itu, pada mikrokontroler akses keluaran dan masukan bisa per bit. Jika diamati lebih lanjut, bisa dikatakan bahwa Mikrokomputer atau Komputer merupakan komputer serbaguna atau general purpose computer, bisa dimanfaatkan untuk berbagai macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah special purpose computer atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja. Perhatikan Gambar 2, agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas. Gambar 2. Diagram Blok mikrokontroler (yang) disederhanakan ALU, Instruction Decoder, Accumulator dan Control Logic, sebagaimana ditunjukkan pada Gambar 2, merupakan Otak-nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak OSC (lihat pada Gambar 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. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 5

6 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 lebihd 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. INFORMASI PELATIHAN MIKROKONTROLER, PLC DAN LAIN-LAIN Beberapa catatan mikrokontroler lainnya adalah: Tertanam (atau embedded) dalam beberapa piranti (umumnya merupakan produk konsumen) atau yang dikenal dengan istilah embedded system atau embedded controller; Terdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkan pada bagian lain dari buku ini); Hanya membutuhkan daya yang (cukup) rendah (low power) sekitar 50 mwatt (Anda bandingkan dengan komputer yang bisa mencapai 50 Watt lebih); Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau fungsifungsi khusus; Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp ,00, mikrokontroler AVR di pasaran saat ini juga relatif murah sedangkan Basic Stamp bisa mencapai Rp ,00); Seringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesin atau otomotif atau militer. Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkan arsitekturnya: o Tipe CISC atau Complex Instruction Set Computing yang lebih kaya instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 instruksi); o Tipe RISC atau Reduced Instruction Set Computing yang justru lebih kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an instruksi). Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 6

7 2. Pengetahuan Dasar Mikrokontroler AVR 2.1. Pendahuluan Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama ini ada yang kuno kali??). Perhatikan Gambar 3, Atmel membuat 5 (lima) macam atau jenis mikrokontroler AVR, yaitu: TinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg ) Mikrokontroler (mungil, hanya 8 sampai 32 pin) serbaguna dengan Memori Flash untuk menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM 512 Bytes. MegaAVR (nah yang ini sudah mulai banyak yang nulis bukunya ) Mikrokontroler dengan unjuk-kerja tinggi, dilengkapi Pengali Perangkat keras (Hardware Multiplier), mampu menyimpan program hingga 256 KBytes, dilengkapi EEPROM 4K Bytes dan SRAM 8K Bytes. AVR XMEGA Mikrokontroler AVR 8/16-bit XMEGA memiliki periferal baru dan canggih dengan unjukkerja, sistem Event dan DMA yang ditingkatkan, serta merupakan pengembangan keluarga AVR untuk pasar low power dan high performance (daya rendah dan unjuk-kerja tinggi). AVR32 UC3 Unjuk-kerja tinggi, mikrokontroler flash AVR32 32-bit daya rendah. Memiliki flash hingga 512 KByte dan SRAM 128 KByte. AVR32 AP7 Unjuk-kerja tinggi, prosesor aplikasi AVR32 32-bit daya rendah, memiliki SRAM hingga 32 KByte. Gambar 3. Mikrokontroler Atmel: Sukses melalui inovasi Cuman yang populer di Indonesia adalah tinyavr dan megaavr, itupun masih kalah populer dengan keluarga AT89 yang belakangan juga sudah mulai banyak yang beralih ke AVR. Perbedaan jenis-jenis tersebut terletak dari fasilitas, atau lebih dikenal dengan fitur-fiturnya. Jenis TinyAVR merupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) dan sekaligus fitur-fiturnya juga terbatas dibandingkan yang megaavr. Semua mikrokontroler AVR Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 7

8 memiliki set instruksi (assembly) dan organisasi memori yang sama, dengan demikian berpindahpindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah! Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua periferal-nya, nah Anda akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan mendapatkan rotinya doang yang sama 2.2. Memilih AVR yang benar Moralnya tidak peduli tinyavr, megaavr, XMEGA AVR (AVR32 pengecualian karena masuk ke mikrokontroler 32-bit) semuanya memiliki unjuk-kerja yang sama saja, tetapi dengan kompleksitas atau fasilitas yang berbeda-beda, ibaratnya begini: banyak fasilitas dan fitur = megaavr, fitur atau fasilitas terbatas = TinyAVR. Gitu aja kok repot Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini, berdasar informasi resmi dari Atmel ( dan maaf masih dalam bahasa Inggris (supaya kelihatannya aura kecanggihannya, he he he...). tinyavr o Optimized for simple applications requiring a small microcontroller. o Great performance for cost effective devices. o Fully featured with 10-bit ADCs and high speed PWMs onboard. o Self-Programming Flash memory for maximum flexibility. o debugwire On-Chip Debug and In-System Programming. megaavr o Self-Programming Flash memory with boot block. o High accuracy 10-bit A/D converters with up to x200 analog gain stage. o USART, SPI and TWI(1) compliant serial interfaces. o IEEE compliant JTAG interface on megaavrs with 44 pins or more. o On-Chip Debug through JTAG or debugwire interface. AVR XMEGA o picopower technology for ultra low power consumption o True 1.6 volt operation and CPU speed up to 32 MHz. o Event System and DMA Controller. o High speed, high resolution 12-bit ADC and DAC. o Crypto engine, Timers/Counters and fast communication interfaces. o Accurate and flexible Clock System with dynamic clock switching. AVR32 UC3 o High CPU performance. o Low power consumption. o High data throughput. o Low system cost. o High reliability. o Easy to use. AVR32 AP7 o High CPU perfromance. o Low power consumption. o SIMD / DSP instructions. o Instruction & data caches. o Memory management unit. o Built for embedded Linux Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 8

9 2.3. Ada apa dengan Mikrokontroler AVR ATMega16? O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR ATMega16 karena fitur-fitur yang dibutuhkan. Tentu saja Anda bisa menggunakan tipe AVR lainnya, apakah yang 40 pin atau yang kurang dari itu, bisa ATMega88, ATMega16, ATMega128, ATMega8535, ATMega168 dan lain sebagainya Ringkasan Fitur-fitur Mikrokontroler AVR ATMega16 Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari datasheet-nya, maaf juga masih sebagian besar dalam Bahasa Inggris 3... Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi. Arsitektur RISC tingkat lanjut 131 Instruksi yang ampuh Hampir semuanya dieksekusi dalam satu detak (clock) saja 32 x 8 General Purpose Working Registers Operasi statis penuh Throughput hingga 16 MIPS pada 16 MHz Pengali On-chip 2-cycle High Endurance Non-volatile Memory segments 16K Bytes of In-System Self-programmable Flash program memory 512 Bytes EEPROM 1K Byte Internal SRAM Write/Erase Cycles: 10,000 Flash/100,000 EEPROM Data retention: 20 years at 85 C/100 years at 25 C Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation Programming Lock for Software Security Antarmuka JTAG (IEEE std Compliant) Boundary-scan Capabilities According to the JTAG Standard Extensive On-chip Debug Support Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface Fitur-fitur periferal Dua Pewaktu/Pencacah 8-bit dengan Praskalar dan Mode Pembanding terpisah. Sebuah Pewaktu/Pencacah 16-bit Timer/Counter Dengan Praskalar, Mode Pembanding dan Capture yang terpisah. Pencacah Real Time dengan Osilator terpisah Empat kanal PWM 8-kanal, 10-bit ADC 8 Single-ended Channels 7 Differential Channels in TQFP Package Only 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x Byte-oriented Two-wire Serial Interface Programmable Serial USART Master/Slave SPI Serial Interface Pewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang terpisah Komparator Analog On-chip Fitur-fitur Mikrokontroler khusus 3 Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga fokus pada buku ini tidak melulu pada datasheet... Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 9

10 Reset saat Power-on dan Deteksi Brown-out yang bisa diprogram Internal Calibrated RC Oscillator Sumber interupsi Eksternal dan INternal Enam Mode Sleep: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby I/O and Packages 32 Programmable I/O Lines 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF Tegangan kerja V untuk Atmega16L V untuk Atmega16 Kecepatan (frekuensi clock) 0-8 MHz untuk Atmega16L 0-16 MHz untuk Atmega16 Konsumsi daya pada 1 MHz, 3V, 25 C for Atmega16L Aktif: 1.1 ma Idle Mode: 0.35 ma Mode Power-down: < 1 μa INFORMASI PELATIHAN MIKROKONTROLER, PLC DAN LAIN-LAIN Diagram Pin dan Diagram Blok Mikrokontroler AVR ATMega16 Pada Gambar 4 dan 5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR ATMega16 tipe PDIP dan TQFP/MLF atau dikenal sebagai SMD. Gambar 4. Diagram Pin Mikrokontroler AVR ATMega16 tipe PDIP Pada Gambar 6 dan 7 ditunjukkan diagram blok untuk Mikrokontroler AVR ATMega16, perhatikan begitu banyaknya fitur-fitur dalam diagram blok tersebut, sebagaimana juga sudah saya kutipkan pada bagian sebelumnya. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 10

11 Gambar 5. Diagram Pin Mikrokontroler AVR ATMega16 tipe SMD Penjelasan Singkat Pin-pin pada Mikrokontroler AVR ATMega16 Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR ATMega16. Vcc GND Port A (PA7..PA0) Port B (PB7..PB0) Port C (PC7..PC0) Port D (PD7..PD0) Masukan tegangan catu daya Ground, emang apalagi kalau bukan ground... 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 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 B juga memiliki berbagai macam fungsi alternatif, sebagaimana ditunjukkan pada Tabel 1 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 2 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, 4 Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 11

12 /RESET XTAL1 XTAL2 AVCC AREF sebagaimana ditunjukkan pada Tabel 3 Masukan Reset. Level rendah pada pin ini selama lebih dari lama waktu minimum yang ditentukan akan menyebabkan reset, walaupun clock tidak dijalankan. Masukan ke penguat osilator terbalik (inverting) dan masukan ke rangkaian clock internal. Luaran dari penguat osilator terbalik Merupakan masukan tegangan catu daya untuk Port A sebagai ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak digunakan. Jika ADC digunakan sebaiknya dihubungkan ke Vcc melalui tapis lolos-bawah (low-pass filter). Merupakan tegangan referensi untuk ADC Gambar 6. Diagram blok Mikrokontroler AVR ATMega16 Bagian I Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 12

13 Gambar 7. Diagram blok Mikrokontroler AVR ATMega16 Bagian II Pada Tabel 1, 2 dan 3 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port D. Dalam buku saya ini sengaja penjelasan dari masing-masing fungsi tersebut (kecuali antarmuka JTAG) akan dibahas pada saat digunakan, sehingga Anda bisa memahami langsung dengan mencoba, istilah kerennya Learning by Doing... Tabel 1. Alternatif fungsi PORTB Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 13

14 Tabel 2. Alternatif fungsi PORTC Tabel 3. Alternatif fungsi PORTD INFORMASI PELATIHAN MIKROKONTROLER, PLC DAN LAIN-LAIN Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 14

15 3. Pengenalan Bahasa C untuk Mikrokontroler AVR Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler, khususnya 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... #include < [library1.h] > // Opsional #define [nama1] [nilai]; [global variables] [functions] // Opsional // Opsional // Opsional int main(void) // Program Utama [Deklarasi local variable/constant] [Isi Program Utama] 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 Silahkan ikuti (baca) terus tutorial ini untuk melihat contoh-contoh program di bagian lain tutorial ini Tipe-tipe data dalam Bahasa C char : 1 byte ( -128 s/d 127 ) unsigned char : 1 byte ( 0 s/d 255 ) int: 2 byte ( s/d ) unsigned int: 2 byte ( 0 s/d ) long: 4 byte ( s/d ) unsigned long: 4 byte ( 0 s/d ) 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. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 15

16 3.4. 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=adc/255*100; //contoh rumus perhitungan suhu 3.5. 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]; Pernyataan berkondisi dan Pengulangan if else: digunakan untuk menyeleksi satu atau beberapa kondisi if ( [persyaratan] ) [statement1]; [statement2];... else [statement3]; [statement4];... for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui berapa kali diulang. for ( [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];... do while: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun min 1 kali Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 16

17 do [statement1]; [statement2];... while ([persyaratan]) switch case: digunakan untuk seleksi dengan banyak kondisi switch ( [nama variabel] ) case [nilai1]: [statement1]; break; case [nilai2]: [statement2]; break; Operasi Logika dan Bilangan Biner Operator Logika Biner AND: && NOT:! OR : AND: & OR : XOR : ^ Shift right: >> Shift left : << Lebih besar sama dengan: >= Lebih kecil/besar: <, > Lebih kecil sama dengan : <= 3.8. Operasi Aritmetika Operator Keterangan +, -, *, / Tambah, kurang, kali dan bagi Nilai di sebelah kiri operator ditambah, +=, -=, *=, /= dikurangi, dikali atau dibagi dengan nilai di sebelah kanan operator. % Sisa pembagian ++, -- Ditambah 1 (increment) atau dikurangi satu (decrement) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 17

18 Contoh: a = 5 * / 2 1 hasilnya 30 a *= 5 jika nilai awal a=30, maka hasilnya 150 a += 3 jika nilai awal a=30, maka hasilnya 33 a++ jika nilai awal a=5, maka hasilnya 6 a-- jika nilai awal a=5, maka hasilnya 4, dst 3.9. Pengulangan Terus-menerus atau Infinite Looping Apa itu Pengulangan terus-menerus atau infinite looping? Yaitu suatu pengulangan atau kalang (loop) yang dilakuka 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; Mengapa terjadi Infinite Looping?? Perhatikan pada contoh tersebut, pernyataan atau instruksi while (1) menyatakan bahwa kondisi SELALU BENAR, sehingga selalu dilakukan pengulangan terus-menerus! Coba bedakan dengan contoh berikut... void main() // pernyataan-pernyataan program while (index<5); // infinite loop // pernyataan2 Index += 1; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 18

19 Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari index kurang dari 5, index merupakan variabel sehingga nilainya bisa berubah. Nah, jika index lebih dari atau sama dengan 5, maka pengulangan dihentikan. INFORMASI PELATIHAN MIKROKONTROLER, PLC DAN LAIN-LAIN Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 19

20 4. Menggunakan AVR Studio 4 dengan WinAVR GCC AVR Studio 4 merupakan perangkat lunak gratis (free software) yang bisa anda unduh di internet melalui websitenya Atmel 5. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa mesin (assembly) dan, jika diintegrasikan dengan winavr GCC 6, bahasa C, mensimulasi program yang Anda buat 7 dan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensi.hex yang bisa anda unduh kedalam IC mikrokontroller anda. Untuk pertama kali, Anda harus melakukan instalasi AVR Studio 4 ini ke komputer anda, jika ingin diintegrasikan dengan WinAVR GCC, lakukan instalasi WinAVR GCC terlebih dahulu sebelum AVR Stdui 4.0. Cara menginstalnya pun mudah layaknya anda menginstal perangkat lunak komputer yang lain. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4.0 saat pertama kali Anda jalankan. Gambar 8. Tampilan awal AVR Studio 4.0 Wizard Dialog Tampilan yang ditunjukkan pada Gambar 8 bukan merupakan tampilan utama dari AVR Studio 4, melainkan kotak dialog wizard yang akan menuntun kita, khususnya, membuat program baru (lihat pada tanda panah, bahwa dialog ini diaktifkan setiap kali AVR Studio 4 dijalankan, hilangkan tanda centang jika Anda tidak ingin mengaktifkan kotak dialog ini di awal program). Okey, sekarang kita klik New Project, sehingga akan ditampilkan pilihan dan isian-isian yang ditunjukkan pada Gambar 9. Perhatikan tanda panah di Gambar 9, lakukan pilihan bahasa apa yang akan Anda gunakan, apakah Atmel AVR Assembler atau AVR GCC? Karena kita akan belajar pemrograman mikrokontroler AVR menggunakan Bahasa C, maka dipilih AVR GCC Unduh WinAVR GCC di 7 Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (device). Jika Anda menginginkan simulasi dengan rangkain dan piranti, gunakan free software lainnya yaitu VMLAB yang bisa diunduh di (versi terbaru saat ebook ini ditulis adalah v3.15) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 20

21 Langkah berikutnya adalah, perhatikan tanda panah di Gambar 10, mengisi Project name (atau nama proyek), Initial file (nama file utama proyek yang bersangkutan) dan Location (tempat menyimpan proyek Anda, klik pada tanda panah jika Anda menginginkan lokasi lainnya). Kemudian klik Next jika sudah selesai. Kemudian ditampilkan Gambar 11. Gambar 9. Halaman 2 kotak dialog wizard Gambar 10. Halaman 2 kotak dialog wizard saat dipilih AVR GCC Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 21

22 Gambar 11. Halaman 3 kotak dialog wizard memilih mikrokontroler AVR Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan, perhatikan tanda panah pada Gambar 11, dan akhiri dengan klik Finish. Sehingga ditampilkan jendela utama dari AVR Studio 4, sebagaimana ditunjukkan pada Gambar 12, dengan editor (perhatikan tanda panah pada Gambar 12) siap digunakan untuk mengetikkan program Anda. Gambar 12. Jendela utama AVR Studio 4 Okey, misalnya sekarang kita ketikkan program berikut, ketik saja dulu, ntar kita terangkan atau berikan penjelasan tentang program ini di halaman-halaman berikutnya... Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 22

23 /* * led_01.c * * Created: 19/07/ :44:08 * Author: agfianto68 */ // program LED01.C // menghidupkan lampu LED pada PORTB #define F_CPU #include "avr/io.h" #define led PORTB //=========================================== void init_devices() DDRB=255; //==========================================program utama int main() init_devices(); led=255; //=========================================== Simpan berkas (program) Anda dengan Ctrl+S atau pilih menu File Save. Kemudian lakukan kompilasi (tekan F7), jika tidak ada kesalahan akan ditampilkan laporan seperti contoh berikut... Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama, selamat ya! Luar biasa! Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 23

24 Lha terus habis gini ngapain? Oya, Anda langsung bisa mensimulasikan-nya (Ctrl+Shift+Alt+F5) dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board mikrokontroler AVR Anda 8. Gambar 13. Jendela Debugger AVR Studio 4 Okey, sampai disini pendahuluan AVR Studio 4-nya, sekarang kita mulai bahas konsep pemrogramannya, antara lain: Konsep Masukan/Luaran atau I/O, dan Timer/Counter pada Mikrokontroler AVR 8 Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di??, dan ikuti diskusi-nya. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 24

25 5. Masukan/Luaran (I/O) pada Mikrokontroler AVR Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler AVR) pada halaman-halaman sebelum ini. Salah satunya adalah memiliki 4 x 8 saluran masukan dan luaran digital (berlogika 0 atau 1), totalnya 32 bit atau 32 pin! Masing-masing diberi nama A, B, C dan D (masing-masing 8 pin atau 8 bit). Kali ini kita akan membahas tentang hal dasar berkaitan dengan konsep I/O atau masukan/luaran pada mikrokontroler AVR: Membaca tingkat tegangan masukan, apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (tegangan sekitar 5 volt maksimal); Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt); Untuk keperlua tersebut, AVR memiliki beberapa register yang terkait, yaitu DDRx, PORTx dan PINx 9, berikut penjelasan masing-masing Register DDRx Digunakan untuk menentukan apakah sebuah pin pada sebuat 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. Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan perintah... DDRA= 0x00; //seluruh pin-pin pada Port A digunakan sebagai input Misalnya lagi, PORTA.0 akan dijadikan masukan sedangkan PORTA.2 sampai PORTA.7 akan digunakan sebagai luaran, maka perintahnya... DDRA= 0xFE; Perhatikan 0xFE (heksa) = 0b (biner), perhatikan baik-baik konversi biner ini, setiap bit nilai biner mewakili Pin-Pin pada PortA Register PORTx Sebagaimana dijelaskan sebelumnya, jika sebuah PORT, semua atau sebagian, dikonfigurasi sebagai masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait di-pullup atau Floating. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin yang terkait terbaca HIGH atau LOW. Untuk memahami hal ini, perhatikan Gambar Tanda x diganti dengan A, B, C atau D menyesuaikan dengan pin masukan/luaran yang digunakan. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 25

26 Gambar 14. Kondisi pullup pada suatu PORT Penjelasan: Jika PIN.1 dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka inilah yang di maksud dengan pullup. Saat tidak ada tegangan dari luar, PIN.1 akan cenderung berkondisi HIGH (logika 1). 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). Kondisi floating biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor. Karena jika di pullup, dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin sensor yang bersangkutan. Perhatikan contoh-contoh berikut... DDRA=0x00; PORTA = 0xFF; Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di-pullup, artinya pada rangkaian yang terkait, jika menggunakan tombol atau pushbutton, jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW. Gunakan contoh rangkaian pada Gambar 15 dan perhatikan tanda panah, pushbutton satu ujung dihubungkan ke pin yang terkait sedangkan ujung lainnya di-gnd-kan. INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan pushbutton, tetapi ini cara yang mudah dan murah meriah... he he he... Contoh lainnya... DDRB= 0x00; PORTB=0x0F; Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b ) atau PORTB.0 sampai PORTB.3 di-pullup, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi floating Register PINx Digunakan untuk membaca masukan pada pin yang bersangkutan, akan dijelaskan pada contoh program di halaman-halaman berikutnya. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 26

27 Gambar 15. Contoh rangkaian aktif rendah tombol pushbutton Percobaan-1: LED berkedip-kedip Percobaan pertama ini menggunakan rangkaian yang ditunjukkan pada Gambar 16 10, sedangkan contoh penempatan LED dan pushbutton (percobaan-3) pada AVR Trainer v2.0 ditunjukkan pada Gambar 17. Gambar 16. Rangkaian LED pada PORTB mikrokontroler ATMega16 10 Gambar AVR Trainer v2.0 selengkapnya ada di cover dari ebook ini! Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 27

28 Gambar 17. Penempatan LED dan Pushbutton pada AVR Trainer v2.0 Listing program ditunjukkan sebagai berikut... Penjelasan: Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 28

29 Baris 1 4 merupakan deklarasi untuk definisi kristal yang digunakan, yaitu MHz 11. Pustaka apa saja yang digunakan (baris 2 dan 3) dan alias untuk PORTB sebagai led (baris 4); Baris 7-10 merupakan subrutin untuk inisialisasi PORTB sebagai luaran (baris 9). Perhatikan bahwa DDRB diberi logika 1 semua (=0xFF atau 255 desimal); Program utama ditunjukkan pada baris 13 23, diawali dengan inisialisasi port (baris 15), kemudian dilakukan pengulangan tak-hingga (baris 16); Yang dilakukan adalah menyalakan LED, dengan cara memberikan logika 1 (baris 18), kemudian melakukan penundaan 1 detik (baris 19), kemudian mematikan LED dengan logika 0 (baris 20) dan diakhiri dengan penundaan 1 detik (baris 21); Demikian seterusnya, LED akan berkedip-kedip dengan tundaan 1 detik Percobaan-2: Membunyikan buzzer! Masih menggunakan rangkaian yang sama seperti sebelumnya, sekarang buzzer juga akan dibunyikan, penempatan buzzer pada AVR Trainer v2.0 dtinjukkan pada Gambar 18. Gambar 18. Buzzer pada AVR Trainer Board v2.0 Perhatikan listing berikut ini... [lihat halaman berikut] Penjelasan: Baris 2 5 sama seperti penjelasan pada percobaan-1; Baris 8 dan 9 digunakan untuk mendeklarasikan suatu instruksi untuk memberikan nilai pada PORTA.7 dengan nilai logika 1 (baris 8) dan logika 0 (baris 9); Selebihnya adalah program utama (baris 19 31), silahkan Anda pelajari dengan seksama. 11 Silahkan membaca artikel saya yang menjelaskan tentang masalah sistem clock pada mikrokontroler AVR di Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 29

30 5.6. Percobaan-3: Aplikasi Pushbutton untuk ON/OFF LED Kali ini menggunakan rangkaian pushbutton yang terhubung ke PORTB (ditunjukkan pada Gambar 15. Ada 2 tombol, satu untuk menyalakan LED dan yang.lain untuk mematikan LED, berikut listing programnya... Penjelasan: [lihat halaman berikut] Baris 1-4 sudah jelas khan? Belum? Ya monggo, silahkan lihat dulu atau baca lagi penjelasan dari percobaan-percobaan sebelumnya, jika sudah paham silahkan kembali lagi kesini... Baris 6 8 digunakan untuk mendeklarasikan 3 macam alias, yaitu tombol, satu dan dua. Jika Anda perhatikan, khusus tombol didefinisikan sebagai register PIND, sebagaimana janji saya sebelumnya register PINx saya jelaskan disini, yaitu digunakan untuk membaca masukan. Artinya untuk memberikan luaran melalui register PORTx sedangkan untuk membaca masukan gunakan register PINx; Perhatikan sekarang pada rutin init_devices() yang berbeda dengan sebelumnya (baris 11 18): o DDRB=255 sama seperti sebelumnya, PORTB semuanya dijadikan sebaga saluran luaran; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 30

31 o PORTD.2 dan PORTD.3 digunakan sebagai saluran masukan, sehingga harus diberi logika 0, caranya bagaimana? Anda bisa langsung memberikan instruksi DDRD = 0b atau DDRB = 0x0C; o DDRD &= ~(1<<2) untuk PORTD.2 (tanda ~ artinya NOT), dan DDRD &= ~(1<<3) untuk PORTD.3, perhatikan masing-masing baris 14 dan 15; o Karena rangkaian pushbutton menggunakan konfgurasi active low 12, maka kedua pin tersebut diaktifkan pullup-nya, menggunakan instruksi masing-masing PORTD = (1<<2) untuk PORTD.2 dan PORTD = (1<<3) untuk PORTD.3, perhatikan baris 16 dan 17. Program utama dimulai dari baris 20 hingga 29: o Diawali dengan inisialisasi device pada 22; o Dilanjutkan dengan mematikan semuan led, baris 23; o Yang diulang-ulang terus menerus menggunakan instruksi for (;;).., sebagaimana dituliskan pada baris 24 hingga 28, adalah proses memeriksa apakah tombol yang dihubungkan ke PIND.2 ditekan? Atau justru tombol di PIND.3 yang ditekan: Jika tombol yang ada di PIND.2 ditekan maka led dinyalakan semua (baris 26), sebaliknya Jika tombol yang ada di PIND.3 ditekan maka led dimatikan semua (baris 27)! Mudah bukan? 12 Jika ditekan bernilai logika 0. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 31

32 6. Timer/Counter dan Watchdog pada Mikrokontroler AVR Timer/Counter dalam mikrokontroler merupakan fasilitas yang salah satu fungsinya dapat digunakan sebagai pewaktu atau cacahan suatu event. Sumber clock atau pemicau dapat dibangkitkan dari sinyal eksternal maupun internal. Jika sumber sinyal pemicu atau clock berasal dari internal maka Timer/Counter berfungsi sebagai pewaktu atau timer dan jika sumber sinyal berasal dari luar maka disebut sebagai pencacah atau counter. Mikrokontroler ATMega16 memiliki 3 buah timer yaitu Timer0, Timer1 dan Timer2. Timer0 dan Timer2 memiliki kapasitas 8-bit sedangkan Timer1 memiliki kapasitas 16-bit. Apa yang dimaksud timer 8 bit dan 16 bit? Timer 8-bit adalah pewaktu yang bisa mencacah atau menghitung hingga maksimal nilai 0xFF heksa (dalam biner = ). Timer 16-bit sama seperti timer 8-bit, hanya saja nilai maksimalnya mencapai 0xFFFF. Pada ebook ini akan dibahas mengenai Timer1, 16-bit, dan untuk dapat menjalankan atau menggunakan Timer1 ini, maka kita harus mempelajari terlebih dulu register-register yang berkaitan dengan Timer1 karena di register itulah tempat pengaturan Timer/Counter1 agar bisa bekerja. Pada Gambar 19 ditunjukkan diagram blok dari Timer1 16-bit, terlihat adanya beberapa register yang terkait, antara lain (dari atas): TCNT1, OCR1A, OCR1B, ICR1, TCCR1A, TCCR1B dan juga beberapa bit-bit terkait seperti: TOV1, OC1A, OC1B dan ICF1. Gambar 19. Diagram blok TIMERn (n diganti dengan 1) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 32

33 Register Timer1 yang akan kita libatkan di awal ini adalah: TCCR1B TCNT1 TIMSK TIFR Register TCCR1B, ditunjukkan pada Gambar 20, merupakan tempat pengaturan clock yang intinya agar Timer/Counter1 bisa bekerja, maka register TCCR1B ini jangan sampai diisi dengan 0x00 (dikosongkan). Gambar 20. Register TCCR1B Kok tidak boleh berisi 0x00 atau semua bit pada TCCR1B nol semua? Coba perhatikan Tabel 4. Sumber clock bisa berasal dari internal mulai dari prescaler 1 hingga 1024 atau bisa juga dari sumber eksternal, semua bisa diatur sesuai atau mengikuti aturan pada Tabel 4. Apa nilai praskalar itu? Timer1 (juga timer/counter lainnya) membutuhkan sumber detak atau clock source. Biasanya sumber detak yang biasa kita pakai berasal dari XTAL. Besarnya maksimum sama dengan XTAL yang digunakan dan minimum XTAL/1024. Nah nilai pembagi atau 1024 inilah yang disebur nilai praskalar atau prescaler. Apa yang terjadi jika semua bit di TCCR1B nol semua? Artinya bit 0, 1 dan 2 juga nol semua, perhatikan Gambar 19, itu artinya CS12=0, CS11=0 dan CS10=0 dan itu menurut Tabel 4 No clock source (Timer/Counter stopped) Timer berhenti bekerja! Atau tidak bekerja!! Tabel 4. Konfigurasi sumber clock atau detak pada TCCR1B Tiga bit (CS12, CS11 dan CS10) ini dulu yang kita perhatikan... Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 33

34 Okey! Register TCNT1 merupakan register pencacah, artinya nilai di dalamnya akan dinaikkan setiap kali ada pemicu, bisa tepi naik atau tepi turun. Jika sumbernya dari dalam (internal) pencacahan dilakukan pada saat tepi naik. Register ini akan mencacah naik dari 0x0000 sampai nilai max 0xFFFF kemudian di-reset kembali lagi ke 0x0000. Overflow (melimpah) terjadi saat kondisi dari 0xFFFF ke 0x0000, sehingga mengakibatkan bit TOV1 pada register TIFR akan di-set (diberi logika 1). Kondisi overflow juga bisa digunakan untuk menjalankan interrupsi. Register TIMSK, yang ditunjukkan pada Gambar 21, merupakan register tempat pengaturan interupsi overflow dari Timer/Counter1 yang ingin diaktifkan atau tidak. Dengan memberikan logika 1 pada bit TOIE1 (bit-2 pada TIMSK), maka interupsi Timer/Counter1 aktif dengan catatan bit interupsi global diaktifkan (bit-7 di register Status SREG, perhatikan Gambar 22). Perhatikan juga bit-bit lain yang berkaitan dengan masing-masing Timer: Timer/Counter-0: OCIE0 dan TOIE0 masing-masing bit 1 dan 0; Timer/Counter-1: TICIE1, OCIE1A, OCIE1B dan TOIE1 masing-masing bit 5, 4, 3 dan 2; Timer/Counter-2: OCIE2 dan TOIE2 masing-masing bit 7 dan 6; Gambar 21. Register TIMSK Penjelasan register SREG 13 : Gambar 22. Register SREG I Global Interrupt Enable: digunakan untuk mengaktifkan interupsi menyeluruh (global); T Bit copy storage H Half Carry Flag S Sign bit V Two s Complement Overflow Flag N Negative flag Z Zero flag C Carry flag 13 Hanya saya tuliskan yang terkait saja, selengkapnya silahkan merujuk datasheet ATMega16. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 34

35 Sedangkan register TIFR (Timer/Counter Interrupt Flag Register), sebagaimana ditunjukkan pada Gambar 23, digunakan sebagai indikator atau penanda apakah sudah terjadi overflow atau belum. Pada Timer/Counter1, kondisi overflow ditandai dengan logika 1 pada bit TOV1 (bit-2) pada register TIFR. Gambar 23. Register TIFR Persamaan untuk mencari waktu jeda yang ingin digunakan adalah berdasarkan nilai awal yang harus dimasukkan ke dalam TCNT1, gunakan persamaan berikut: TCNT1 = (1+0xFFFF) - (waktu *( XTAL / praskalar) ) Waktu waktu yang diinginkan XTAL frekuensi kristal yang dipakai praskalar nilai prescaler (lihat penjelasan berikut ini) 6.1. Percobaan-4: Menggunakan Timer1 Menyalakan dan mematikan LED pada PORTB dengan jeda 1 detik menggunakan Timer1. Bedakan dengan Percobaan-1 dan 2 yang hanya menggunakan fungsi delay yang sama sekali tidak menggunakan fasilitas Timer/Counter. Okey, sekarang kita cari dulu nilai TCNT1-nya... Nilai XTAL-nya 11,0592MHz atau Hz; Nilai praskalarnya 1024; Waktu yang diinginkan 1 detik, maka Gunakan TCNT1 = (1+0xFFFF) - (waktu *( XTAL / prescaler) ), jadi... TCNT1 = ( )-(1detik * ( /1024)) = (1detik*10800) = = (desimal) = D5D0 (heksadesimal) Alternatif lain, Anda bisa menggunakan programnya AVR Timer yang bisa diunduh melalui website Langkah-langkah penggunakan program ini kita jelaskan berikut: 1. Setelah mengunduh program AVR Timer dari langkah selanjutnya adalah menjalankan AVRTimer1Clac.exe untuk perhitungan atau kalkulasi Timer1; 2. Lakukan pengisian beberapa nilai sebagaimana ditunjukkan pada Gambar 23, menyesuaikan dengan kebutuhan yang telah kita tetapkan tadi: a. Frekuensi kristal: 11,0592MHz atau ditulis Hz; b. Pilih nilai prescale sebesar 1024; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 35

36 c. Isikan Timer1 Interrupts per second (berapa kali interupsi/detik) sebesar 1 kali; d. Perhatikan hasilnya (Gambar 24). Listing programnya... Gambar 24. Contoh penggunaan ATMega Timer Calculator TIMER1 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 36

37 Penjelasan: Program ini pada dasarnya sama seperti percobaan-1, hanya saja sekarang tundaan atau jeda menggunakan fasiltas Timer1 yang ada di ATMega16; Cukup saya jelaskan saja subrutin delay1detik(), yang lainnya sama seperti penjelasan percobaanpercobaan sebelumnya: o Baris-15 merupakan pengisian register TCCR1B agar digunakan nilai prescale sebesar 1024, artinya nilai kristal 11,0592MHz dibagi dengan 1024, sekaligus mengaktifkan Timer1; o Baris-16 memberikan nilai awal pada TCNT1 sesuai dengan perhitungan atau kalkulasi yang telah dilakukan sebelumnya, yaitu mengisi dengan nilai awal (desimal) atau 0xD5D0 (heksadesimal); o Baris-17 menunggu hingga terjadi overflow ini merupakan proses pooling bukan interupsi; o Jika sudah terjadi overflow atau melimpah, maka flag TOV1 di-reset (baris 18) dan Timer1 dimatikan (baris 19). Gampang tho!? 6.2. Percobaan-5: Menggunakan Timer2 Okey sekarang saya tunjukkan contoh lainnya menggunakan Timer2 dan penggunaan AVRTimer2Calc ditunjukkan pada Gambar 25. Untuk 10 milidetik diisi 100 kali interupsi per detik. Gambar 25. Contoh penggunaan ATMega Timer Calculator TIMER2 // program TIMER02.C // ON dan OFF LED pada PORTB menggunakan Timer2 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "avr/io.h" #define led PORTB Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 37

38 void init_devices() DDRB=255; //gunakan AVR Delay calculator untuk menghitung //tundaan 10 milidetik dengan frek kristal MHz void delay10ms() TCCR2=0B ; //prescaler 1024 TCNT2=0x94; //isi ulang 0x94 agar 1 detik while(!(tifr&(1<<tov2))); TIFR=64; //TOV2 di-nolkan dengan menuliskan "1" pada bit ybs TCCR2=0B ; void delay1detik() unsigned char ulang; for(ulang=0; ulang<100; ulang++) delay10ms(); int main() init_devices(); for(;;) led=255; delay1detik(); led=0; delay1detik(); Penjelasan (waktu ngisi titik-titik jangan lihat kuncinya dulu ya): Percobaan-5 ini sebenarnya juga mirip/sama dengan percobaan-4 (sebelumnya), hanya saja digunakan fasilitas Timer2 untuk melakukan penundaan 1 detik; Anda perhatikan pada 12 hingga 28: o Terdapat subrutin yaitu delay10ms() dan ; o Mengapa kok tidak langsung dilakukan tundaan 1 detik? Mengapa harus melakukan pengulangan kali subrutin delay10ms()? Perhatikan baris 24 27; o Ingat, Timer2 merupakan timer bit, artinya dengan kemampuan seperti itu tidak bisa dilakukan langsung tundaan 1 detik, cara paling gampang untuk mendapatkan tundaan 1 detik atau milidetik adalah mengulang 100 kali tundaan 10 milidetik; o Perhatikan register TCCR2 bit 0, 1 dan 2 pada Gambar 23. Kemudian perhatikan juga Tabel 5 untuk semua kemungkinan nilai CS22, CS21 dan CS20. o Nilai prescale yang digunakan, mengikuti Tabel 5, perhatikan pada baris 14, adalah sebesar atau nilai clock dibagi dengan nilai prescale tersebut; 14 Jawaban: 2 (dua) 15 Jawaban: delay1detik() 16 Jawaban: 100 (seratus) 17 Jawaban: 8 (delapan) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 38

39 o Agar terjadi penundaan sekitar 10 milidetik, maka nilai register TCNT2 (pada baris 15) diberi nilai sebesar heksadesimal atau desimal; Gambar 26. Register TCCR2 o Baris 16 digunakan untuk menunggu terjadinya pada Timer2, kemudian bit overflow tersebut direset (baris-17). o Timer2 kemudian dihentikan dengan memberi nilai pada register TCCR2. Tabel 5. Konfigurasi sumber clock atau detak pada TCCR Percobaan-6: Menggunakan Timer0 Bagaimana kalau menggunakan Timer0? Pengaturan pewaktuan menggunakan AVRTimer0Calc ditunjukkan pada Gambar 27. Untuk penundaan 10 milidetik sebanyak 100 kali, parameter-nya sama seperti Timer2. 18 Jawaban: Jawaban = Jawaban = 148 (seratus empat puluh delapan) 21 Jawaban: overflow 22 Jawaban: 0 (nol) atau 0x00 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 39

40 Berikut listing programnya... Gambar 27. Contoh penggunaan ATMega Timer Calculator TIMER0 // program TIMER03.C // ON dan OFF LED pada PORTB menggunakan Timer0 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "avr/io.h" #define led PORTB void init_devices() DDRB=255; //gunakan AVR Delay calculator untuk menghitung //tundaan 10 milidetik dengan frek kristal MHz void delay10ms() TCCR0=0B ; //prescaler 1024 TCNT0=0x94; //isi ulang 0x94 agar 1 detik while(!(tifr&(1<<tov0))); TIFR=1; //TOV0 di-nolkan dengan menuliskan "1" pada bit ybs TCCR0=0B ; void delay1detik() unsigned char ulang; for(ulang=0; ulang<100; ulang++) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 40

41 delay10ms(); int main() init_devices(); for(;;) led=255; delay1detik(); led=0; delay1detik(); 6.4. Percobaan-7: Lima Kali pencacahan aplikasi Counter // program COUNTER.C // 5 kali pencacahan menaikkan angka pada PORTC // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "avr/io.h" #include "avr/interrupt.h" // saatnya menggunakan interupsi #define led PORTC #define pencacah PORTD volatile unsigned int cacah; // sbg volatile agar tetap global // di dalam ISR ISR(TIMER0_OVF_vect) TCNT0=0xFB; // isi ulang 0xFB agar 5 kali saja ++cacah; // setara dengan -5 (negatif 5) // -- untuk aktivasi interupsi TIMER0 -- void enable_timer0() TIMSK =(1<<TOIE0); // -- untuk deaktivasi interupsi TIMER0 -- void disable_timer0() TIMSK&=~(1<<TOIE0); void init_devices() DDRC=255; DDRD=255; int main() init_devices(); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 41

42 // Inisialisasi Timer/Counter 0 // Sumber detak: pin T0 Rising Edge // Mode: Normal top=ffh TCCR0=0x06; // Luaran OC0 output: tidak dihubungkan OCR0=0x00; // Nilai awal dari Timer/Counter 0 (-5 desimal) TCNT0=0xFB; enable_timer0(); sei(); cacah=1; while(1) led = cacah; pencacah = TCNT0; 6.5. Tentang Watchdog Pewaktu watchdog merupakan piranti pewaktuan perangkat keras yang bisa memicu reset sistem pada saat program utama, karena ada beberapa keasalahan, seperti hang, mengabaikan layanan rutin ke watchdog (biasanya seperti pemberian pulsa secara rutin), atau gampangannya kalo Anda punya anjing atau kucing kemudian lupa memberikan makan, apa yang terjadi? Ya jegog atau ngeong khan?? Dalam hal ini, saat jegog atau ngeong, pewaktu watchdog akan mereset sistem. Intinya, mengembalikan sistem ke awal mula (kondisi normal) karena telah terjadi kesalahan atau hang tadi Pewaktu Watchdog pada mikrokontroler AVR mendapatkan clock dari osilator internal 1 MHz yang tersendiri (khusus). Dengan melakukan pengontrolan Watchdog Prescaler, interval reset yang dilakukan Watchdog dapat diatur dan mengikuti Tabel 6. Gambar 28 menunjukkan diagram blok pewaktu watchdog pada mikrokontroler AVR sedangkan Gambar 29 menunjukkan register yang terlibat. Tabel 6. Pemilihan Watchdog Prescaler Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 42

43 Gambar 28. Pewaktu Watchdog Gambar 29. Register Watchdog WDTCR Kesimpulan: Mikrokontroler AVR memiliki pewaktu Watchdog internal. Pewaktu watchdog adalah pewaktu yang bisa me-reset mikrokontroler saat mencapai nilai tertentu. Selama jalannya program, pewaktu ini harus di-reset (secara manual) sebelum mencapai nilai maksimum-nya. Hal ini untuk memastikan bahwa program berjalan dengan baik dan benar (kayak bahasa Indonesia aja ya ). Saat program mengalami masalah (hang, crash) atau diam saja pada suatu kalang, maka tidak terjadi proses reset pewaktu Watchdog sehingga RESET sistem secara otomatis akan terjadi Percobaan-8: Aplikasi Watchdog (Bagian-1) Walaupun menggunakan LCD, pembahasan tentang LCD ada di bagian lain dari buku ini, sementara diikuti saja listingnya sebagai berikut... // program WD01.C // tampilan di LCD16x2 dan watchdog #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "avr/wdt.h" #include "lcd_pc.c" //#define WDTO_2S 7 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 43

44 #define led PORTB #define tombol PIND #define satu 2 #define dua 3 //================================================== void init_devices() DDRB=255; //PORTB sebagai luaran DDRD&=~(1<<2); //PORTD.2 sebagai masukan DDRD&=~(1<<3); //PORTD.3 sebagai masukan PORTD =(1<<2); //PULL UP internal pada PORTD =(1<<3); //PORTD.2 dan PORTD.3 aktif DDRC=255; wdt_enable(wdto_2s); // timeout WDT-nya 2 detik // tersedia 15MS, 30MS, 60MS, dst //==========================================program utama int main() init_devices(); init_lcd(); led=0; lcd_goto(line1); lcd_puts("mulai awal..."); _delay_ms(100); lcd_clrscr(); while(1) _delay_ms(1000); wdt_reset(); //harus direset WDT-nya lcd_goto(line1); lcd_puts("watchdog mega16"); lcd_goto(line2); lcd_puts("telah direset.."); _delay_ms(1000); _delay_ms(1000); //=========================================== 6.7. Percobaan-9: Aplikasi Watchdog (Bagian-2) // program WD02.C // tampilan di LCD16x2 dan watchdog serta pushbutton #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "avr/wdt.h" Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 44

45 #include "lcd_pc.c" //#define WDTO_2S 7 #define led PORTB #define tombol PIND #define satu 2 #define dua 3 //================================================== void init_devices() DDRB=255; //PORTB sebagai luaran DDRD&=~(1<<2); //PORTD.2 sebagai masukan DDRD&=~(1<<3); //PORTD.3 sebagai masukan PORTD =(1<<2); //PULL UP internal pada PORTD =(1<<3); //PORTD.2 dan PORTD.3 aktif DDRC=255; wdt_enable(wdto_2s); //timeout WDT-nya 2 detik //tersedia 15MS, 30MS, 60MS, dst //==========================================program utama int main() init_devices(); init_lcd(); led=0; lcd_goto(line1); lcd_puts("mulai awal..."); _delay_ms(100); lcd_clrscr(); while(1) _delay_ms(1000); wdt_reset(); //harus direset WDT-nya lcd_goto(line1); lcd_puts("watchdog mega16"); lcd_goto(line2); lcd_puts("telah direset.."); while (!bit_is_clear(tombol,satu)); //menunggu tombol ditekan //jika tidak ditekan //WDT akan mereset uc //=========================================== Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 45

46 7. Interupsi dan Aplikasinya 7.1. Pendahuluan Interupsi Mikrokontroler AVR Anda bisa membayangkan sebuah sistem elektronik yang selalu mengirimkan atau menampilkan data suhu per detik dan pada saat yang bersamaan melakukan kontrol pengadukan sebuah tangki, artinya proses atau kontrol utama pada sistem tersebut hanya melakukan pengadukan isi tangki dengan kecepatan yang bergantung pada data-data suhu. Setiap detik dilakukan pembacaan data suhu, kemudian ditampilkan pada layar LCD, misalnya, dan dijadikan acuan untuk menetapkan kecepatan pengadukan. Skenario tersebut membutuhkan mekanisme interupsi. Saat proses dilakukan secara normal, kemudian terjadi interupsi, program normal ditinggalkan terlebih dulu, mengerjakan rutin interupsi, kemudian kembali lagi mengerjakan program secara normal. Inilah konsep interupsi...! Mikrokontroler AVR memiliki 21 macam sumber interupsi yang terdiri dari 3 interupsi eksternal dan 18 interupsi internal, sebagaimana ditunjukkan pada Tabel 7. Tabel 7. Daftar Sumber Interupsi Mikrokontroler AVR Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 46

47 7.2. Percobaan-10: ON/OFF LED menggunakan Interupsi Timer0 Percobaan ini merupakan penggunaan TIMER0 melalui interupsi, listing selengkapnya sebagai berikut... // program INTERUPSI_TIMER01.C // ON dan OFF LED pada PORTB // selama 1 detik menggunakan interupsi TIMER0 #define F_CPU #include "avr/io.h" #include "avr/interrupt.h" #define led PORTB ISR(TIMER1_OVF_vect) led=!led; // toggle penyalaan LED (ON/OFF) TCNT1=0xd5d0; //isi ulang 0xD5D0 agar 1 detik TIFR=4; void init_devices() DDRB=255; //LED OUTPUT //============================================== void enable_timer1() TIMSK =(1<<TOIE1); void disable_timer1() TIMSK&=~(1<<TOIE1); void start_timer1() TCCR1B=0B ; void stop_timer1() TCCR1B=0B ; //=============================================== int main() init_devices(); led=1; TCCR1B=0B ; //prescaler 1024 TCNT1=0xd5d0; //isi ulang 0xD5D0 agar 1 detik enable_timer1(); sei(); start_timer1(); //aktivasi interupsi Timer1 //aktivasi interupsi global //jalankan Timer1 while(1); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 47

48 7.3. Percobaan-11: ON/OFF LED melalui Interupsi Eksternal // program INTERUPSI01.C // ON dan OFF LED pada PORTB // melalui interupsi INT0 dan INT1 pada PORTD.2 dan PORTD.3 #define F_CPU #include "avr/io.h" #include "util/delay.h" #include "avr/interrupt.h" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 //interupsi eskternal 0 dan 1 //=============================================================== ISR(INT0_vect) led=0; ISR(INT1_vect) led=255; //================================================================= void enableint0() GICR =(1<<INT0); void disableint0() GICR&=~(1<<INT0); void enableint1() GICR =(1<<INT1); void disableint1() GICR&=~(1<<INT1); void init_devices() DDRB=255; DDRD&=~(1<<2); DDRD&=~(1<<3); PORTD =(1<<2); PORTD =(1<<3); //PORTB sebagai luaran //PORTD.2 sebagai masukan INT0 //PORTD.3 sebagai masukann INT1 //PULL UP internal //semuanya diaktifkan sei(); //aktifkan semua interupsi int main() init_devices(); enableint0(); enableint1(); while(1); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 48

49 8. Komunikasi Serial Komunikasi serial pada mikrokontroler AVR menggunakan fasilitas USART singkatan dari Universal Syncronous and Asyncronous Receiver Transmitter sangat handal dan berguna dalam berbagai aplikasi yang berhubungan antarmuka komunikasi serial dengan PC atau sesama mikrokontroler AVR atau bahkan mikrokontroler lain yang memiliki fasilitas komunikasi serial, misalnya program pemantauan suhu ruangan sekaligus pengontrolan AC atau kipas menggunakan antarmuka program PC Visual Basic atau Delphi, dan lain-lain. Jalur komunikasi serial pada mikrokontroler AVR ATMega16/32/8515 terdapat pada pin PORTD.0 (RXD) dan PORTD.1 (TXD), perhatikan pin-pin yang terkait pada Gambar 4 dan 5. Diagram bloknya ditunjukkan pada Gambar 30. Gambar 30. Diagram blok fasilitas komunikasi serial AVR Berikut fitur-fitur komunikasi serial atau USART pada ATMega16: Full Duplex Operation (Independent Serial Receive and Transmit Registers) Asynchronous or Synchronous Operation Master or Slave Clocked Synchronous Operation High Resolution Baud Rate Generator Supports Serial Frames with 5, 6, 7, 8, or 9 Data Bits and 1 or 2 Stop Bits Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 49

50 Odd or Even Parity Generation and Parity Check Supported by Hardware Data OverRun Detection Framing Error Detection Noise Filtering Includes False Start Bit Detection and Digital Low Pass Filter Three Separate Interrupts on TX Complete, TX Data Register Empty, and RX Complete Multi-processor Communication Mode Double Speed Asynchronous Communication Mode Pembahasan komunikasi serial USART dipisahkan menjadi 3 bagian yaitu Penghasil detak (clock generator), Mengirim data (Data Transmit) dan Menerima data (Data Receive) Penghasil Detak - Clock Generator Penghasil detak atau Clock Generator tergantung pada mode data transfer, yaitu terdapat 4 (empat) mode penghasil detak, yaitu: Normal asynchronous; Double Speed asynchronous; Master synchronous, dan Slave synchronous. Pada Gambar 31 ditunjukkan diagram blok logik penghasil detak yang terkait dengan beberapa register seperti UBRR (16-bit: UBRRL dan UBRRH) dan lain-lain. Gambar 31. Diagram blok logik penghasil detak untuk komunikasi serial Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 50

51 Kebanyakan yang digunakan adalah Asynchronous Internal Clock Generator. Register penentuan baudrate atau kecepatan komunikasi serial atau UBRR digunakan dimana nilai yang diberikan adalah untuk down-counter. Setiap kali nilai down-counter mendekati nol, maka sebuah clock dibangkitkan. Anda bisa menghitung berapa nilai UBRR yang sesuai dengan baudrate yang diinginkan mengacu pada osilator atau kristal yang digunakan oleh mikrokontroler menggunakan persamaan BAUD = fclk/(16(ubrr+1)) Persamaan ini digunakan untuk Asynchronous Normal Mode, jika menggunakan mode Double Speed Asynchronous, maka persamaan yang digunakan adalah BAUD = fclk/(8(ubrr+1)) Informasi detil tentang clock generator ini bisa dilihat di datasheet AVR ATMega16. Anda bisa juga memanfaatkan website untuk menghitung secara online. Misalkan digunakan frekuensi osilator untuk mikrokontroler sebesar 8 MHz (atau Hz) dan baudrate yang diinginkan adalah 9600, setelah dihitung menggunakan persamaan diatas diperoleh nilai UBRR sebesar 51, , kita bulatkan menjadi 51. Dengan nilai UBRR =51, maka nilai seseungguhnya dari baudrate adalah 9615 (bukan 9600), jika dibagi dengan 9600 diperoleh dan karena itu error-nya adalah 0.16%. Dengan error tersebut USART masih dapat bekerja tetapi tidak sempurna. Anda bisa menggunakan AVR Assistant yang dibuat oleh Mike Henning (bisa Anda unduh program tersebut di program ini juga bisa digunakan sebagai alternatif dari AVR Timer Calculator yang telah dijelaskan sebelumnya. Tampilan awal ditunjukkan pada Gambar 32. Gambar 32. Contoh penggunaan AVR Assistant v1.3 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 51

52 Penjelasan Gambar 30: Bagian kiri digunakan untuk mengatur baudrate, sedangkan bagian kanan digunakan untuk mengatur Timer0, 1 dan 2 (jadi satu antarmukanya); Contoh untuk baudrate 9600, dengan kristal 8MHz, hasil perhitungannya ditunjukkan pada Gambar 33 kiri, sedangkan untuk kristal 7,372MHz ditunjukkan pada Gambar 33 kanan. Perhatikan perbedaan error %-nya. Gambar 33. Contoh penggunaan AVR Assistant v1.3 untuk dua frekuensi MPU berbeda Untuk contoh pengaturan Timer1 agar menunda interupsi terjadi 100 kali per detik (seperti kasus timer yang dijelaskan sebelumnya), dengan frekuensi kristal 11,059MHz, ditunjukkan pada Gambar 34. Gambar 34. Contoh penggunaan untuk TIMER1 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 52

53 Untuk mengatasi ketidak-akuratan baudrate tersebut, biasanya digunakan kristal dengan frekuensi 7,372MHz atau 11,0592MHz. Perhatikan informasi selengkapnya untuk nilai UBRR di Tabel 8. Tabel 8. Nilai-nilai UBRR dengan 8MHz, 7,372MHz dan 11,0592MHz 23 Berikut adalah subrutin yang digunakan untuk menghitung nilai UBRR pada winavr GCC Variabel MYUBRR digunakan untuk menyimpan nilai UBRR setelah dilakukan perhitungan sebagaimana ditunjukkan pada listing tersebut. Pemanggilannya menggunakan instruksi initserial(myubrr); 23 Hasil perhitungan dari Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 53

54 8.2. Mengirim Data USART Transmitter Pengirim USART atau UASRT Transmitter dapat diaktifkan dengan memberikan logika satu di bit TXEN yang terdapat dalam register UCSRB pada bit-3, perhatikan register UCSRB yang ditunjukkan pada Gambar 35. Gambar 35. Register UCSRB Saat bit TXEN diberi logika 1, artinya USART Transmitter diaktifkan, dengan demikian pin TxD pada PORTD.1 hanya bisa digunakan untuk pengiriman data pada komunikasi serial. Lakukan terlebih dahulu inisialisasi baudrate, mode kerja dan format data sebelum mengirimkan data-data melalui port serial. Untuk mengatur berapa stop bit, digunakan USBS pada register UCSRC, Gambar 36, sedangkan mengatur lebar bit data digunakan UCSZ2 (di register UCSRB), UCSZ1 dan UCSZ0 (di register UCSRC) mengikuti Tabel 9. Gambar 36. Register UCSRC Tabel 9. Jumlah data bit yang ditentukan UCSZ2..0 Jika Anda menggunakna mode sinkron, maka pin XCK (PORTB.0) hanya boleh digunakan untuk mengirimkan detak atau clock transmisi. Berikut adalah subrutin yang digunakan untuk mengaktifkan UASRT Transmitter pada winavr GCC. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 54

55 Penjelasan: Perhatikan baris 12 (selain TXEN=1, sekaligus untuk mengakifkan UASRT Receiver di RXEN=1). Format datanya 8-bit data (lihat Tabel 4) dengan instruksi (3<<UCSZ0), 1-bit stop dengan instruksi (1<<USBS). Karena UCSRC menggunakan lokasi yang sama dengan UBBRH, maka URSEL harus diberi logika 1 untuk mengakses UCSRC dengan instruksi (1<<URSEL). Berikut adalah subrutin (b dan uart_putc()) yang digunakan untuk mengirimkan sebuah data (karakter) Penjelasan: Pada subrutin pertama, uart_putc(), data dikirimkan dengan cara menuliskan sebuah kode karakter ke register UDR, perhatikan Gambar 37, perhatikan baris 19; Namun sebelum menuliskan atau mengisi register UDR, ditunggu dulu nilai bit UDRE (bit- 5) pada register UCSRA (Gambar 38) agar bernilai 1 (satu), maksudnya jika UDRE=1 berarti UDR-nya kosong dan siap mengirim data berikutnya, perhatikan baris 18; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 55

56 Gambar 37. Register UDR Read dan Write Gambar 38. Register UCSRA Subrutin kedua, yaitu uart_puts() digunakan untuk mengirimkan serangkaian data (tidak hanya satu karakter saja), perhatikan terjadinya pengulangan subtrutin uart_putc() pada baris 27 dan Menerima Data USART Receive Untuk menerima data, USART Receiver dapat kita aktifkan dengan memberikan logika 1 pada bit RXEN yang terdapat dalam register UCSRB, perhatikan kembali Gambar 33. Saat bit RXEN diberi logika 1, artinya USART Reciever diaktifkan, dengan demikian pin RxD pada PORTD.0 hanya bisa digunakan untuk penerimaan data pada komunikasi serial. Berikut adalah cara yang digunakan untuk menerima data (karakter), ada di dalam program utama (main()): Untuk menerima data caranya mudah, yaitu dengan memeriksa apakah bit RXC (bit ke 7) pada register UCSRA bernilai 1? Perhatikan Gambar 36 dan baris 50. Jika RXC bernilai 1 artinya UDR Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 56

57 berisi data yang diterima secara serial, sehingga setelah terdeteksi RXC=1, dilanjutkan dengan menyalin isi UDR ke suatu variabel (pada contoh digunakan tempserial), sebagaimana ditunjukkan pada baris Percobaan-12: Komunikasi Serial Percobaan komunikasi serial ini bertujuan menampilkan dua kalimat pembuka dan mengirim kembali apapun yang diketikkan melalui terminal serial (hasil-nya ditunjukkan pada Gambar 39), misalnya, jika diketik a, maka karakter a ini dikirim kembali ke serial, perhatikan baris 52 dan 53 pada listing program berikut: Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 57

58 Gambar 39. Ragkaian untuk komunikasi serial dan contoh running hasil aplikasi Konektor komunikasi serial pada AVR Trainer Board v2.0 ditunjukkan pada Gambar 40. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 58

59 Gambar 40. Koneksi serial RS232 pada AVR Trainer Board v2.0 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 59

60 9. LCD dan ADC 9.1. Rangkaian antarmuka LCD dan ADC Gambar 41. Rangkaian antarmuka LCD 4-bit data Gambar 42. Tampilan sebuah LCD 16x2 karakter Pada Gambar 41 ditunjukkan rangkaian baku antarmuka LCD, yang contohnya ditunjukkan pada Gambar 42, merupakan tipe 2x16 karakter dan tentunya masih ada tipe-tipe lainnya. Penjelasan Gambar 41: D4 s/d D7: jalur data 4-bit (LCD bisa mendukung antarmuka 4 bit atau 8 bit, untuk efisiensi pin, pada modul ini hanya dibahas antarmuka 4-bit); Pin R/W di-gnd-kan, artinya data dikirim sebagai proses WRITE (menulis) ke LCD; Pin RS dan E masing-masing disambungkan ke pin pada mikrokontroler AVR untuk melakukan pengontrolan Register Select dan Enable. Anda tidak perlu kawatir bagaimana caranya mengontrol LCD, karena sudah diurus langsung oleh pustakan AVR GCC; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 60

61 Gambar 43. Rangkaian dasar LCD dan ADC serta komponen-komponen lainnya Gambar 44. Penampil LCD dan Masukan ADC pada AVR Basic Trainer v2.0 Pada Gambar 43 ditunjukkan contoh rangkaian antarmuka LCD dan ADC dengan ATMega16 yang bisa digunakan untuk latihan-latihan antarmuka LCD dan ADC. Sedangkan pada Gambar 44 ditunjukkan komponen-komponen LCD dan masukan ADC yang terkait pada papan AVR Basic Trainer v2.0. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 61

62 9.2. Percobaan-13: Aplikasi LCD Bagian-1 Percobaan ini akan menampilkan tulisan saya manusia pada baris pertama dan tulisan keren pada baris kedua di LCD 16x2 karakter dengan antarmuka LCD 4-bit data. // program LCD_01.C // tampilan di LCD16x2 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "util/delay.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" //================================================== void init_devices() DDRC=255; // PORTC sebagai luaran ke LCD //===============program utama====================== int main() init_devices(); init_lcd(); lcd_goto(line1); lcd_puts(" saya manusia"); lcd_goto(line2); lcd_puts(" keren"); while(1); 9.3. Percobaan-14: Aplikasi LCD Bagian-2 Percobaan ini akan menampilkan tulisan saya manusia pada baris pertama dan tulisan keren pada baris kedua di LCD 16x2 karakter dengan antarmuka LCD 4-bit data dengan berkedip-kedip. // program LCD_02.C // tampilan di LCD16x2 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "util/delay.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" //================================================== void init_devices() DDRC=255; //================program utama===================== int main() init_devices(); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 62

63 init_lcd(); while(1) lcd_goto(line1); lcd_puts(" saya manusia"); lcd_goto(line2); lcd_puts(" keren"); _delay_ms(250); lcd_clrscr(); _delay_ms(250); 9.4. Percobaan-15: Aplikasi LCD Bagian-3 // program LCD_03.C // tampilan di LCD16x2 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "util/delay.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" //================================================== void init_devices() DDRC=255; //==========================================program utama int main() init_devices(); init_lcd(); lcd_goto(line1); lcd_puts(" abcdef"); lcd_goto(line2); lcd_puts("fedcba "); _delay_ms(250); LCD_RS_LO; while(1) for (int i=1; i<=16; i++) lcd_write(0x1c); // tampilan geser kanan, ke kiri _delay_ms(200); for (int i=1; i<=16; i++) lcd_write(0x18); // tampilan geser kanan, ke kanan _delay_ms(200); _delay_ms(250); //=========================================== Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 63

64 9.5. Percobaan-16: Aplikasi LCD Bagian-4 // program LCD_03.C // tampilan di LCD16x2 // By Agfianto Eko Putra, 2010 #define F_CPU UL #include "util/delay.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 //================================================== void init_devices() DDRD&=~(1<<2); //PORTD.2 sebagai masukan DDRD&=~(1<<3); //PORTD.3 sebagai masukan PORTD =(1<<2); //PULL UP internal pada PORTD =(1<<3); //PORTD.2 dan PORTD.3 aktif DDRC=255; //==========================================program utama int main() init_devices(); init_lcd(); lcd_goto(line1); lcd_puts("belum ada tombol"); lcd_goto(line2); lcd_puts("yang ditekan...!"); while(1) if(bit_is_clear(tombol,satu)) lcd_clrscr(); lcd_goto(line1); lcd_puts("anda menekan"); lcd_goto(line2); lcd_puts("tombol PD2/INT0"); if(bit_is_clear(tombol,dua)) lcd_clrscr(); lcd_goto(line1); lcd_puts("anda menekan"); lcd_goto(line2); lcd_puts("tombol PD3/INT1"); //=========================================== Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 64

65 9.6. Percobaan-17: Menggunakan ADC Internal Bagian-1 Menggunakan rangkaian yang ditunjukkan pada Gambar 41 yang merupakan rangkaian antarmuka ADC dan LCD dengan ATMega16. Pada rangkaian tersebut, kanal atau channel ADC yang digunakan pada latihan ini adalah kanal-0 dan 1 atau ADC0 dan ADC1. Masukan ADC tersebut dihubungkan ke sebuah potensiometer (atau bisa juga diganti dengan LM35 atau sensor apa saja yang menghasilkan tegangan 0 Vref). // program ADC01.C // pembacaan ADC internal M16 #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 unsigned int getadc(unsigned char channeladc) unsigned int adcval; ADMUX=channeladc 0x40; //avcc ADCSRA =(1<<ADEN); ADCSRA =(1<<ADSC); loop_until_bit_is_clear(adcsra,adsc); adcval = ADCW; ADCSRA&=~(1<<ADEN); return adcval; //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRD&=~(1<<2); //INPUT DDRD&=~(1<<3); //INPUT PORTD =(1<<2); //PULL UP INTERNAL AKTIF PORTD =(1<<3); DDRC=255; //==========================================program utama int main() unsigned int tempadc1,tempadc2; init_devices(); init_lcd(); led=0; lcd_goto(line1); lcd_puts("demo ADC-0 dan 1"); lcd_goto(line2); lcd_puts(" AT Mega16!"); _delay_ms(1000); lcd_clrscr(); for(;;) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 65

66 tempadc1=getadc(0); tempadc2=getadc(1); lcd_goto(line1); lcd_puts("pot: "); lcdword(tempadc1); lcd_goto(line2); lcd_puts("ldr: "); lcdword(tempadc2); _delay_ms(500); //=========================================== 9.7. Percobaan-18: Menggunakan ADC Internal Bagian-2 // program ADC02.C // pembacaan ADC internal M16 #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 unsigned int getadc(unsigned char channeladc) unsigned int adcval; ADMUX=channeladc 0x40; //avcc ADCSRA =(1<<ADEN); ADCSRA =(1<<ADSC); loop_until_bit_is_clear(adcsra,adsc); adcval = ADCW; ADCSRA&=~(1<<ADEN); return adcval; //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRD&=~(1<<2); //INPUT DDRD&=~(1<<3); //INPUT PORTD =(1<<2); //PULL UP INTERNAL AKTIF PORTD =(1<<3); DDRC=255; //==========================================program utama int main() unsigned int tempadc1,tempadc2; Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 66

67 unsigned int pot,ldr; init_devices(); init_lcd(); led=0; lcd_goto(line1); lcd_puts("demo ADC-0 dan 1"); lcd_goto(line2); lcd_puts(" AT Mega16!"); _delay_ms(1000); lcd_clrscr(); for(;;) tempadc1=getadc(0); tempadc2=getadc(1); pot=(tempadc1/1024)*5; ldr=(tempadc2/1024)*5; lcd_goto(line1); lcd_puts("pot: "); lcdword(pot); lcd_goto(line2); lcd_puts("ldr: "); lcdword(ldr); _delay_ms(500); //=========================================== Catatan Anda: Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 67

68 10. Komunikasi I2C untuk RTC dan EEPROM Pendahuluan RTC DS1307 Emping (chip/ic) RTC (Real Time Clock) DS1307 bekerja dengan daya rendah (low power), memiliki kalender/jam BCD dan SRAM yang nonvolatile dengan kapasitas 56 bytes. Alamat dan data dikirim melalui 2 kabel dwi- arah. Jam dan kalender pada DS1307 menyediakan informasi detik, menit, jam, hari, tanggal, bulan dan tahun. Banyak hari dalam satu bulan diatur secara otomatis oleh IC ini baik untuk 31 hari maupun kurang. Jam bekerja dalam format 24 jam atau 12 jam dengan indikator AM/PM. DS1307 dapat mendeteksi secara otomatis catu dayanya, jika catu daya ke sistem mati, maka secara otomatis DS1307 akan mengambil catu daya dari baterai (jika dipasang). DS 1307 memiliki 8 buah pin dan tersedia dalam bentuk 8-pin DIP serta 8- pin SOIC. Konfigurasi ditunjukkan pada Gambar 45. Gambar 45. Diagram pin RTC DS1307 Penjelasan Gambar 45: VCC, GND: Tegangan DC disediakan pada pin ini. Vcc bernilai 5 volt. Jika diberikan tegangan 5 volt, IC dapat diakses secara penuh baik untuk menulis maupun membaca data. Ketika baterai disambungkan pada IC dan nilai Vcc dibawah 1.25V BAT. Proses penulisan dan pembacaan data tidak dapat dilakukan, namun proses pencacahan waktu tetap berjalan dan tidak terpengaruh oleh penurunan Vcc, karena IC akan mengambil sumber tegangan dari V BAT. VBAT: digunakan sebagai masukan baterai lithium 3 volt atau sumber energi yang lain. Tegangan baterai harus berkisar antara 2 volt sampai 3.5 volt. Baterai lithium 48 ma atau lebih besar dapat digunakan lebih dari 10 tahun pada suhu 25 C. SCL (Serial Clock Input): SCL digunakan untuk sinkronisasi perpindahan data pada antarmuka serial. SDA (Serial Data Input/Output): SDA berfungsi sebagai pin masukan dan keluaran pada antarmuka serial 2-kabel. Pin SDA dan SCL membutuhkan resistor pull-up sekitar 4K7 ohm. SQW/OUT (Square Wave/Output Driver): jika diaktifkan, SQWE bit harus diset ke 1. SQWE akan mengeluarkan gelombang kotak dengan pilihan frekuensi (1Hz, 4kHz, 8kHz, 32kHz). Pin SQW/OUT membutuhkan resistor pull-up eksternal. SQW/OUT dapat bekerja baik dengan sumber tegangan Vcc maupun tegangan baterai. X1, X2 dihubungkan dengan kristal 32,768kHz Komunikasi I 2 C pada RTC DS1307 Pada komunikasi I2C antara DS1307 dan mikrokontroler, data-data jam dan yang lain dikirim dalam format BCD. Data dikirim per-byte dari mikrokontroler ke DS1307 secara serial. Setelah menerima satu Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 68

69 byte data, DS1307 sebagai slave akan mengirimkan sinyal acknowledge ke mikrokontroler. Sinyal acknowledge adalah tanda bahwa satu byte data telah diterima oleh DS1307. Format pengiriman data waktu ke DS1307 ditunjukkan pada Gambar 46. Gambar 46. Format pengiriman data jam ke DS1307 Untuk format pengiriman data tanggal ditunjukkan pada Gambar 47. Data tanggal ditulis mulai alamat 04H. Untuk pengaturan hari tidak dilakukan, karena DS1307 otomatis akan menyesuaikan hari berdasarkan tanggal yang telah diatur. Gambar 47. Format pengiriman data tanggal ke DS1307 Gambar 48 menunjukkan format pembacaan data dari DS1307. Di awal komunikasi, mikrokontroler akan membangkitkan sinyal start I2C. Kemudian mikrokontroler akan mengirimkan alamat grup dari DS1307 yaitu 1101 dan kode untuk menulis ke DS1307 yaitu 0 pada LSB-nya. Kode tulis ini diberikan ke DS1307 karena mikrokontroler akan menuliskan terlebih dahulu alamat awal pembacaan register DS1307 yaitu 00H. Gambar 48. Format pembacaan data dari DS1307 Setelah itu, proses pembacaan I2C dimulai. Mikrokontroler mengirimkan alamat DS1307 beserta kode instruksi baca. Proses pembacaan dilakukan per-byte dimulai dari register detik sampai register tahun, alamat masing-masing register tersebut ditunjukkan pada Gambar 49. Setelah menerima data 1-byte utuh mikrokontroler akan mengirimkan sinyal acknowledge ke DS1307. Pada akhir pembacaan register tahun, akan dikirim sinyal notacknowledge dan diakhiri dengan sinyal stop. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 69

70 Gambar 49. Register penyimpan informasi kalender di dalam DS Rangkaian Baku RTC DS1307 Rangkaian baku antara mikrokontroler (misalnya ATMega) dengan RTC DS1307 ditunjukkan pada Gambar 50, terlihat bahwa pin SDA dan SCL masing-masing dihubungkan ke dua buah pin yang berbeda pada mikrokontroler, misalnya ke PINC.1 untuk SDA-nya dan ke PINC.0 untuk SCL-nya. Jangan lupa juga memasang tahanan atau resistor pullup sekitar 4K7 pada kedua pin SDA dan SCL, jika lupa atau belum terpasang, dipastikan tidak akan terbaca data-datanya. Gambar 50. Rangkaian baku antarmuka DS Percobaan-19: Aplikasi RTC (I2C) Bagian-1 // program RTC_01.C // penulisan dan pembacaan RTC DS1307 // dengan komunikasi I2C #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #include "i2cman.c" Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 70

71 #define led PORTB volatile unsigned char second,minute,hour,day,date,month,year; char dec2bcd(char num) return ((num/10 * 16) + (num % 10)); char bcd2dec(char num) return ((num/16 * 10) + (num % 16)); void dectobcdrtc() hour=dec2bcd(hour); minute=dec2bcd(minute); second=dec2bcd(second); date=dec2bcd(date); month=dec2bcd(month); year=dec2bcd(year); void bcdtodecrtc() hour=bcd2dec(hour); minute=bcd2dec(minute); second=bcd2dec(second); date=bcd2dec(date); month=bcd2dec(month); year=bcd2dec(year); void gettimertc() i2c_start(); i2c_transmit_byte(0xd0); i2c_transmit_byte(0); i2c_start(); i2c_transmit_byte(0xd1); second=i2c_receive_byte(ack); minute=i2c_receive_byte(ack); hour=i2c_receive_byte(ack); day=i2c_receive_byte(ack); date=i2c_receive_byte(ack); month=i2c_receive_byte(ack); year=i2c_receive_byte(no_ack); i2c_stop(); _delay_ms(10); bcdtodecrtc(); void rtc_lcd() lcd_goto(line1); lcd_putc((hour / 10) + 48); lcd_putc((hour % 10) + 48); lcd_putc(58); //karakter ":" lcd_putc((minute / 10) + 48); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 71

72 lcd_putc((minute % 10) + 48); lcd_putc(58); lcd_putc((second / 10) + 48); lcd_putc((second % 10) + 48); lcd_goto(line2); lcd_putc((date / 10) + 48); lcd_putc((date % 10) + 48); lcd_putc(47); //karakter "/" lcd_putc((month / 10) + 48); lcd_putc((month % 10) + 48); lcd_putc(47); lcd_putc((year / 10) + 48); lcd_putc((year % 10) + 48); //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRC=255; //==========================================program utama int main() init_devices(); init_lcd(); lcd_goto(line1); lcd_puts(" Demo RTC "); lcd_goto(line2); lcd_puts(" DS1307"); _delay_ms(1000); lcd_clrscr(); while(1) gettimertc(); rtc_lcd(); led=second; _delay_ms(1000); //=========================================== Percobaan-20: Aplikasi RTC (I2C) Bagian-2 // program RTC_02.C // penulisan dan pembacaan RTC DS1307 // dengan komunikasi I2C + beep setiap 30 detik #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #include "i2cman.c" #define led PORTB Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 72

73 volatile unsigned char second,minute,hour,day,date,month,year; char dec2bcd(char num) return ((num/10 * 16) + (num % 10)); char bcd2dec(char num) return ((num/16 * 10) + (num % 16)); void dectobcdrtc() hour=dec2bcd(hour); minute=dec2bcd(minute); second=dec2bcd(second); date=dec2bcd(date); month=dec2bcd(month); year=dec2bcd(year); void bcdtodecrtc() hour=bcd2dec(hour); minute=bcd2dec(minute); second=bcd2dec(second); date=bcd2dec(date); month=bcd2dec(month); year=bcd2dec(year); void beep() PORTA = (1<<7); _delay_ms(10); PORTA &= ~(1<<7); //_delay_ms(100); void gettimertc() i2c_start(); i2c_transmit_byte(0xd0); i2c_transmit_byte(0); i2c_start(); i2c_transmit_byte(0xd1); second=i2c_receive_byte(ack); minute=i2c_receive_byte(ack); hour=i2c_receive_byte(ack); day=i2c_receive_byte(ack); date=i2c_receive_byte(ack); month=i2c_receive_byte(ack); year=i2c_receive_byte(no_ack); i2c_stop(); _delay_ms(10); bcdtodecrtc(); Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 73

74 void rtc_lcd() lcd_goto(line1); lcd_putc((hour / 10) + 48); lcd_putc((hour % 10) + 48); lcd_putc(58); //karakter ":" lcd_putc((minute / 10) + 48); lcd_putc((minute % 10) + 48); lcd_putc(58); lcd_putc((second / 10) + 48); lcd_putc((second % 10) + 48); lcd_goto(line2); lcd_putc((date / 10) + 48); lcd_putc((date % 10) + 48); lcd_putc(47); //karakter "/" lcd_putc((month / 10) + 48); lcd_putc((month % 10) + 48); lcd_putc(47); lcd_putc((year / 10) + 48); lcd_putc((year % 10) + 48); //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRA = (1<<7); DDRC=255; //==========================================program utama int main() init_devices(); init_lcd(); lcd_goto(line1); lcd_puts(" Demo RTC "); lcd_goto(line2); lcd_puts(" DS1307"); _delay_ms(1000); lcd_clrscr(); while(1) gettimertc(); rtc_lcd(); led=second; if ((second==0) (second==30)) beep(); _delay_ms(1000); //=========================================== Tentang Two-wire Serial EEPROM AT24C32/64 Fitur dari 2-wire (komunikasi TWI atau I2C) Serial EEPROM AT24C32/64 sebagai berikut... Low-Voltage and Standard-Voltage Operation o 2.7 (VCC = 2.7V to 5.5V) Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 74

75 o 1.8 (VCC = 1.8V to 5.5V) Low-Power Devices (ISB = 2 μa at 5.5V) Available Internally Organized 4096 x 8 (32KB), 8192 x 8 (64 KB) 2-Wire Serial Interface Schmitt Trigger, Filtered Inputs for Noise Suppression Bidirectional Data Transfer Protocol 100 khz (1.8V, 2.5V, 2.7V) and 400 khz (5V) Clock Rate Write Protect Pin for Hardware Data Protection 32-Byte Page Write Mode (Partial Page Writes Allowed) Self-Timed Write Cycle (10 ms max) High Reliability o Endurance: 1 Million Write Cycles o Data Retention: 100 Years Automotive Grade and Extended Temperature Devices Available Diagram pin beserta keterangan pin-nya ditunjukkan pada Gambar 51. Sedangkan diagram blok-nya ditunjukkan pada Gambar 52. Pin A0 A2 digunakan untuk menentukan alamat dari divais AT24C32/64 yang bersangkutan, bisa 8 macam alamat, dari 0 hingga 7. Untuk rangkaian, kaki atau pin SDA dan SCL dihubungkan ke 2 pin berbeda dari mikrokontroler yang bersangkutan, komunikasi-nya sama seperti DS1307, yaitu menggunakan TWI atau I2C. Gambar 51. Diagram Pin AT24C32/64 Jika pin atau kaki write protect dihubungkan ke GND, maka bekerja secara normal, bisa baca dan tulis. Sedangkan jika dihubungkan ke Vcc, maka penulisan ke kuadran teratas (8/16K bit) dilarang atau tidak bisa. Untuk pengalamat divais ini melalui program, gunakan rujukan yang ditunjukkan pada Gambar 53. dengan format 4 bit awal selalu 1010 kemudian diikuti dengan 3 bit alamat divais dan 1 bit untuk operasi pembacaan (R) atau penulisan (W). Jika pin R/W = 0, maka terjadi penulisan data. Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 75

76 Gambar 52. Diagram blok AT24C32/64 Gambar 53. Pengalamatan divais AT24C32/64 Berikut ini diberikan dua contoh program mengakses EEPROM. Percobaan pertama mengakses EEPROM internal, dalam hal ini tidak diperlukan akses I2C, dan yang kedua mengakses EEPROM eksternal yang membutuhkan protokol I2C Percobaan-21: Akses EEPROM Internal // program EEPROM_INT.C // penulisan dan pembacaan EEPROM internal M16 #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #include "eeprom.c" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 76

77 //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRC=255; //==========================================program utama int main() unsigned char tempeeprom; init_devices(); init_lcd(); led=0; lcd_goto(line1); //introduksi melalui LCD lcd_puts("demo EEPROM"); lcd_goto(line2); lcd_puts("internal Mega16"); _delay_ms(1000); lcd_clrscr(); lcd_goto(line1); lcd_puts("tulis EEPROM"); writeeeprom(0,101); _delay_ms(1000); lcd_goto(line1); lcd_puts("baca EEPROM..."); tempeeprom=readeeprom(0); _delay_ms(1000); lcd_clrscr(); lcd_goto(line1); lcd_puts("hasilnya..."); lcd_goto(line2); lcdbyte(tempeeprom); led=tempeeprom; //tulis ke alamat 0x00 //baca dari alamat 0x00 //tampilkan hasil baca ke LCD while(1); //=========================================== Percobaan-22: Akses EEPROM Eksternal (I2C) // program EEPROM_EXT01.C // penulisan dan pembacaan EEPROM eksternal // komunikasi I2C AT24C64 #define F_CPU UL #include "util/delay.h" #include "stdlib.h" #include "avr/io.h" #include "avr/pgmspace.h" #include "lcd_pc.c" #include "i2cman.c" #include "i2c_at24c64.c" #define led PORTB #define tombol PIND #define satu 2 #define dua 3 Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 77

78 //========================================================= void init_devices() DDRB=255; //LED OUTPUT DDRC=255; //==========================================program utama int main() unsigned char tempeeprom; init_devices(); init_lcd(); lcd_goto(line1); lcd_puts(" Demo EEPROM "); lcd_goto(line2); lcd_puts(" AT24C2"); _delay_ms(1000); lcd_clrscr(); lcd_goto(line1); lcd_puts("tulis EEPROM"); i2c_eeprom_write(0,202); _delay_ms(1000); lcd_goto(line1); lcd_puts("baca EEPROM..."); tempeeprom=i2c_eeprom_read(0); _delay_ms(1000); lcd_clrscr(); lcd_goto(line1); lcd_puts("hasilnya..."); lcd_goto(line2); lcdbyte(tempeeprom); led=tempeeprom; //tulis ke alamat 0x00 //baca dari alamat 0x00 //tampilkan hasil baca ke LCD while(1); //=========================================== Catatan: Saran dan masukan untuk buku ini silahkan kirim ke terima kasih! --- selesai --- Copyright (c) 2011 by Agfianto Eko Putra and Dhani Nugraha - 78

FREE e-book v1.0 Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC (ATMega16/32/8535)

FREE e-book v1.0 Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC (ATMega16/32/8535) FREE e-book v1.0 Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC (ATMega16/32/8535) http://klikdisini.com/embedded oleh Agfianto Eko Putra (agfi68@gmail.com) dan Dhani Nugraha (dhan_t46@yahoo.com)

Lebih terperinci

MENGENAL 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

Lebih terperinci

Mikrokontroler AVR. Hendawan Soebhakti 2009

Mikrokontroler AVR. Hendawan Soebhakti 2009 Mikrokontroler AVR Hendawan Soebhakti 2009 Tujuan Mampu menjelaskan arsitektur mikrokontroler ATMega 8535 Mampu membuat rangkaian minimum sistem ATMega 8535 Mampu membuat rangkaian downloader ATMega 8535

Lebih terperinci

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ; Pengenalan Bahasa C 1. Struktur penulisan program #include < [library1.h] > #include < [library2.h] > #define [nama1] [nilai] ; #define [nama2] [nilai] ; [global variables] [functions] void main(void)

Lebih terperinci

DAFTAR PUSTAKA.

DAFTAR PUSTAKA. 66 DAFTAR PUSTAKA http://www.scientificpsychic.com/fitness/diet-kalkulator-id.html http://www.dennysantoso.com/pengukur-lemak-tubuh-ultimategear.html http://haninmauladin.blogspot.com/2011/05/cara-menghitung-lemak-badan.html

Lebih terperinci

MIKROKONTROLER Yoyo Somantri dan Egi Jul Kurnia

MIKROKONTROLER Yoyo Somantri dan Egi Jul Kurnia MIKROKONTROLER Yoyo Somantri dan Egi Jul Kurnia Mikrokontroler Mikrokontroler adalah sistem komputer yang dikemas dalam sebuah IC. IC tersebut mengandung semua komponen pembentuk komputer seperti CPU,

Lebih terperinci

MICROCONTROLER AVR AT MEGA 8535

MICROCONTROLER AVR AT MEGA 8535 MICROCONTROLER AVR AT MEGA 8535 Dwisnanto Putro, S.T., M.Eng. MIKROKONTROLER AVR Jenis Mikrokontroler AVR dan spesifikasinya Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program

Lebih terperinci

Sistem Minimum Mikrokontroler. TTH2D3 Mikroprosesor

Sistem Minimum Mikrokontroler. TTH2D3 Mikroprosesor Sistem Minimum Mikrokontroler TTH2D3 Mikroprosesor MIKROKONTROLER AVR Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi andalan Atmel. Arsitektur ini dirancang memiliki

Lebih terperinci

MICROCONTROLER AVR AT MEGA 8535

MICROCONTROLER AVR AT MEGA 8535 MICROCONTROLER AVR AT MEGA 8535 Dwisnanto Putro, S.T., M.Eng. MIKROKONTROLER AVR Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi andalan Atmel. Arsitektur ini dirancang

Lebih terperinci

BAB II. PENJELASAN MENGENAI System-on-a-Chip (SoC) C8051F Pengenalan Mikrokontroler

BAB II. PENJELASAN MENGENAI System-on-a-Chip (SoC) C8051F Pengenalan Mikrokontroler BAB II PENJELASAN MENGENAI System-on-a-Chip (SoC) C8051F005 2.1 Pengenalan Mikrokontroler Mikroprosesor adalah sebuah proses komputer pada sebuah IC (Intergrated Circuit) yang di dalamnya terdapat aritmatika,

Lebih terperinci

Sistem Mikrokontroler FE UDINUS

Sistem Mikrokontroler FE UDINUS Minggu ke 2 8 Maret 2013 Sistem Mikrokontroler FE UDINUS 2 Jenis jenis mikrokontroler Jenis-jenis Mikrokontroller Secara teknis, hanya ada 2 macam mikrokontroller. Pembagian ini didasarkan pada kompleksitas

Lebih terperinci

BAB II KONSEP DASAR SISTEM MONITORING TEKANAN BAN

BAB II KONSEP DASAR SISTEM MONITORING TEKANAN BAN BAB II KONSEP DASAR SISTEM MONITORING TEKANAN BAN Konsep dasar sistem monitoring tekanan ban pada sepeda motor secara nirkabel ini terdiri dari modul sensor yang terpasang pada tutup pentil ban sepeda

Lebih terperinci

Interfacing. Materi 2: AVR Architecture. Disusun Oleh: I Nyoman Kusuma Wardana

Interfacing. Materi 2: AVR Architecture. Disusun Oleh: I Nyoman Kusuma Wardana 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

Lebih terperinci

BAB III PERANCANGAN SISTEM

BAB III PERANCANGAN SISTEM BAB III PERANCANGAN SISTEM Pada bab ini akan dibahas mengenai perancangan dan realisasi dari perangkat keras maupun perangkat lunak dari setiap modul yang dipakai pada skripsi ini. 3.1. Perancangan dan

Lebih terperinci

1. Pemograman Mikrokontroller Menggunakan BASCOM AVR. Inisialisasi baud yang digunakan.

1. Pemograman Mikrokontroller Menggunakan BASCOM AVR. Inisialisasi baud yang digunakan. 1. Pemograman Mikrokontroller Menggunakan BASCOM AVR $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Inisialisasi mikrokontroller yang digunakan. Inisialisasi Kristal yang digunakan. Inisialisasi

Lebih terperinci

DAFTAR ISI. Daftar Pustaka P a g e

DAFTAR ISI. Daftar Pustaka P a g e DAFTAR ISI Halaman I. DASAR TEORI Mikrokontroler ATmega16 1. Pengertian Mikrokontroler... 2 2. Arsitektur ATmega16... 2 3. Konfigurasi Pena (PIN) ATmega16... 4 4. Deskripsi PIN Mikrokontroler ATmega16...

Lebih terperinci

BAB 2 LANDASAN TEORI. Mikrokontroler AVR (Alf and Vegard s RISC Processor) dari Atmel ini

BAB 2 LANDASAN TEORI. Mikrokontroler AVR (Alf and Vegard s RISC Processor) dari Atmel ini BAB 2 LANDASAN TEORI 2.1 Mikrokontroller ATMega 8535 Mikrokontroler AVR (Alf and Vegard s RISC Processor) dari Atmel ini menggunakan arsitektur RISC (Reduced Instruction Set Computing) yang artinya proses

Lebih terperinci

BAB III TEORI PENUNJANG. Microcontroller adalah sebuah sistem fungsional dalam sebuah chip. Di

BAB III TEORI PENUNJANG. Microcontroller adalah sebuah sistem fungsional dalam sebuah chip. Di BAB III TEORI PENUNJANG 3.1. Microcontroller ATmega8 Microcontroller adalah sebuah sistem fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti proccesor, memori (sejumlah kecil RAM, memori

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1. Karbon Monoksida (CO) Karbon monoksida merupakan gas yang tidak berwarna, tidak berbau, tidak berasa, tidak mudah larut dalam air, tidak menyebabkan iritasi, beracun dan berbahaya

Lebih terperinci

DAFTAR ISI HALAMAN JUDUL... HALAMAN PENGESAHAN P EMBIMBING... HALAMAN PENGESAHAN P ENGUJI... HALAMAN PERSEMBAHAN... HALAMAN MOTTO... KATA PENGANTAR...

DAFTAR ISI HALAMAN JUDUL... HALAMAN PENGESAHAN P EMBIMBING... HALAMAN PENGESAHAN P ENGUJI... HALAMAN PERSEMBAHAN... HALAMAN MOTTO... KATA PENGANTAR... DAFTAR ISI HALAMAN JUDUL... HALAMAN PENGESAHAN P EMBIMBING... HALAMAN PENGESAHAN P ENGUJI... HALAMAN PERSEMBAHAN... HALAMAN MOTTO... KATA PENGANTAR... ABSTRAKSI... TAKARIR... DAFTAR ISI... DAFTAR TABEL...

Lebih terperinci

BAB III LANDASAN TEORI. Kinerja tinggi, rendah daya Atmel AVR 8-bit Microcontroller Instruksi Powerfull - Kebanyakan Single-jam Siklus Eksekusi

BAB III LANDASAN TEORI. Kinerja tinggi, rendah daya Atmel AVR 8-bit Microcontroller Instruksi Powerfull - Kebanyakan Single-jam Siklus Eksekusi BAB III LANDASAN TEORI 3.1 Microcontroller ATMega32 Fitur Kinerja tinggi, rendah daya Atmel AVR 8-bit Microcontroller Advanced RISC Arsitektur - 131 Instruksi Powerfull - Kebanyakan Single-jam Siklus Eksekusi

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.2.1.1 Sensor Load Cell Prinsip kerja dari sensor tekanan ini adalah mengubah tegangan mekanis menjadi sinyal listrik. Ukuran ketegangan didasarkan pada prinsip bahwa tahanan pengantar

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA 1.1 Penelitian Terdahulu Sebagai bahan pertimbangan dalam penelitian ini akan dicantumkan beberapa hasil penelitian terdahulu : Penelitian yang dilakukan oleh Universitas Islam

Lebih terperinci

BAB II DASAR TEORI. 2.1 Ethanol

BAB II DASAR TEORI. 2.1 Ethanol BAB II DASAR TEORI 2.1 Ethanol Ethanol yang kita kenal dengan sebutan alkohol adalah hasil fermentasi dari tetes tebu. Dari proses fermentasi akan menghasilkan ethanol dengan kadar 11 12 %. Dan untuk menghasilkan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Teori Dasar Mikrokontroller ATMega8535 Perkembangan teknologi telah maju dengan pesat dalam perkembangan dunia elektronika, khususnya dunia mikroelektronika. Penemuan silicon

Lebih terperinci

BAB III PERANCANGAN SISTEM

BAB III PERANCANGAN SISTEM BAB III PERANCANGAN SISTEM 3.1 Rancangan Perangkat Keras 3.1.1 Blok Diagram Sistem Blok diagram dari sistem AVR standalone programmer adalah sebagai berikut : Tombol Memori Eksternal Input I2C PC SPI AVR

Lebih terperinci

BAB II KONSEP DASAR PERANCANGAN

BAB II KONSEP DASAR PERANCANGAN BAB II KONSEP DASAR PERANCANGAN Pada bab ini akan dijelaskan konsep dasar sistem keamanan rumah nirkabel berbasis mikrokontroler menggunakan modul Xbee Pro. Konsep dasar sistem ini terdiri dari gambaran

Lebih terperinci

Pengenalan CodeVisionAVR

Pengenalan CodeVisionAVR Pengenalan CodeVisionAVR Hendawan Soebhakti Oktober 2009 Sub Pokok Bahasan Pengenalan CodeVision Menampilkan Data Ke Port Output Membaca Data Dari Port Input 2 CodeVisionAVR C Compiler CodeVisionAVR C

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1. Sistem Minimum AVR USB Sistem minimum ATMega 8535 yang didesain sesederhana mungkin yang memudahkan dalam belajar mikrokontroller AVR tipe 8535, dilengkapi internal downloader

Lebih terperinci

BAB II TINJAUAN PUSTAKA. Atmel AVR adalah jenis mikrokontroler yang paling sering dipakai dalam

BAB II TINJAUAN PUSTAKA. Atmel AVR adalah jenis mikrokontroler yang paling sering dipakai dalam BAB II TINJAUAN PUSTAKA 2.1 Mikrokontroler ATMega 8535 Atmel AVR adalah jenis mikrokontroler yang paling sering dipakai dalam bidang elektronika dan instrumentasi. Mikrokontroler AVR ini memiliki arsitektur

Lebih terperinci

BAB II LANDASAN TEORI. Dalam merancang sebuah peralatan yang cerdas, diperlukan suatu

BAB II LANDASAN TEORI. Dalam merancang sebuah peralatan yang cerdas, diperlukan suatu BAB II LANDASAN TEORI 2.1. Perangkat Keras Dalam merancang sebuah peralatan yang cerdas, diperlukan suatu perangkat keras (hardware) yang dapat mengolah data, menghitung, mengingat dan mengambil pilihan.

Lebih terperinci

PENGANTAR MIKROKOMPUTER PAPAN TUNGGAL (SINGLE CHIP) Oleh : Sumarna, Jurdik Fisika, FMIPA UNY

PENGANTAR MIKROKOMPUTER PAPAN TUNGGAL (SINGLE CHIP) Oleh : Sumarna, Jurdik Fisika, FMIPA UNY PENGANTAR MIKROKOMPUTER PAPAN TUNGGAL (SINGLE CHIP) Oleh : Sumarna, Jurdik Fisika, FMIPA UNY E-mail : sumarna@uny.ac.id A. Utama Sistem Mikrokomputer Gambar berikut menunjukkan 5 (lima) unit utama dalam

Lebih terperinci

BAB III PERANCANGAN ALAT DAN PROGRAM MIKROKONTROLER. program pada software Code Vision AVR dan penanaman listing program pada

BAB III PERANCANGAN ALAT DAN PROGRAM MIKROKONTROLER. program pada software Code Vision AVR dan penanaman listing program pada BAB III PERANCANGAN ALAT DAN PROGRAM MIKROKONTROLER Pada tahap perancangan ini dibagi menjadi 2 tahap perancangan. Tahap pertama adalah perancangan perangkat keras (hardware), yang meliputi rangkaian rangkaian

Lebih terperinci

MIKROKONTROLER Arsitektur Mikrokontroler AT89S51

MIKROKONTROLER Arsitektur Mikrokontroler AT89S51 MIKROKONTROLER Arsitektur Mikrokontroler AT89S51 Ringkasan Pendahuluan Mikrokontroler Mikrokontroler = µp + Memori (RAM & ROM) + I/O Port + Programmable IC Mikrokontroler digunakan sebagai komponen pengendali

Lebih terperinci

BAB III PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS

BAB III PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS BAB III PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS 3.1. Pendahuluan Perangkat pengolah sinyal yang dikembangkan pada tugas sarjana ini dirancang dengan tiga kanal masukan. Pada perangkat pengolah sinyal

Lebih terperinci

BAB II DASAR TEORI 2.1. Mikrokontroler AVR ATmega32

BAB II DASAR TEORI 2.1. Mikrokontroler AVR ATmega32 BAB II DASAR TEORI Pada bab ini akan menerangkan beberapa teori dasar yang mendukung terciptanya skripsi ini. Teori-teori tersebut antara lain mikrokontroler AVR ATmega32, RTC (Real Time Clock) DS1307,

Lebih terperinci

BAB 2 LANDASAN TEORI. Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu. dua macam memori yang sifatnya berbeda yaitu:

BAB 2 LANDASAN TEORI. Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu. dua macam memori yang sifatnya berbeda yaitu: BAB 2 LANDASAN TEORI 2.1 Perangkat Keras 2.1.1 Mikrokontroler AT89S52 Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu mikrokomputer CMOS 8 bit dengan daya rendah, kemampuan tinggi,

Lebih terperinci

PERBANDINGAN KECEPATAN PENCACAHAN ANTARA TIMER 0 (8 BIT) DENGAN TIMER 1 (16 BIT) PADA SISTEM MIKROKONTROLER

PERBANDINGAN KECEPATAN PENCACAHAN ANTARA TIMER 0 (8 BIT) DENGAN TIMER 1 (16 BIT) PADA SISTEM MIKROKONTROLER PERBANDINGAN KECEPATAN PENCACAHAN ANTARA TIMER 0 (8 BIT) DENGAN TIMER 1 (16 BIT) PADA SISTEM MIKROKONTROLER Arief Hendra Saptadi Program Studi D-III Teknik Telekomunikasi Akademi Teknik Telekomunikasi

Lebih terperinci

BAB III PERANCANGAN SISTEM

BAB III PERANCANGAN SISTEM BAB III PERANCANGAN SISTEM Pada bab ini membahas perencanaan dan pembuatan dari alat yang akan dibuat yaitu Perencanaan dan Pembuatan Pengendali Suhu Ruangan Berdasarkan Jumlah Orang ini memiliki 4 tahapan

Lebih terperinci

TUGAS MATAKULIAH APLIKASI KOMPUTER DALAM SISTEM TENAGA LISTRIK FINAL REPORT : Pengendalian Motor DC menggunakan Komputer

TUGAS MATAKULIAH APLIKASI KOMPUTER DALAM SISTEM TENAGA LISTRIK FINAL REPORT : Pengendalian Motor DC menggunakan Komputer TUGAS MATAKULIAH APLIKASI KOMPUTER DALAM SISTEM TENAGA LISTRIK FINAL REPORT : Pengendalian Motor DC menggunakan Komputer disusun oleh : MERIZKY ALFAN ADHI HIDAYAT AZZA LAZUARDI JA FAR JUNAIDI 31780 31924

Lebih terperinci

MIKROKONTROLER AT89S52

MIKROKONTROLER AT89S52 MIKROKONTROLER AT89S52 Mikrokontroler adalah mikroprosessor yang dirancang khusus untuk aplikasi kontrol, dan dilengkapi dengan ROM, RAM dan fasilitas I/O pada satu chip. AT89S52 adalah salah satu anggota

Lebih terperinci

ARSITEKTUR MIKROKONTROLER AT89C51/52/55

ARSITEKTUR MIKROKONTROLER AT89C51/52/55 ARSITEKTUR MIKROKONTROLER AT89C51/52/55 A. Pendahuluan Mikrokontroler merupakan lompatan teknologi mikroprosesor dan mikrokomputer. Mikrokontroler diciptakan tidak semata-mata hanya memenuhi kebutuhan

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1. Motor DC dan Motor Servo 2.1.1. Motor DC Motor DC berfungsi mengubah tenaga listrik menjadi tenaga gerak (mekanik). Berdasarkan hukum Lorenz bahwa jika suatu kawat listrik diberi

Lebih terperinci

II. TINJAUAN PUSTAKA. Mikrokontroler ATmega8535 merupakan salah satu jenis mikrokontroler keluarga AVR

II. TINJAUAN PUSTAKA. Mikrokontroler ATmega8535 merupakan salah satu jenis mikrokontroler keluarga AVR II. TINJAUAN PUSTAKA A. Mikrokontroler ATmega8535 Mikrokontroler ATmega8535 merupakan salah satu jenis mikrokontroler keluarga AVR (Alf and Vegard s Risc Processor) yang diproduksi oleh Atmel Corporation.

Lebih terperinci

BAB 3 PERANCANGAN SISTEM. pada sistem pengendali lampu telah dijelaskan pada bab 2. Pada bab ini akan dijelaskan

BAB 3 PERANCANGAN SISTEM. pada sistem pengendali lampu telah dijelaskan pada bab 2. Pada bab ini akan dijelaskan BAB 3 PERANCANGAN SISTEM Konsep dasar mengendalikan lampu dan komponen komponen yang digunakan pada sistem pengendali lampu telah dijelaskan pada bab 2. Pada bab ini akan dijelaskan perancangan sistem

Lebih terperinci

MIKROPENGENDALI C TEMU 2b AVR ARCHITECTURE. Oleh : Danny Kurnianto,S.T.,M.Eng Sekolah Tinggi Teknologi Telematika Telkom

MIKROPENGENDALI C TEMU 2b AVR ARCHITECTURE. Oleh : Danny Kurnianto,S.T.,M.Eng Sekolah Tinggi Teknologi Telematika Telkom MIKROPENGENDALI C TEMU 2b AVR ARCHITECTURE Oleh : Danny Kurnianto,S.T.,M.Eng Sekolah Tinggi Teknologi Telematika Telkom SECTION 1. The Feature of AVR Prosesor Family On-chip and In System Programmable

Lebih terperinci

BAB II TEORI DASAR 2.1 Pendahuluan 2.2 Sensor Clamp Putaran Mesin

BAB II TEORI DASAR 2.1 Pendahuluan 2.2 Sensor Clamp Putaran Mesin 4 BAB II TEORI DASAR 2.1 Pendahuluan Pada bab ini akan dijelaskan mengenai teori-teori mengenai perangkatperangkat pendukung baik perangkat keras dan perangkat lunak yang akan dipergunakan sebagai pengukuran

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI BAB 2 LANDASAN TEORI 2.1 Mikrokontroler Atmega8535 Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis atau dihapus (Agus Bejo, 2007). Biasanya digunakan untuk pengontrolan otomatis

Lebih terperinci

BAB II DASAR TEORI. Gambar 2.1 Sensor MLX 90614[5]

BAB II DASAR TEORI. Gambar 2.1 Sensor MLX 90614[5] BAB II DASAR TEORI Dalam bab ini dibahas beberapa teori pendukung yang digunakan sebagai acuan dalam merealisasikan skripsi yang dibuat. Teori-teori yang digunakan dalam pembuatan skripsi ini adalah sensor

Lebih terperinci

BAB III ANALISIS MASALAH DAN RANCANGAN ALAT

BAB III ANALISIS MASALAH DAN RANCANGAN ALAT BAB III ANALISIS MASALAH DAN RANCANGAN ALAT III.1. Analisa Masalah Rotating Display adalah alat untuk menampilkan informasi berupa tulisan bergerak dengan menggunakan motor DC. Hal ini berkaitan dengan

Lebih terperinci

BAB II LANDASAN TEORI. pada itu dapat juga dijadikan sebagai bahan acuan didalam merencanakan suatu system.

BAB II LANDASAN TEORI. pada itu dapat juga dijadikan sebagai bahan acuan didalam merencanakan suatu system. BAB II LANDASAN TEORI Landasan teori sangat membantu untuk dapat memahami suatu sistem. Selain dari pada itu dapat juga dijadikan sebagai bahan acuan didalam merencanakan suatu system. Dengan pertimbangan

Lebih terperinci

BAB III PERANCANGAN SISTEM

BAB III PERANCANGAN SISTEM BAB III PERANCANGAN SISTEM Pada bab ini akan dijelaskan mengenai perancangan dari perangkat keras, serta perangkat lunak dari alat akuisisi data termokopel 8 kanal. 3.1. Gambaran Sistem Alat yang direalisasikan

Lebih terperinci

TKC210 - Teknik Interface dan Peripheral. Eko Didik Widianto

TKC210 - Teknik Interface dan Peripheral. Eko Didik Widianto TKC210 - Teknik Interface dan Peripheral Eko Didik Sistem Komputer - Universitas Diponegoro Review Kuliah Pembahasan tentang: Referensi: mikrokontroler (AT89S51) mikrokontroler (ATMega32A) Sumber daya

Lebih terperinci

Gambar 2.1 Mikrokontroler ATMega 8535 (sumber :Mikrokontroler Belajar AVR Mulai dari Nol)

Gambar 2.1 Mikrokontroler ATMega 8535 (sumber :Mikrokontroler Belajar AVR Mulai dari Nol) BAB II TINJAUAN PUSTAKA 2.1 Mikrokontroler Mikrokontroler merupakan keseluruhan sistem komputer yang dikemas menjadi sebuah chip di mana di dalamnya sudah terdapat Mikroprosesor, I/O Pendukung, Memori

Lebih terperinci

BAB III LANDASAN TEORI. digunakan seperti MCS51 adalah pada AVR tidak perlu menggunakan oscillator

BAB III LANDASAN TEORI. digunakan seperti MCS51 adalah pada AVR tidak perlu menggunakan oscillator BAB III LANDASAN TEORI 3.1 Microcontroller Atmega 8 AVR merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam fungsi. Perbedaannya pada mikro yang pada umumnya digunakan seperti

Lebih terperinci

Rancangan Sistem Autofeeder Ikan pada Aquarium Berbasis Mikrokontroler ATMEGA8535

Rancangan Sistem Autofeeder Ikan pada Aquarium Berbasis Mikrokontroler ATMEGA8535 Rancangan Sistem Autofeeder Ikan pada Aquarium Berbasis Mikrokontroler ATMEGA8535 Dedi Satria Teknik Informatika Universitas Serambi Mekkah dedisatria@serambimekkah.ac.id ABSTRAK Kajian sistem mikrokontroler

Lebih terperinci

RANCANGAN SISTEM PARKIR TERPADU BERBASIS SENSOR INFRA MERAH DAN MIKROKONTROLER ATMega8535

RANCANGAN SISTEM PARKIR TERPADU BERBASIS SENSOR INFRA MERAH DAN MIKROKONTROLER ATMega8535 RANCANGAN SISTEM PARKIR TERPADU BERBASIS SENSOR INFRA MERAH DAN MIKROKONTROLER ATMega8535 Masriadi dan Frida Agung Rakhmadi Program Studi Fisika Fakultas Sains dan Teknologi UIN Sunan Kalijaga Jl. Marsda

Lebih terperinci

BAB III TEORI PENUNJANG. arsitektur Reduced Instruction Set Computer (RISC). Hampir semua instruksi

BAB III TEORI PENUNJANG. arsitektur Reduced Instruction Set Computer (RISC). Hampir semua instruksi BAB III TEORI PENUNJANG Pada bab tiga penulis menjelaskan tentang teori penunjang kerja praktek yang telah dikerjakan. 3.1 Mikrokontroler ATMega16 AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel,

Lebih terperinci

BAB III LANDASAN TEORI

BAB III LANDASAN TEORI BAB III LANDASAN TEORI 3.1 Arduino Uno Arduino UNO adalah board berbasis mikrokontroler pada ATmega328. Board ini memiliki 14 digital input / output pin (dimana 6 pin dapat digunakan sebagai output PWM),

Lebih terperinci

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI 6 BAB 2 LANDASAN TEORI 2.1 Perangkat Keras 2.1.1 Bahasa Assembly MCS-51 Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi

Lebih terperinci

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi 2.. PerangkatLunak 2.1.1. Pemrograman Bahasa C Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA 2.1 Solder Listrik Solder listrik digunakan untuk menempelkan timah pada papan PCB dan rangkaian elektronik lainnya. (Santoso, Martinus & Sugiyanto, 2013) Hasil soldering yang baik

Lebih terperinci

BAB III MIKROKONTROLER

BAB III MIKROKONTROLER BAB III MIKROKONTROLER Mikrokontroler merupakan sebuah sistem yang seluruh atau sebagian besar elemennya dikemas dalam satu chip IC, sehingga sering disebut single chip microcomputer. Mikrokontroler merupakan

Lebih terperinci

BAB 3 PERANCANGAN SISTEM

BAB 3 PERANCANGAN SISTEM BAB 3 PERANCANGAN SISTEM Pada bab ini akan dijelaskan secara umum perancangan sistem pengingat pada kartu antrian dengan memanfaatkan gelombang radio, yang terdiri dari beberapa bagian yaitu blok diagram

Lebih terperinci

Blok sistem mikrokontroler MCS-51 adalah sebagai berikut.

Blok sistem mikrokontroler MCS-51 adalah sebagai berikut. Arsitektur mikrokontroler MCS-51 diotaki oleh CPU 8 bit yang terhubung melalui satu jalur bus dengan memori penyimpanan berupa RAM dan ROM serta jalur I/O berupa port bit I/O dan port serial. Selain itu

Lebih terperinci

JOBSHEET VIII MENGGUNAKAN TIMER/COUNTER DALAM MIKROKONTROLER ATMEGA8535

JOBSHEET VIII MENGGUNAKAN TIMER/COUNTER DALAM MIKROKONTROLER ATMEGA8535 JOBSHEET VIII MENGGUNAKAN TIMER/COUNTER DALAM MIKROKONTROLER ATMEGA8535 1 TUJUAN Mahasiswa mampu menggunakan fitur timer/counter mikrokontroler. Mahasiswa mampu menggunakan mikrokontroler untuk membuat

Lebih terperinci

PERTEMUAN PENGANTAR MIKROKONTROLER

PERTEMUAN PENGANTAR MIKROKONTROLER PERTEMUAN PENGANTAR MIKROKONTROLER Pendahuluan Pengertian Rangkaian Analog Rangkaian Digital Rangkaian Analog Jenis rangkaian elektronika yang dapat memproses signal yang bersifat kontinyu. Perubahan signal

Lebih terperinci

BAB II LANDASAN TEORI. Remote TV adalah suatu pengontrol, yang fungsinya untuk merubah dan

BAB II LANDASAN TEORI. Remote TV adalah suatu pengontrol, yang fungsinya untuk merubah dan BAB II LANDASAN TEORI Landasan teori sangat membantu untuk dapat memahami suatu sistem. Selain dari pada itu dapat juga dijadikan sebagai bahan acuan didalam merencanakan suatu system. Dengan pertimbangan

Lebih terperinci

BAB III PERANCANGAN SISTEM

BAB III PERANCANGAN SISTEM BAB III PERANCANGAN SISTEM Pada Bab III ini akan diuraikan mengenai perancangan perangkat keras dan perangkat lunak yang digunakan untuk membangun sistem keamanan rumah nirkabel berbasis mikrokontroler

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI PLC (Programable Logic Control) adalah kontroler yang dapat diprogram. PLC didesian sebagai alat kontrol dengan banyak jalur input dan output. Pengontrolan dengan menggunakan PLC

Lebih terperinci

BAB III PERANCANGAN DAN REALISASI PERANGKAT KERAS DAN PERANGKAT LUNAK SISTEM. Dari diagram sistem dapat diuraikan metode kerja sistem secara global.

BAB III PERANCANGAN DAN REALISASI PERANGKAT KERAS DAN PERANGKAT LUNAK SISTEM. Dari diagram sistem dapat diuraikan metode kerja sistem secara global. BAB III PERANCANGAN DAN REALISASI PERANGKAT KERAS DAN PERANGKAT LUNAK SISTEM 3.1 Perancangan Perangkat Keras 3.1.1 Blok Diagram Dari diagram sistem dapat diuraikan metode kerja sistem secara global. Gambar

Lebih terperinci

KATA PENGANTAR. Surabaya, Maret Penyusun

KATA PENGANTAR. Surabaya, Maret Penyusun KATA PENGANTAR Puji syukur Alhamdulillah kami panjatkan kehadirat Allah SWT. yang telah melimpahkan Rahmat dan Hidayah-Nya sehingga penyusunan buku Modul Ajar Praktikum Interfacing dapat selesai dengan

Lebih terperinci

PENGENALAN ARDUINO. SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin-pin ini mensupport komunikasi SPI menggunakan SPI library.

PENGENALAN ARDUINO. SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin-pin ini mensupport komunikasi SPI menggunakan SPI library. PENGENALAN ARDUINO Arduino merupakan board mikrokontroller yang berbasis opensource. Ada beberapa macam arduino, salah satunya adalah arduino uno yang akan di gunakan pada kesempatan kali ini. SPESIFIKASI

Lebih terperinci

Apa itu timer/counter?

Apa itu timer/counter? Timer/Counter Apa itu timer/counter? Merupakan suatu pencacah(counter) yang bisa menghitung naik/turun Pencacah berupa register 8 bit/16 bit Nilai cacahan yg tersimpan di register tersebut akan naik/turun

Lebih terperinci

BAB III PERANCANGAN ALAT

BAB III PERANCANGAN ALAT BAB III PERANCANGAN ALAT Pada bab ini menjelaskan tentang perancangan sistem alarm kebakaran menggunakan Arduino Uno dengan mikrokontroller ATmega 328. yang meliputi perancangan perangkat keras (hardware)

Lebih terperinci

BAB IV HASIL DAN PEMBAHASAN. Setelah pembuatan modul maka perlu dilakukan pendataan melalui proses

BAB IV HASIL DAN PEMBAHASAN. Setelah pembuatan modul maka perlu dilakukan pendataan melalui proses BAB IV HASIL DAN PEMBAHASAN 4.1 Pengujian Dan Pengukuran Setelah pembuatan modul maka perlu dilakukan pendataan melalui proses pengujian dan pengukuran. Tujuan dari pengujian dan pengukuran yaitu mengetahui

Lebih terperinci

BAB II METODE PERANCANGAN APLIKASI

BAB II METODE PERANCANGAN APLIKASI BAB II METODE PERANCANGAN APLIKASI 2.1. Landasan Teori Pembuatan termometer digital ini berdasar pada sensor suhu LM35. Nilai suhu yang dibaca oleh sensor ditampilkan pada 4 digit 7-Segment dengan nilai

Lebih terperinci

BAB II TINJAUAN PUSTAKA. Gambar 2.1. Simbol LED [8]

BAB II TINJAUAN PUSTAKA. Gambar 2.1. Simbol LED [8] BAB II TINJAUAN PUSTAKA 2.1. Light Emiting Dioda Light Emiting Diode (LED) adalah komponen yang dapat memancarkan cahaya. Sstruktur LED sama dengan dioda. Untuk mendapatkan pancaran cahaya pada semikonduktor,

Lebih terperinci

PEMBANGKIT DAN PENGHITUNG FREKUENSI

PEMBANGKIT DAN PENGHITUNG FREKUENSI MAKALAH SEMINAR TUGAS AKHIR APLIKASI MIKROKONTROLER ATMEL ATmega8515 SEBAGAI PEMBANGKIT DAN PENGHITUNG FREKUENSI Mustafa Idi Nugroho 1, Sumardi 2, Trias Andromeda 2 Abstrak Pada tugas akhir ini digunakan

Lebih terperinci

Pendahuluan BAB I PENDAHULUAN

Pendahuluan BAB I PENDAHULUAN Pendahuluan BAB I PENDAHULUAN 1.1. Definisi Komputer Komputer merupakan mesin elektronik yang memiliki kemampuan melakukan perhitungan-perhitungan yang rumit secara cepat terhadap data-data menggunakan

Lebih terperinci

JOBSHEET I ANTARMUKA MIKROKONTROLER DENGAN LED

JOBSHEET I ANTARMUKA MIKROKONTROLER DENGAN LED JOBSHEET I ANTARMUKA MIKROKONTROLER DENGAN LED 1 TUJUAN LED Menjelaskan rangkaian antarmuka mikrokontroler dengan LED. Mempraktekkan pemrograman mikrokontroler untuk menyalakan LED. Sebuah LED (Light Emitting

Lebih terperinci

BAB II DASAR TEORI. mikrokontroler yang berbasis chip ATmega328P. Arduino Uno. memiliki 14 digital pin input / output (atau biasa ditulis I/O, dimana

BAB II DASAR TEORI. mikrokontroler yang berbasis chip ATmega328P. Arduino Uno. memiliki 14 digital pin input / output (atau biasa ditulis I/O, dimana BAB II DASAR TEORI 2.1 Arduino Uno R3 Arduino Uno R3 adalah papan pengembangan mikrokontroler yang berbasis chip ATmega328P. Arduino Uno memiliki 14 digital pin input / output (atau biasa ditulis I/O,

Lebih terperinci

BAB 1 PERSYARATAN PRODUK

BAB 1 PERSYARATAN PRODUK BAB 1 PERSYARATAN PRODUK 1.1 Pendahuluan Saat ini teknologi robotika telah menjangkau sisi industri (Robot pengangkut barang), pendidikan (penelitian dan pengembangan robot). Salah satu kategori robot

Lebih terperinci

LAPORAN PRAKTIKUM MIKROKONTROLER. Paralel Input Output

LAPORAN PRAKTIKUM MIKROKONTROLER. Paralel Input Output LAPORAN PRAKTIKUM MIKROKONTROLER Paralel Input Output Disusun Oleh Nama : Yudi Irwanto NIM : 021500456 Prodi Jurusan : Elektronika Instrumentasi : Teknofisika Nuklir SEKOLAH TINGGI TEKNOLOGI NUKLIR BADAN

Lebih terperinci

BAB II LANDASAN TEORI. ATMega 8535 adalah mikrokontroller kelas AVR (Alf and Vegard s Risc

BAB II LANDASAN TEORI. ATMega 8535 adalah mikrokontroller kelas AVR (Alf and Vegard s Risc BAB II LANDASAN TEORI 2.1. Mikrokontroller ATMega 8535 ATMega 8535 adalah mikrokontroller kelas AVR (Alf and Vegard s Risc Processor) keluarga ATMega. Mikrokontroller AVR memiliki arsitektur 8 bit, dimana

Lebih terperinci

III. METODOLOGI PENELITIAN. Penelitian dan perancangan tugas akhir ini telah dimulai sejak bulan Juli 2009

III. METODOLOGI PENELITIAN. Penelitian dan perancangan tugas akhir ini telah dimulai sejak bulan Juli 2009 III. METODOLOGI PENELITIAN A. Waktu dan Tempat Penelitian Penelitian dan perancangan tugas akhir ini telah dimulai sejak bulan Juli 2009 dilakukan di Laboratorium Konversi Energi Elektrik dan Laboratorium

Lebih terperinci

Sistem Tertanam. Pengantar Atmega328 dan Arduino Uno. Dennis Christie - Universitas Gunadarma

Sistem Tertanam. Pengantar Atmega328 dan Arduino Uno. Dennis Christie - Universitas Gunadarma Sistem Tertanam Pengantar Atmega328 dan Arduino Uno 1 Arsitektur Atmega328 Prosesor atau mikroprosesor adalah suatu perangkat digital berupa Chip atau IC (Integrated Circuit) yang digunakan untuk memproses

Lebih terperinci

BAB II KONSEP DASAR SISTEM PENGONTROL PARTITUR OTOMATIS

BAB II KONSEP DASAR SISTEM PENGONTROL PARTITUR OTOMATIS BAB II KONSEP DASAR SISTEM PENGONTROL PARTITUR OTOMATIS Pada BAB II ini akan dibahas gambaran cara kerja sistem dari alat yang dibuat serta komponen-komponen yang digunakan untuk pembentuk sistem. Pada

Lebih terperinci

Mudah Menguasai Pemrograman Mikrokontroler Atmel AVR menggunakan BASCOM-AVR

Mudah Menguasai Pemrograman Mikrokontroler Atmel AVR menggunakan BASCOM-AVR Hak Cipta dilindungi Undang-Undang, 2010 (c) Agfianto Eko Putra Mudah Menguasai Pemrograman Mikrokontroler Atmel AVR menggunakan BASCOM-AVR Agfianto Eko Putra (http://klikdisini.com/embedded) Versi 1.5-2010

Lebih terperinci

BAB II DASAR TEORI. open-source, diturunkan dari Wiring platform, dirancang untuk. memudahkan penggunaan elektronik dalam berbagai

BAB II DASAR TEORI. open-source, diturunkan dari Wiring platform, dirancang untuk. memudahkan penggunaan elektronik dalam berbagai BAB II DASAR TEORI 2.1 Arduino Uno R3 Arduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI BAB II LANDASAN TEORI 2.1 Mikrokontroller ATMEGA 8535 Mikrokontroller merupakan sebuah single chip yang didalamnya telah dilengkapi dengan CPU (Central Processing Unit), RAM (Random Acces Memory), ROM

Lebih terperinci

BAB 3 PERANCANGAN SISTEM

BAB 3 PERANCANGAN SISTEM 22 BAB 3 PERANCANGAN SISTEM Pada bab ini akan dijelaskan keseluruhan dari sistem atau alat yang dibuat. Secara keseluruhan sistem ini dibagi menjadi dua bagian yaitu perangkat keras yang meliputi komponen

Lebih terperinci

BAB III PERANCANGAN SISTEM KONTROL TEST BED AUTOMATIC CRUISE CONTROL

BAB III PERANCANGAN SISTEM KONTROL TEST BED AUTOMATIC CRUISE CONTROL BAB III PERANCANGAN SISTEM KONTROL TEST BED AUTOMATIC CRUISE CONTROL III.1 Alur Perancangan Perancangan sistem kontrol test bed sistem Automatic Cruise Control dilakukan dengan menggunakan alur perancangan

Lebih terperinci

BAB III ANALISA MASALAH DAN PERANCANGAN

BAB III ANALISA MASALAH DAN PERANCANGAN BAB III ANALISA MASALAH DAN PERANCANGAN III.1. Analisa Sub bab ini berisikan tentang analisa sistem yang akan dibangun. Sub bab ini membahas teknik pemecahan masalah yang menguraikan sebuah sistem menjadi

Lebih terperinci

BAB IV HASIL DAN UJI COBA

BAB IV HASIL DAN UJI COBA BAB IV HASIL DAN UJI COBA IV.1. Software Instalasi merupakan hal yang sangat penting karena merupakan proses penginputan data dari komputer ke dalam mikrokontroler. Sebelum melakukan instalasi, hubungkan

Lebih terperinci

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA BAB II TINJAUAN PUSTAKA 2.1 Helm Helm adalah bagian dari perlengkapan kendaraan bermotor berbentuk topi pelindung kepala yang berfungsi melindungi kepala pemakainya apabila terjadi benturan Helm terbagi

Lebih terperinci

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI 16 BAB II LANDASAN TEORI 2.1. Sensor Optocoupler Optocoupler adalah suatu piranti yang terdiri dari 2 bagian yaitu transmitter dan receiver, yaitu antara bagian cahaya dengan bagian deteksi sumber cahaya

Lebih terperinci

Gambar 2.1 Robot Beroda

Gambar 2.1 Robot Beroda BAB II TINJAUAN PUSTAKA 2.1 Mobile Robot Mobile robot merupakan sebuah robot yang dapat bergerak dengan leluasa karena memiliki alat gerak untuk berpindah posisi. Secara umum dan mendasar sebuah mobile

Lebih terperinci

BAB III RANCANG BANGUN SISTEM KARAKTERISASI LED. Rancangan sistem karakterisasi LED diperlihatkan pada blok diagram Gambar

BAB III RANCANG BANGUN SISTEM KARAKTERISASI LED. Rancangan sistem karakterisasi LED diperlihatkan pada blok diagram Gambar BAB III RANCANG BANGUN SISTEM KARAKTERISASI LED 3.1. Rancang Bangun Perangkat Keras Rancangan sistem karakterisasi LED diperlihatkan pada blok diagram Gambar 3.1. Sistem ini terdiri dari komputer, antarmuka

Lebih terperinci

BAB 2 TINJAUAN TEORITIS

BAB 2 TINJAUAN TEORITIS 7 BAB 2 TINJAUAN TEORITIS 1 Konveyor Konveyor hanya bergerak ke satu arah saja, konveyor digerakkan dengan motor stepper 12V type. Sinyal keluaran dari motor stepper untuk menggerakkan konveyor dirangkaikan

Lebih terperinci