FREE e-book v1
FREE e-book v1 ..0
0
T
Tutorial Pemrograman M
utorial Pemrograman M ikrokontroler AVR
ikrokontroler AVR
deng
dengan WinAVR GCC (
an WinAVR GCC (AT
ATMega16/
Mega16/ 32/
32/ 8535)
8535)
http://klikdisini.com/embedded
http://klikdisini.com/embedded
oleh
oleh
Agfianto Eko Putr
Agfianto Eko Putr a
a ((agfi68@gmail.com
agfi68@gmail.com
))dan
dan Dhani Nugraha
Dhani Nugraha ((dhan_t46@yahoo.com
dhan_t46@yahoo.com
))
Dapatkan ebook ini gratis di
Dapatkan ebook ini gratis di http://klikdisini.com/embedded
http://klikdisini.com/embedded
FREE EBOOK!!
FREE EBOOK!!
Jika Anda
Jika Anda merasa ebook ini bermanfaat silahkan mendistribusikan ebook ini dengan
merasa ebook ini bermanfaat silahkan mendistribusikan ebook ini dengan
GRATIS di website Anda atau dimana saja, selama tidak
GRATIS di website Anda atau dimana saja, selama tidak merubah isi yang ada di e
merubah isi yang ada di e-book
-book
ini. Terima kasih…
T
Tutorial Pemrograman M
utorial Pemrograman M ikrokontroler AVR dengan
ikrokontroler AVR dengan
W
W inAVR
inAVR GCC
GCC (A
(AT
TMega16/
Mega16/ 32/
32/ 8535)
8535)
Disusun oleh:
Disusun oleh:
Agfianto Eko P
Agfianto Eko P utra –
utra – agfi68@gmail.com
agfi68@gmail.com
dan
dan
Dhani Nugraha
-Dhani Nugraha - dhan_t46@yahoo.com
dhan_t46@yahoo.com
Daftar Isi
Daftar Isi
1.1. ApaApakah kah MikrokonMikrokontroletroler ir itu? tu? ... .... 33 2.
2. PenPengetahgetahuan uan Dasar Dasar MikrokMikrokontrolontroler Aer AVR VR ... ... 66 2.1.
2.1. PenPendahudahuluan luan ... .... 66 2.2.
2.2. MemilMemilih Aih AVR VR “yan“yang bg benarenar” ” ... ... 77 2.3.
2.3. Ada Ada apa deapa dengan ngan MikrokMikrokontrolontroler AVR er AVR ATMegATMega16? a16? ... ... 88 2.3.1
2.3.1.. RinRingkasan gkasan Fitur-fFitur-fitur Miitur Mikrokonkrokontroler troler AVR AAVR ATMegaTMega16 16 ... ... 88 2.3.2
2.3.2.. DiagDiagram Pin daram Pin dan Din Diagram agram Blok MikBlok Mikrokonrokontroler Atroler AVR AVR ATMegTMega16 a16 ... ... 99 2.3.3
2.3.3.. PenjPenjelasan elasan SingSingkat Pinkat Pin-pin pa-pin pada Mikrokda Mikrokontrolontroler AVR Aer AVR ATMegTMega16 a16 ... ... 1010 3.
3. PenPengenagenalan Blan Bahasahasa C untua C untuk Mik Mikrokonkrokontroler troler AVR AVR ... .. 1313 3.1.
3.1. StrukStruktur Petur Penulinulisan Bsan Bahasa ahasa C C ... ... 1313 3.2.
3.2. TipeTipe-tipe -tipe data daldata dalam Baham Bahasa asa C C ... ... 1414 3.3.
3.3. DeklDeklarasi arasi VariabVariabel dan el dan KonsKonstanta tanta ... .. 1414 3.4.
3.4. PernyPernyataan ataan ... .... 1414 3.5.
3.5. FunFungsi gsi ... ... 1414 3.6.
3.6. PernyPernyataan ataan berberkondikondisi si dan dan PengPengulanulangan...gan... ... 1414 3.7.
3.7. OperasOperasi i LogiLogika daka dan Biln Bilangan angan BineBiner ...r ... ... 1515 3.8.
3.8. OperasOperasi i AritmeAritmetika...tika... .. 1616 3.
3.9.9. PePengngululanangagan Tn Tererusus-m-menenererus aus atatauu Infinite Looping Infinite Looping... ... 1616 4.
4. MenMenggunggunakan akan AVR AVR StudiStudio deno dengan Wigan WinAVR nAVR GCC GCC ... ... 1717 5.
5. MasMasukanukan/Luara/Luaran (I/O) n (I/O) pada pada MiMikrokonkrokontroletroler AVR r AVR ... .. 2222 5.1.
5.1. RegiRegister ster DDRx DDRx ... ... 2323 5
5..22.. RRegegiissteter r PPOORRTxTx... ... 2323 5.3.
5.3. RegiRegister ster PINx PINx ... ... 2424 6.
6. LatihLatihan an TahTahap-I ap-I ... .. 2525 6.1.
6.1. PercobPercobaanaan-1: L-1: LED bED berkeerkedip-kedip-kedip dip ... .. 2525 6.2.
6.2. PercobPercobaanaan-2: Mem-2: Membunyibunyikan kan buzzbuzzer! er! ... ... 2626 6.
6.3.3. PePercrcobobaaaann-3-3: : AAplplikikasasii PushbuttonPushbutton untuk ON/OFF LEDuntuk ON/OFF LED... .. 2828 7.
7. TimTimer/Coer/Counter paunter pada Mida Mikrokonkrokontroletroler AVR r AVR ... ... 2929 7.1.
7.1. PercobPercobaanaan-4: Men-4: Menggunggunakan akan TimerTimer1 1 ... ... 3333 7.2.
7.2. PercobPercobaanaan-5: Men-5: Menggunggunakan akan TimerTimer2 2 ... ... 3535 7.3.
7.3. PercobPercobaanaan-6: Men-6: Menggunggunakan akan TimerTimer0 0 ... ... 3737 8.
8. KomKomunikasi unikasi Serial Serial ... ... 3838 8
8..11.. PPeenngghhasasiil Dl Deetatak -k - Clock Generator Clock Generator ... . 4040 8.2.
8.2. MengMengirim irim Data Data – USA– USART TRT Tranransmitter smitter ... ... 4444 8.3.
8.3. MeneMenerima rima Data Data – US– USARART RecT Receive eive ... ... 4646 8.4.
8.4. PercobPercobaanaan-7: K-7: Komuniomunikasi kasi Serial Serial ... ... 4747 9.
9. SetelSetelah ah Ini Ini kemankemana? a? ... ... 4949 Bonus-1: Hasil kompil
Bonus-1: Hasil kompilasi Flowcode AVR 3.0 yang uniasi Flowcode AVR 3.0 yang unik?! k?! ... ... 5151 Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana ... 55 Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana ... 55
Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter ... 58
Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter ... 58
Bonus-4: FlowCode AVR 3.0: Menghitung Sapi! ... 62
Bonus-4: FlowCode AVR 3.0: Menghitung Sapi! ... 62
Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly ... 73... 73
Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assem Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly bly ... 78... 78
Belajar Mikrokontroler AT89C51/52/ Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2 55: Teori dan Aplikasi, Edisi 2 ... 83... 83
PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN ... . 8484 Penapis Aktif Eltronika: Teori dan Praktek ... 85
Penapis Aktif Eltronika: Teori dan Praktek ... 85
Belajar Bahasa Assembly dengan Emu8086 ... 86
Belajar Bahasa Assembly dengan Emu8086 ... 86
Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 ... 87
Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 ... 87 Pas
Pasti ti Ada Ada HikmHikmahnyaahnya...! ...! ... ... 8888
1.
1. Apak
Apakah M
ah Mikro
ikrokont
kontrol
roler
er itu?
itu?
Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer (atau Mikrokomputer),
(atau Mikrokomputer), antara lain:antara lain:
Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal denganSama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPUCPU ((Central Central
Processing Unit Processing Unit););
CPUCPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya daritersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari
ROM
ROM (( Read Only Memory Read Only Memory))11atauatau RAMRAM (( Random Access Memory Random Access Memory))22;;
Sama-samSama-sama a memilikimemiliki RAMRAM yang digunakan untuk menyimpan data-data sementara atau yangyang digunakan untuk menyimpan data-data sementara atau yang
lebih dikenal dengan
lebih dikenal dengan variabel-variabelvariabel-variabel;;
Sama-sama memiliki beberapa luaran dan masukan (Sama-sama memiliki beberapa luaran dan masukan ( I/OI/O) yang digunakan untuk melakukan) yang digunakan untuk melakukan
komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), perhatikan bagan yang ditunjukkan pada Gambar 1.
perhatikan bagan yang ditunjukkan pada Gambar 1.
Gambar 1. Bagan masukan, pemrosesan hingga luaran Gambar 1. Bagan masukan, pemrosesan hingga luaran Lantas apa yang membedakan antara Mikrokontroler dengan Komputer
Lantas apa yang membedakan antara Mikrokontroler dengan Komputer atau Mikrokomputer? Begituatau Mikrokomputer? Begitu mungkin pertanyaan yang ada di benak kita, saat kita membaca beberapa daftar kesamaan yang 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:
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! Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer!
1 1
Memori yang hanya bisa dibaca saja. Memori yang hanya bisa dibaca saja. 2
2
Memori yang bisa dibaca juga bisa ditulisi. Memori yang bisa dibaca juga bisa ditulisi.
Masukan-masukan
masukan
•
• senssensor or cahacahayaya •
• sensensosor suhr suhuu • • sesensnsoror tekanan, dll tekanan, dll Pemroses Pemroses • • uC uC AAT8T899 • • uC uC AAVRVR • • uC PICuC PIC16F16F, dll, dll Luaran-luaran Luaran-luaran •
• aktaktuatuator or --motor motor •
• rerelalayy •
Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan menekan
menekankan pada kan pada perbedaan antara Mikrokontroler dan Mikrokomputer:perbedaan antara Mikrokontroler dan Mikrokomputer:
CPUCPU pada sebuah Komputer berada eksternal dalam suatu sistem, sampai saat ini kecepatanpada sebuah Komputer berada eksternal dalam suatu sistem, sampai saat ini kecepatan
operasionalnya sudah mencapai lebih dari 2,5 GHz, sedangkan CPU pada Mikrokontroler operasionalnya sudah mencapai lebih dari 2,5 GHz, sedangkan CPU pada Mikrokontroler berada didalam (internal) sebuah
berada didalam (internal) sebuah chipchip, kecepatan kerja atau operasionalnya masih cukup, kecepatan kerja atau operasionalnya masih cukup rendah, dalam orde MHz (misalnya, 24 MHz,
rendah, dalam orde MHz (misalnya, 24 MHz, 40 MHz dan lain sebagainya). Kecepatan yang40 MHz dan lain sebagainya). Kecepatan yang relatif rendah
relatif rendah ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler.ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler.
JikaJika CPUCPU pada mikrokomputer menjalankan program dalampada mikrokomputer menjalankan program dalam ROMROM atau yang lebih dikenalatau yang lebih dikenal
dengan
dengan BIOSBIOS (( Basic I/O System Basic I/O System) pada saat awal dihidupkan, kemudian mengambil atau) pada saat awal dihidupkan, kemudian mengambil atau menjalankan program yang tersimpan dalam hard
menjalankan program yang tersimpan dalam hard disk. Sedangkan mikrokontroler sejak awaldisk. Sedangkan mikrokontroler sejak awal menjalankan program yang tersimpan dalam
menjalankan program yang tersimpan dalam ROMROM internal-nya (bisa berupainternal-nya (bisa berupa Mask ROMMask ROM atau
atau Flash PEROMFlash PEROM atauatau Flash ROMFlash ROM). Sifat ). Sifat memori program dalam mikrokontroler inimemori program dalam mikrokontroler ini non- non-volatile
volatile, artinya tetap , artinya tetap akan tersimpan walaupuakan tersimpan walaupun tidak n tidak diberi catu daya.diberi catu daya.
RAMRAM pada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade kepada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade ke
ukuran yang lebih besar dan berlokasi di luar
ukuran yang lebih besar dan berlokasi di luar CPUCPU-nya, sedangkan RAM pada-nya, sedangkan RAM pada mikrokontroler ada di dalam
mikrokontroler ada di dalam chipchip dan kapasitasnya rendah, misalnya 128 byte, 256 byte dandan kapasitasnya rendah, misalnya 128 byte, 256 byte dan seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi mikrokontroler.
mikrokontroler.
Luaran dan masukan (Luaran dan masukan (I/OI/O) pada mikrokomputer jauh lebih kompleks dibandingkan dengan) pada mikrokomputer jauh lebih kompleks dibandingkan dengan
mikrokontroler, yang jauh lebih sederhana, selain itu,
mikrokontroler, yang jauh lebih sederhana, selain itu, pada mikrokontrolepada mikrokontroler akses keluaran danr akses keluaran dan masukan bisa per bit.
masukan bisa per bit.
Jika diamati lebih lanjut, bisa dikatakan bahwa Mikrokomputer atau Komputer merupakanJika diamati lebih lanjut, bisa dikatakan bahwa Mikrokomputer atau Komputer merupakan
komputer serbaguna atau
komputer serbaguna atau general purpose computer general purpose computer , bisa dimanfaatkan untuk berbagai, bisa dimanfaatkan untuk berbagai macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah
macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah special purposespecial purpose computer
computer atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja.atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja.
Perhatikan Gambar 2, agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas. Perhatikan Gambar 2, agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas.
Gambar 2. Diagram Blok
ALU,
ALU, Instruction Decoder Instruction Decoder,, Accumulator Accumulator dandan Control LogicControl Logic, sebagaimana ditunjukkan pada, sebagaimana ditunjukkan pada Gambar 1.2, merupakan
Gambar 1.2, merupakan OtakOtak-nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak -nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak OSC
OSC (lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat berbagai(lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat berbagai macam periferal seperti
macam periferal seperti SFRSFR ((Special Function RegisterSpecial Function Register) yang bertugas menyimpan data-data) yang bertugas menyimpan data-data sementara selama proses berlangsung).
sementara selama proses berlangsung). Instruction Decoder Instruction Decoder bertugas menerjemahkan setiapbertugas menerjemahkan setiap instruksi yang ada di dalam
instruksi yang ada di dalam Program MemoryProgram Memory (hasil dari pemrograman yang kita (hasil dari pemrograman yang kita buat sebelumnya).buat sebelumnya). Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh
Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh ALUALU (( Arithmetic Arithmetic Logic Unit
Logic Unit), mungkin dengan bantuan memori sementara), mungkin dengan bantuan memori sementara Accumulator Accumulator yang kemudianyang kemudian menghasi
menghasilkan sinyal-sinyal kontrol ke lkan sinyal-sinyal kontrol ke seluruh periferal yang tseluruh periferal yang terkait melaluierkait melalui Control LogicControl Logic.. Memori RAM
Memori RAM atauatau RAM Memory RAM Memory bisa digunakan sebagai tebisa digunakan sebagai tempat penyimpan sementara, sedanmpat penyimpan sementara, sedangkangkan SFR
SFR ((Special Function RegisterSpecial Function Register) sebagian ada yang langsung berhubungan dengan) sebagian ada yang langsung berhubungan dengan I/OI/O daridari mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam operasional mikrokontroler.
operasional mikrokontroler. ADC
ADC atauatau Analog to Digital Converter Analog to Digital Converter (tidak setiap mikrokontroler memiliki ADC internal),(tidak setiap mikrokontroler memiliki ADC internal), digunakan untuk meng
digunakan untuk mengubah data-data analog menjadi digital untuk diolah atau ubah data-data analog menjadi digital untuk diolah atau diproses lebih lanjut.diproses lebih lanjut. Timer
Timer atauatau CounterCounter digunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya sepertidigunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya seperti sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih digunakan sebagai sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih digunakan sebagai penghitung atau pencacah
penghitung atau pencacah event event atau bisa juga digunakan untuk menghitung berapa jumlah pulsaatau bisa juga digunakan untuk menghitung berapa jumlah pulsa dalam satu detik dan lain sebagainya. Biasanya sebuah mikrokontroler bisa memiliki lebihd dari 1 dalam satu detik dan lain sebagainya. Biasanya sebuah mikrokontroler bisa memiliki lebihd dari 1 timer
timer .. EEPROM
EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak mendapatkan(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 sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk melakukan komunikasi dengan periferal eksternal mikrokontroler seperti sensor dan aktuator.
periferal eksternal mikrokontroler seperti sensor dan aktuator.
INFORMASI PELATIHAN PRIVATE AVR DI
INFORMASI PELATIHAN PRIVATE AVR DI
HTTP://KLIKDISINI.COM/PELATIHANAVR
HTTP://KLIKDISINI.COM/PELATIHANAVR
Beberapa catatan mikrokontroler lainnya adalah: Beberapa catatan mikrokontroler lainnya adalah:
‘Tertanam’ (atau‘Tertanam’ (atau embedded embedded ) dalam beberapa piranti (umumnya merupakan produk ) dalam beberapa piranti (umumnya merupakan produk
konsumen) atau yang dikenal dengan istilah
konsumen) atau yang dikenal dengan istilah embedded systemembedded system atauatau embedded controller embedded controller ;;
Terdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkanTerdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkan
pada bagian lain dari buku ini); pada bagian lain dari buku ini);
Hanya membutuhkan daya yang (cukup) rendah (Hanya membutuhkan daya yang (cukup) rendah ( low power low power ) sekitar 50 mWatt (Anda) sekitar 50 mWatt (Anda
bandingkan dengan komputer yang bisa mencapai 50 Watt lebih); bandingkan dengan komputer yang bisa mencapai 50 Watt lebih);
Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau fungsi-Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau
fungsi-fungsi khusus; fungsi khusus;
Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp.Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp.
15.000,00, mikrokontrol
15.000,00, mikrokontroler AVR di pasaran saat er AVR di pasaran saat ini juga relatif murah sedangkan Basic Stampini juga relatif murah sedangkan Basic Stamp bisa mencapai Rp. 500.000,00);
bisa mencapai Rp. 500.000,00);
Seringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesinSeringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesin atau otomotif atau militer.
atau otomotif atau militer.
Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkanMikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkan arsitekturnya:
o
o TipeTipe CISCCISC atauatau Complex Instruction Set ComputingComplex Instruction Set Computing yang lebih kaya instruksi tetapiyang lebih kaya instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 i
fasilitas internal secukupnya saja (seri AT89 memiliki 255 i nstruksi);nstruksi);
o
o TipeTipe RISCRISC atauatau Reduced Instruction Set Computing Reduced Instruction Set Computing yang justru lebih kaya fasilitasyang justru lebih kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an instruksi).
instruksi).
2.
2. Pen
Penget
getahua
ahuan Dasar Mikr
n Dasar Mikrokont
okontrol
roler AVR
er AVR
2
2..1
1..
P
Pe
en
nd
da
ah
hu
ullu
ua
an
n
Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama 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 ini ada yang kuno kali??). Perhatikan Gambar 3, Atmel membuat 5 (lima) macam atau jenis mikrokontroler AVR,
mikrokontroler AVR, yaiyaitu:tu:
TinyAVRTinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg…)(tidak ada kaitannya ama mbak Tini yang jualan gudeg…) Mikrokontroler (mungil, hanya 8 sampai 32 pin)
Mikrokontroler (mungil, hanya 8 sampai 32 pin) serbagunserbaguna dengan Memori Flash untuk a dengan Memori Flash untuk menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM
menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM 512 Bytes.512 Bytes.
MegaAVRMegaAVR (nah yang ini sudah mulai banyak yang nulis bukunya…)(nah yang ini sudah mulai banyak yang nulis bukunya…) Mikrokontroler dengan unjuk-ke
Mikrokontroler dengan unjuk-kerja trja tinggi, dilengkapi Pengali Perangkainggi, dilengkapi Pengali Perangkat t keras (keras ( Hardware Hardware Multiplier
Multiplier ), mampu menyimpan program hingga 256 KBytes, dilengkapi EEPROM 4K Bytes), mampu menyimpan program hingga 256 KBytes, dilengkapi EEPROM 4K Bytes dan SRAM 8K Bytes.
dan SRAM 8K Bytes.
AVR XMEGAAVR XMEGA
Mikrokontroler AVR 8/16-bit XMEGA
Mikrokontroler AVR 8/16-bit XMEGA memiliki periferal baru dan canggih dengan unjuk-memiliki periferal baru dan canggih dengan unjuk-kerja, sistem
kerja, sistem Event Event dan DMA dan DMA yang ditingkatkan, serta yang ditingkatkan, serta merupamerupakan pengembangan keluargakan pengembangan keluarga AVR untuk pasar
AVR untuk pasar low power low power dandan high performancehigh performance (daya rendah dan unjuk-kerja t(daya rendah dan unjuk-kerja tinggi).inggi).
AVR32 UC3AVR32 UC3
Unjuk-kerja tinggi, mikrokontroler flash AVR32 32-bit
Unjuk-kerja tinggi, mikrokontroler flash AVR32 32-bit daya rendah. Memiliki flash hinggadaya rendah. Memiliki flash hingga 512 KByte dan SRAM 128 KByte.
512 KByte dan SRAM 128 KByte.
AVR32 AP7AVR32 AP7
Unjuk-kerja tinggi, prosesor aplikasi AVR32 32-bit
Unjuk-kerja tinggi, prosesor aplikasi AVR32 32-bit daya rendahdaya rendah, , memiliki SRAM hingga 32memiliki SRAM hingga 32 KByte.
KByte.
Gambar 3. Mikrokontroler Atmel: Sukses melalui i
Cuman yang populer di Indonesia adalah
Cuman yang populer di Indonesia adalah tinyAVRtinyAVR dandan megaAVRmegaAVR, itupun masih kalah populer, itupun masih kalah populer dengan keluarga AT89 yang belakangan juga sudah mulai banyak yang beralih ke AVR.
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 Perbedaan jenis-jenis tersebut terletak dari fasilitas, atau lebih dikenal dengan fitur-fiturnya. Jenis TinyAVR
TinyAVR merupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) danmerupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) dan sekaligus fitur-fiturnya juga terbatas dibandingkan yang
sekaligus fitur-fiturnya juga terbatas dibandingkan yang megaAVRmegaAVR. . SemSemua ua mikmikrokrokontrontrololer er AVRAVR memiliki set instruksi (
memiliki set instruksi (assemblyassembly) dan organisasi memori yang sama, dengan demikian berpindah-) dan organisasi memori yang sama, dengan demikian berpindah-pindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah!
pindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah!
Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua per
TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua per iferal-nya, nah Andaiferal-nya, nah Anda akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan mendapatkan rotinya doang yang sama…
mendapatkan rotinya doang yang sama…
2.
2.2.
2.
Me
Memi
mili
lih A
h AVR
VR “y
“yan
ang b
g ben
enar
ar””
Moralnya…
Moralnya… tidak tidak pedulipeduli tinyAVRtinyAVR,, megaAVRmegaAVR,, XMEGA AVRXMEGA AVR ((AVR32AVR32 pengecualian karenapengecualian karena masuk ke mikrokontroler 32-bit) semuanya memiliki unjuk-kerja yang sama saja, tetapi dengan 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 = “kompleksitas” atau fasilitas yang berbeda-beda, ibaratnya begini: banyak fasilitas dan fitur = megaAVR, fi
megaAVR, fitur atur atau fasilitas terbatas = TinyAVR. Gitu aja kok repot…tau fasilitas terbatas = TinyAVR. Gitu aja kok repot…
Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini, berdasar informasi Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini, berdasar informasi rreessmmi i ddaari ri AAtmtmeell ((http://www.atmel.comhttp://www.atmel.com) dan maaf masih dalam bahasa Inggris (supaya) dan maaf masih dalam bahasa Inggris (supaya kelihatannya aura kecanggihannya, he he he...).
kelihatannya aura kecanggihannya, he he he...).
tinyAVRtinyAVR
o
o Optimized for simple applications requiring a Optimized for simple applications requiring a small microcontroller.small microcontroller. o
o Great performance for cost effective devices.Great performance for cost effective devices. o
o Fully featured with 10-bit ADCs and high speed PWMs onboard.Fully featured with 10-bit ADCs and high speed PWMs onboard. o
o Self-Programming Flash memory for maximum flexibility.Self-Programming Flash memory for maximum flexibility. o
o debugWIRE On-Chip Debug and In-System Programming.debugWIRE On-Chip Debug and In-System Programming.
megaAVRmegaAVR
o
o Self-Programming Flash memory with boot blSelf-Programming Flash memory with boot block.ock. o
o High accuracy 10-bit A/D converters with up to x200 analog gain stage.High accuracy 10-bit A/D converters with up to x200 analog gain stage. o
o USART, SPI and TWI(1) compliant serial iUSART, SPI and TWI(1) compliant serial interfaces.nterfaces. o
o IEEE 1149.1 compliant JTAG interface oIEEE 1149.1 compliant JTAG interface on megaAVRs with 44 pins n megaAVRs with 44 pins or more.or more. o
o On-Chip Debug through JTAG or debugWIRE interface.On-Chip Debug through JTAG or debugWIRE interface.
AVR XMEGAAVR XMEGA
o
o picoPower technology for ultra low power consumptionpicoPower technology for ultra low power consumption o
o True 1.6 volt operation and CPU speed up to 32 MHz.True 1.6 volt operation and CPU speed up to 32 MHz. o
o Event System and DMA Controller.Event System and DMA Controller. o
o High speed, high resolution 12-bit ADC and DHigh speed, high resolution 12-bit ADC and D AC.AC. o
o Crypto engine, Timers/Counters and fast Crypto engine, Timers/Counters and fast commcommunication interfaces.unication interfaces. o
o Accurate and flexible Clock System with Accurate and flexible Clock System with dynamic clock switching.dynamic clock switching.
AVR32 UC3AVR32 UC3
o
o High CPU performance.High CPU performance. o
o Low power consumption.Low power consumption. o
o High data throughput.High data throughput. o
o Low system cost.Low system cost. o
o High reliability.High reliability. o
AVR32 AP7AVR32 AP7
o
o High CPU perfromance.High CPU perfromance. o
o Low power consumption.Low power consumption. o
o SIMD / DSP instructions.SIMD / DSP instructions. o
o Instruction & data caches.Instruction & data caches. o
o Memory management unit.Memory management unit. o
o Built for embedded LinuxBuilt for embedded Linux
2.3
2.3..
Ada
Ada apa
apa de
denga
ngan M
n Mikr
ikroko
okontr
ntrole
oler A
r AVR
VR AT
ATMeg
Mega16
a16??
O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR ATMega16
ATMega16 karena fitur-karena fitur-fitur yfitur yang ang dibutdibutuhkan. Tentu uhkan. Tentu saja saja Anda Anda bisa menggunakan bisa menggunakan tipe AVRtipe AVR lainnya, apakah yang 40 pin atau yang kurang dari itu, bisa ATMega88, ATMega16, ATMega128, lainnya, apakah yang 40 pin atau yang kurang dari itu, bisa ATMega88, ATMega16, ATMega128, ATMega8535, ATMega168 dan lain sebagainya.
ATMega8535, ATMega168 dan lain sebagainya.
2.3.
2.3.1.
1. Ringka
Ringkasan Fit
san Fitur-fitur Mik
ur-fitur Mikrokont
rokontroler AVR A
roler AVR ATMega16
TMega16
Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari
Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari datasheet datasheet -nya,-nya, maaf juga masih sebagian besar dalam Bahasa Inggris
maaf juga masih sebagian besar dalam Bahasa Inggris33... •
• Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi.Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi. •
• Arsitektur RISC tingkat lanjutArsitektur RISC tingkat lanjut –
– 131 Instruksi yang ampuh – Hampir semuanya dieksekusi dalam satu 131 Instruksi yang ampuh – Hampir semuanya dieksekusi dalam satu detak (detak (clock clock ) saja) saja –
– 32 x 8 32 x 8 General Purpose Working RegistersGeneral Purpose Working Registers –
– Operasi statis penuhOperasi statis penuh –
– Throughput hingga 16 MIPS pada 16 MHzThroughput hingga 16 MIPS pada 16 MHz –
– Pengali On-chip 2-cyclePengali On-chip 2-cycle •
• High Endurance Non-volatile Memory segmentsHigh Endurance Non-volatile Memory segments –
– 16K Bytes of In-System S16K Bytes of In-System S elf-programmelf-programmable Flash able Flash program memoryprogram memory –
– 512 Bytes EEPROM512 Bytes EEPROM –
– 1K Byte Internal SRAM1K Byte Internal SRAM –
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROMWrite/Erase Cycles: 10,000 Flash/100,000 EEPROM –
– Data retention: 20 years at 85°C/100 years at 25°CData retention: 20 years at 85°C/100 years at 25°C –
– Optional Boot Code Section with Independent Lock Optional Boot Code Section with Independent Lock BitsBits In-System Programming by On-chip Boot Program In-System Programming by On-chip Boot Program True Read-While-Write Operation
True Read-While-Write Operation –
– Programming Lock for Software SecurityProgramming Lock for Software Security •
• Antarmuka JTAG (IEEE std. 1149.1 Compliant)Antarmuka JTAG (IEEE std. 1149.1 Compliant) –
– Boundary-Boundary-scan Capabilities According to scan Capabilities According to the JTAG Standardthe JTAG Standard –
– Extensive On-chip Debug SupportExtensive On-chip Debug Support –
– Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG InterfaceProgramming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface •
• Fitur-fitur periferalFitur-fitur periferal –
– Dua Pewaktu/Pencacah 8-bit dengan PrDua Pewaktu/Pencacah 8-bit dengan Praskalar dan Mode Pembanding terpisah.askalar dan Mode Pembanding terpisah. –
– Sebuah Pewaktu/Pencacah 16-bit Timer/Counter DSebuah Pewaktu/Pencacah 16-bit Timer/Counter Dengan Praskalar, Mode Pembanding danengan Praskalar, Mode Pembanding dan Capture yang terpisah.
Capture yang terpisah. –
– Pencacah Real Time dengan Osilator terpisahPencacah Real Time dengan Osilator terpisah –
– Empat kanal PWMEmpat kanal PWM –
– 8-kanal, 10-bit ADC8-kanal, 10-bit ADC
8 Single-ended Channels8 Single-ended Channels 3
3
Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga fokus Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga fokus pada buku ini tidak melulu pada datasheet...
7 Differential Channels in TQFP Package Only7 Differential Channels in TQFP Package Only
2 Differential Channels with Programmable Gain at 1x, 10x, or 200x2 Differential Channels with Programmable Gain at 1x, 10x, or 200x –
– Byte-oriented Two-wire Serial InterfaceByte-oriented Two-wire Serial Interface –
– Programmable Serial USARTProgrammable Serial USART –
– Master/Slave SPI Serial InterfaceMaster/Slave SPI Serial Interface –
– Pewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang tPewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang t erpisaherpisah –
– Komparator Analog On-chipKomparator Analog On-chip •
• Fitur-fitur Mikrokontroler khususFitur-fitur Mikrokontroler khusus –
– Reset saat Power-on dan Deteksi Brown-out yang bisa diprogramReset saat Power-on dan Deteksi Brown-out yang bisa diprogram –
– Internal Calibrated RC OscillatorInternal Calibrated RC Oscillator –
– Sumber interupsi Eksternal dan INternalSumber interupsi Eksternal dan INternal –
– Enam ModeEnam Mode SleepSleep: Idle, ADC N: Idle, ADC Noise Reduction, Power-save, Power-down, Standby andoise Reduction, Power-save, Power-down, Standby and Extended Standby
Extended Standby •
• I/O and PackagesI/O and Packages –
– 32 Programmable I/O Lines32 Programmable I/O Lines –
– 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF •
• Tegangan kerjaTegangan kerja –
– 2.7 - 5.5V untuk Atmega16L2.7 - 5.5V untuk Atmega16L –
– 4.5 - 5.5V untuk Atmega164.5 - 5.5V untuk Atmega16 •
• Kecepatan (frekuensiKecepatan (frekuensi clock clock )) –
– 0 - 0 - 8 MHz untuk Atmega16L8 MHz untuk Atmega16L –
– 0 - 0 - 16 MHz untuk Atmega1616 MHz untuk Atmega16 •
• Konsumsi daya pada 1 MHz, Konsumsi daya pada 1 MHz, 3V, 25°C for Atmega16L3V, 25°C for Atmega16L –
– Aktif: 1.1 mAAktif: 1.1 mA –
– Idle Mode: 0.35 mAIdle Mode: 0.35 mA –
– Mode Power-down: < 1Mode Power-down: < 1 AA
INFORMASI PELATIHAN PRIVATE AVR DI
INFORMASI PELATIHAN PRIVATE AVR DI
HTTP://KLIKDISINI.COM/PELATIHANAVR
HTTP://KLIKDISINI.COM/PELATIHANAVR
2.3.
2.3.2.
2. Diagram Pin d
Diagram Pin dan Dia
an Diagram Blok Mikrok
gram Blok Mikrokontrole
ontroler AVR AT
r AVR ATMega16
Mega16
Pada Gambar 4 dan 5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR Pada Gambar 4 dan 5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR ATMega1
ATMega16 t6 tipe PDIP dan TQFP/MLF atau ipe PDIP dan TQFP/MLF atau dikendikenal sebagai SMD.al sebagai SMD.
Gambar 4. Diagram Pin
Pada Gambar 6 dan 7 ditunjukkan diagram blok untuk Mikrokontroler AVR ATMega16, perhatikan 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 begitu banyaknya fitur-fitur dalam diagram blok tersebut, sebagaimana juga sudah saya kutipkan pada bagian sebelumnya.
pada bagian sebelumnya.
Gambar 5. Diagram Pin
Gambar 5. Diagram Pin Mikrokontroler AVR ATMega16 tipe SMDMikrokontroler AVR ATMega16 tipe SMD
2.3.
2.3.3.
3. Penjelas
Penjelasan Singka
an Singkat Pin-pin pada Mikrok
t Pin-pin pada Mikrokontrol
ontroler AVR ATMega16
er AVR ATMega16
Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR ATMega16.
ATMega16.
Vcc
Vcc Masukan tegangan catu daMasukan tegangan catu dayaya GND
GND Ground, emang apalagi kalau bukan groGround, emang apalagi kalau bukan ground...und... Port A (PA7..PA0)
Port A (PA7..PA0) Port A berfungsi sebagai masukan analog ke ADC interPort A berfungsi sebagai masukan analog ke ADC internal padanal pada mikrokontroler ATMega16, selai
mikrokontroler ATMega16, selain itu n itu juga berfungsi sebagai portjuga berfungsi sebagai port I/O dwi-arah 8-bit,
I/O dwi-arah 8-bit, jika ADC-nya tidak digunakan. Masinjika ADC-nya tidak digunakan. Masing-masingg-masing pin menyediakan resistor
pin menyediakan resistor pull-up pull-up internalinternal44 yang bisa diaktifkanyang bisa diaktifkan untuk masing-masing bit.
untuk masing-masing bit. Port B (PB7..PB0)
Port B (PB7..PB0) Port B Port B berfungsi sebagberfungsi sebagai sebagai port I/ai sebagai port I/O dwi-arah 8-bit.Masing-O dwi-arah 8-bit.Masing-masing pin menyediakan resistor
masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.
diaktifkan untuk masing-masing bit.
Port B juga memiliki berbagai macam fungsi alternatif, Port B juga memiliki berbagai macam fungsi alternatif, sebagaiman
sebagaimana da ditunjukkan pada Tabel 1.1itunjukkan pada Tabel 1.1 Port C (PC7..PC0)
Port C (PC7..PC0) Port C Port C berfungsi sebagberfungsi sebagai sebagai port I/ai sebagai port I/O dwi-arah 8-bit.Masing-O dwi-arah 8-bit.Masing-masing pin menyediakan resistor
masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.
diaktifkan untuk masing-masing bit.
Port C juga digunakan sebagai antarmuka JTAG, sebagaimana Port C juga digunakan sebagai antarmuka JTAG, sebagaimana ditunjukkan pada Tabel 1.2
ditunjukkan pada Tabel 1.2 4
4
Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan. Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan.
Port D (PD7..PD0)
Port D (PD7..PD0) Port D Port D berfungberfungsi sebagai sebagai port si sebagai sebagai port I/O dwi-arah 8-bit.Masing-I/O dwi-arah 8-bit.Masing-masing pin menyediakan resistor
masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.
diaktifkan untuk masing-masing bit. Port D juga
Port D juga memiliki berbagai macam fungsi alternatif,memiliki berbagai macam fungsi alternatif, sebagaiman
sebagaimana da ditunjukkan pada Tabel 1.3itunjukkan pada Tabel 1.3 /RESET
/RESET Masukan Reset. Level rendah pada pin ini selama Masukan Reset. Level rendah pada pin ini selama lebih dari lamalebih dari lama waktu minimum yang ditentukan akan menyebabkan reset,
waktu minimum yang ditentukan akan menyebabkan reset, walaupun
walaupun clock clock tidak dijalankan.tidak dijalankan. XTAL1
XTAL1 Masukan ke penguat osilator terbalik (Masukan ke penguat osilator terbalik (invertinginverting) dan masukan ke) dan masukan ke rangkaian
rangkaian clock clock internal.internal. XTAL2
XTAL2 Luaran dari penguat osilator terbalik Luaran dari penguat osilator terbalik AVCC
AVCC Merupakan masukan tegangan catu daya untuk Port Merupakan masukan tegangan catu daya untuk Port A sebagaiA sebagai ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak digunakan
digunakan. . Jika ADC dJika ADC digunakan sebaiknyigunakan sebaiknya da dihubihubungkan ke Vccungkan ke Vcc melalui tapis lolos-bawah (
melalui tapis lolos-bawah (low-paslow-pass s filter filter ).). AREF
AREF Merupakan tegangan referensi untuk ADCMerupakan tegangan referensi untuk ADC
Gambar 6. Diagram blok Mikrokontroler AVR
Gambar 7. Diagram blok Mikrokontroler AVR
Gambar 7. Diagram blok Mikrokontroler AVR ATMega16 – Bagian IIATMega16 – Bagian II
Pada Tabel 1, 2 dan 3 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port D. 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 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 JTAG) akan dibahas pada saat digunakan, sehingga Anda bisa memahami langsung dengan mencoba, istilah kerennya “
mencoba, istilah kerennya “ Learning by Doing Learning by Doing”...”...
Tabel 1. Alternatif fungsi
Tabel 2. Alternatif fungsi
Tabel 2. Alternatif fungsi PORTCPORTC
Tabel 3. Alternatif fungsi
Tabel 3. Alternatif fungsi PORTDPORTD
3.
3. Pengen
Pengenalan
alan Bahasa
Bahasa C un
C untuk
tuk Mikrokontr
Mikrokontroler
oler AVR
AVR
Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler, Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler, khususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini merupakan
khususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini merupakan High Level High Level Language
Language sisanya menyebut sebagaisisanya menyebut sebagai Midle Level Language Midle Level Language. Dengan demikian seorang. Dengan demikian seorang programmer programmer dapat menuangkan (menuliskan) algoritmanya dengan mudah.
dapat menuangkan (menuliskan) algoritmanya dengan mudah.
3.
3.1.
1.
St
Stru
rukt
ktur
ur Pe
Penu
nuli
lisa
san B
n Bah
ahas
asa C
a C
Perhatikan struktur penulisan dalam Bahasa C
Perhatikan struktur penulisan dalam Bahasa C sebagai berikut...sebagai berikut... #include < [library1.h] >
#include < [library1.h] > // Opsional// Opsional #define [nama1] [nilai];
#define [nama1] [nilai]; // Opsional// Opsional [global variables]
[global variables] // Opsional// Opsional [functions]
[functions] // Opsional// Opsional int main(void)
int main(void) // Program Utama// Program Utama {
{
[Deklarasi local variable/constant] [Deklarasi local variable/constant] [Isi Program Utama]
[Isi Program Utama] }
Keterangan: Keterangan:
Opsional artinya boleh ditulis boleh tOpsional artinya boleh ditulis boleh tidak, menyesuaiidak, menyesuaikan kebutuhan – tkan kebutuhan – tuliskan pustauliskan pustaka apaka apa saja yang digunakan dan lain sebagainya
saja yang digunakan dan lain sebagainya
Penulisan variabel dilakukan di awal agar Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program, demikianaman bisa digunakan sepanjang program, demikian juga dengan deklarasi fungsi-fungsi yang t
juga dengan deklarasi fungsi-fungsi yang t erlibaterlibat
Silahkan ikuti (baca) terus tSilahkan ikuti (baca) terus tutorial ini untuk melihat contoh-contoh program di bagian lainutorial ini untuk melihat contoh-contoh program di bagian lain tutorial ini.
tutorial ini.
3.
3.2.
2.
Ti
Tipe
pe-t
-tip
ipe d
e dat
ata d
a dal
alam
am B
Bah
ahas
asa C
a C
charchar : 1 byte ( -128 s/d 127 ): 1 byte ( -128 s/d 127 )
unsigned charunsigned char : 1 byte ( 0 s/d 255 ): 1 byte ( 0 s/d 255 )
intint: 2 byte ( : 2 byte ( -32768 s/d 32767 )-32768 s/d 32767 )
unsigned intunsigned int: 2 byte ( 0 s/d 65535 ): 2 byte ( 0 s/d 65535 )
longlong: 4 byte ( : 4 byte ( -2147483648 s/d 21474836-2147483648 s/d 2147483647 )47 )
unsigned longunsigned long: 4 byte ( : 4 byte ( 0 s/d 4294967295 )0 s/d 4294967295 )
floatfloat: bilangan desimal: bilangan desimal
arrayarray: kumpulan data-data yang sama tipenya.: kumpulan data-data yang sama tipenya.
3.
3.3.
3.
De
Dekl
klar
aras
asi V
i Var
aria
iabe
bel d
l dan
an Ko
Kons
nsta
tant
nta
a
Variabel adalah memori penyimpanan data Variabel adalah memori penyimpanan data yanyang g nilainya dapat diubah-ubah.nilainya dapat diubah-ubah.
Penulisan : Penulisan :
[tipe data] [nama] = [nilai]; [tipe data] [nama] = [nilai];
Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan :Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan :
const [nama] = [nilai]; const [nama] = [nilai];
Global variableGlobal variable atauatau constant constant dapat diakses di seluruh bagian prodapat diakses di seluruh bagian program.gram.
Local variable Local variable atauatau constant constant hanya dapat diakses oleh fungsi tempat dideklarasikannya.hanya dapat diakses oleh fungsi tempat dideklarasikannya.
3
3..4
4..
P
Pe
errn
ny
ya
atta
aa
an
n
Statement
Statement atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan [;] atauatau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan [;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. Lebih dari 1 [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. Lebih dari 1 baris gunakan pasan
baris gunakan pasangan [/*] gan [/*] dan [*/]. Pernyataan yang tidak dieksekusi disebut juga komentar.dan [*/]. Pernyataan yang tidak dieksekusi disebut juga komentar. Contoh:
Contoh:
suhu=adc/255*100;
suhu=adc/255*100; //contoh rumus perhitungan suhu//contoh rumus perhitungan suhu
3
3..5
5..
F
Fu
un
ng
gssii
Function atau fungsi adalah bagian program yang dapat dipanggil oleh program ut Function atau fungsi adalah bagian program yang dapat dipanggil oleh program ut ama.ama. Penulisan :
Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) [tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) { { [pernyataan_1]; [pernyataan_1]; [pernyataan_2]; [pernyataan_2]; ... ... } }
3.
3.6.
6.
Pe
Pern
rnya
yata
taan be
an berk
rkon
ondi
disi d
si dan Pe
an Peng
ngul
ulan
anga
gan
n
if else
if else: digunakan untuk menyeleksi satu atau beberapa kondisi: digunakan untuk menyeleksi satu atau beberapa kondisi if ( [persyaratan] ) {
[statement1]; [statement1]; [statement2]; [statement2]; ... ... } } else else { { [statement3]; [statement3]; [statement4]; [statement4]; ... ... } } for
for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang.: digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang. for ( [nilai awal] ; [syarat] ; [operasi nilai] )
for ( [nilai awal] ; [syarat] ; [operasi nilai] ) { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } while
while: digunakan untuk pengulangan (: digunakan untuk pengulangan (loopinglooping) jika dan sealama memenuhi suatu kondisi masih) jika dan sealama memenuhi suatu kondisi masih dipenuhi (pengulangan selama benar
dipenuhi (pengulangan selama benar while ( [persyaratan] ) while ( [persyaratan] ) { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } do while
do while: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun min 1 kali: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun min 1 kali do do { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } while ([persyaratan]) while ([persyaratan]) switch case
switch case: d: digunaigunakan untuk kan untuk seleksi dengan banyak kondisiseleksi dengan banyak kondisi switch ( [nama variabel] )
switch ( [nama variabel] ) {
{
case [nilai1]: [statement1]; case [nilai1]: [statement1];
break; break;
case [nilai2]: [statement2]; case [nilai2]: [statement2];
break; break; ... ... } }
3.
3.7.
7.
Op
Oper
eras
asi L
i Log
ogik
ika d
a dan
an Bi
Bila
lang
ngan
an Bi
Bin
ner
er
Operator Logika Operator Logika
AND:
AND: &&&& NOT: NOT: !! OR : OR : |||| Biner Biner AND:
AND: && OR : OR : || XOR : XOR : ^^ Shift right: Shift right: >>>> Shift left : Shift left : <<<<
Lebih besar sama dengan:
Lebih besar sama dengan: >=>= Lebih kecil/besar:
Lebih kecil/besar: < , >< , > Lebih kecil sama dengan :
Lebih kecil sama dengan : <=<=
3
3.8
.8..
Op
Ope
era
rasi
si A
Arrit
itme
meti
tik
ka
a
O
Oppeerraattoorr KKeetteerraannggaann
+, -, *, /
+, -, *, / Tambah, kurang, kali dan bagiTambah, kurang, kali dan bagi
+=, -=, *=, /= +=, -=, *=, /=
Nilai di sebelah kiri
Nilai di sebelah kiri operator ditambah,operator ditambah, dikurangi, dikali atau dibagi dengan nilai di dikurangi, dikali atau dibagi dengan nilai di
sebelah kanan operator. sebelah kanan operator.
%
% Sisa pembagianSisa pembagian
++,
--++, -- Ditambah 1 (Ditambah 1 (increment increment ) atau ) atau dikudikurangi saturangi satu
((decrement decrement )) Contoh: Contoh: a = 5 * 6 + 2 / 2 – 1 a = 5 * 6 + 2 / 2 – 1 hasilnya 30hasilnya 30 a *= 5
a *= 5 jika nilai awal a=30, maka hasilnya 150jika nilai awal a=30, maka hasilnya 150 a += 3
a += 3 jika nilai awal a=30, maka hasilnya 33jika nilai awal a=30, maka hasilnya 33 a++
a++ jika nilai awal a=5, maka hasilnya 6jika nilai awal a=5, maka hasilnya 6
a--a-- jika nilai awal a=5, maka hasilnya 4, dstjika nilai awal a=5, maka hasilnya 4, dst
3.
3.9.
9.
Pe
Peng
ngul
ulan
anga
gan
n Te
Teru
rus-m
s-men
ener
erus
us at
atau
au
Infi
Infi ni
nite L
te Loo
ooping
ping
Apa itu
Apa itu Pengulangan terus-menerusPengulangan terus-menerus atauatau infinite loopinginfinite looping?? Yaitu suatu pengulangan atau kalangYaitu suatu pengulangan atau kalang (loop) yang dilakuka terus-menerus tanpa batas, hingga rangkaian tidak lagi mendapatkan sumber (loop) yang dilakuka terus-menerus tanpa batas, hingga rangkaian tidak lagi mendapatkan sumber catu daya.
catu daya.
Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C, adalah Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C, adalah yang ada di fungsi utama a
yang ada di fungsi utama atau main, seperti contoh berikut...tau main, seperti contoh berikut... void main()
void main() {
{
//
// pernyataan-pepernyataan-pernyataan program rnyataan program }
Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan sekali
sekali saja. Jika menggunakansaja. Jika menggunakan infinite loopinfinite loop (ada yang mengatakan sebagai pengulangan tak-hingga(ada yang mengatakan sebagai pengulangan tak-hingga atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka program yang ada di dalam atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka program yang ada di dalam pengulan
pengulangan tgan tersebut akan dijalankan berulang-ulang tersebut akan dijalankan berulang-ulang t erus-meneerus-menerus, contoh...rus, contoh... void main()
void main() {
{
//
// pernyataan-pepernyataan-pernyataan program rnyataan program w whhiille e ((11));; /// / iinnffiinniitte e lloooopp { { // pernyataan2 // pernyataan2 } } } } Untuk
Untuk keluar dari infinite loopingkeluar dari infinite looping gunakan perintahgunakan perintah break;break; Mengapa terjadi Infinite Looping ??
Mengapa terjadi Infinite Looping ?? Perhatikan pada contoh tersebut, pernyataan atau instruksiPerhatikan pada contoh tersebut, pernyataan atau instruksi while (1) menyatakan bahwa kondisi SELALU BENAR, sehingga selalu dilakukan pengulangan while (1) menyatakan bahwa kondisi SELALU BENAR, sehingga selalu dilakukan pengulangan terus-meneru
terus-menerus! s! Coba bedakan dengan contoh berikut...Coba bedakan dengan contoh berikut... void main()
void main() {
{
//
// pernyataan-pepernyataan-pernyataan program rnyataan program w whhiille e ((iinnddeexx<<55));; /// / iinnffiinniitte e lloooopp { { // pernyataan2 // pernyataan2 Index += 1; Index += 1; } } } }
Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari index
index kurang dari 5,kurang dari 5, indexindex merupakan variabel sehingga nilainya bisa berubah. Nah, jikamerupakan variabel sehingga nilainya bisa berubah. Nah, jika indexindex lebihlebih dari atau
dari atau sama dengan 5, maka pengulangan dihentikan.sama dengan 5, maka pengulangan dihentikan.
4.
4. Meng
Menggun
gunakan AV
akan AVR Stud
R Studio deng
io dengan WinA
an WinAVR GCC
VR GCC
AVR Studio 4 merupakan perangkat lunak gratis (AVR Studio 4 merupakan perangkat lunak gratis ( free software free software) yang bisa anda unduh di internet) yang bisa anda unduh di internet melalui websitenya Atmel
melalui websitenya Atmel55. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa mesin (
mesin (assemblyassembly) dan, jika diintegrasikan dengan winAVR GCC) dan, jika diintegrasikan dengan winAVR GCC66, bahasa C, mensimulasi program, bahasa C, mensimulasi program yang Anda buat
yang Anda buat77 dan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensidan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensi .hex yang bisa anda unduh kedalam IC mikrokontroller anda.
.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 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 diintegrasikan dengan WinAVR GCC, lakukan instalasi WinAVR GCC terlebih dahulu sebelum AVR Stdui 4.0. Cara
AVR Stdui 4.0. Cara menginstalnymenginstalnya pun a pun mudah layaknya anda menginstal perangkat lunak komputermudah layaknya anda menginstal perangkat lunak komputer
5 5 http://www.atmel.com http://www.atmel.com 6 6 Unduh WinAVR GCC di Unduh WinAVR GCC di 7 7
Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (
Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (devicedevice). Jika Anda). Jika Anda menginginkan simulasi dengan rangkain dan piranti, gunakan
menginginkan simulasi dengan rangkain dan piranti, gunakan free software free softwarelainnya yaitu VMLAB yang bisa diunduhlainnya yaitu VMLAB yang bisa diunduh di
yang lain. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4.0 saat pertama kali Anda yang lain. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4.0 saat pertama kali Anda jalankan.
jalankan.
Gambar 8. Tampilan awal AVR Studio 4.0 –
Gambar 8. Tampilan awal AVR Studio 4.0 – Wizard DialogWizard Dialog
Tampilan yang ditunjukkan pada Gambar 8 bukan merupakan tampilan utama dari AVR Studio 4, 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 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 pada tanda panah, bahwa dialog ini diaktifkan setiap kali AVR Studio 4 dijalankan, hilangkan tanda centan
centang jika g jika Anda tidak ingin mengaktifkan kotak dialog ini dAnda tidak ingin mengaktifkan kotak dialog ini di awal program).i awal program). Okey, sekarang kita klik
Okey, sekarang kita klik New ProjectNew Project, sehingga akan ditampilkan pilihan dan isian-isian yang, sehingga akan ditampilkan pilihan dan isian-isian yang ditunjukkan pada Gambar 9.
ditunjukkan pada Gambar 9.
Perhatikan tanda panah di Gambar 9, lakukan pilihan bahasa apa yang akan Anda gunakan, apakah Perhatikan tanda panah di Gambar 9, lakukan pilihan bahasa apa yang akan Anda gunakan, apakah Atmel AVR Assembler
Atmel AVR Assembler atauatau AVR GCCAVR GCC? Karena kita akan belajar pemrograman mikrokontroler? Karena kita akan belajar pemrograman mikrokontroler AVR menggunakan Bahasa C, maka dipilih AVR GCC.
AVR menggunakan Bahasa C, maka dipilih AVR GCC.
Langkah berikutnya adalah, perhatikan tanda panah di Gambar 10, mengisi
Langkah berikutnya adalah, perhatikan tanda panah di Gambar 10, mengisi Project nameProject name (atau(atau nama proyek),
nama proyek), Initial fileInitial file (nama file utama proyek yang bersangkutan) dan(nama file utama proyek yang bersangkutan) dan LocationLocation (tempat(tempat menyimpan proyek Anda, klik pada tanda panah
menyimpan proyek Anda, klik pada tanda panah jika Anda menginginkan lokasi lainnya). Kemudianjika Anda menginginkan lokasi lainnya). Kemudian klik
Gambar 9. Halaman 2 kotak dialog
Gambar 9. Halaman 2 kotak dialog wizard wizard
Gambar 10. Halaman 2 kotak dialog wizard saat dipilih AVR GCC Gambar 10. Halaman 2 kotak dialog wizard saat dipilih AVR GCC
Gambar 11. Halaman 3 kotak dialog wizard
Gambar 11. Halaman 3 kotak dialog wizard – memilih mikrokontroler AVR– memilih mikrokontroler AVR
Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan, perhatikan tanda panah Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan, perhatikan tanda panah pada Gambar 11, dan akhiri dengan klik
pada Gambar 11, dan akhiri dengan klik FinishFinish. Sehingga ditampilkan jendela utama dari AVR. Sehingga ditampilkan jendela utama dari AVR Studio 4, sebagaimana ditunjukkan pada Gambar 12, dengan editor (perhatikan tanda panah pada Studio 4, sebagaimana ditunjukkan pada Gambar 12, dengan editor (perhatikan tanda panah pada Gambar 12) siap digunakan untuk mengetikkan program Anda.
Gambar 12) siap digunakan untuk mengetikkan program Anda.
Gambar 12. Jendela utama AVR Studio 4 Gambar 12. Jendela utama AVR Studio 4
Okey, misalnya sekarang kita ketikkan program berikut, ketik saja dulu, ntar kita terangkan atau Okey, misalnya sekarang kita ketikkan program berikut, ketik saja dulu, ntar kita terangkan atau berikan penjelasan tentang program ini d
Simpan berkas (program) Anda dengan
Simpan berkas (program) Anda dengan Ctrl+SCtrl+S atau pilih menuatau pilih menu FileFile SaveSave. Kemudian lakukan. Kemudian lakukan kompilasi (tekan F7), jika t
kompilasi (tekan F7), jika tidak ada kesalahan akan ditampilkan laporan sepeidak ada kesalahan akan ditampilkan laporan seperti contoh rti contoh berikuberikut...t...
Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama, selamat ya! Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama, selamat ya! Luar biasa!
Luar biasa!
Lha terus habis gini ngapain? Oya, Anda langsung bisa mensimulasikan-nya (
Lha terus habis gini ngapain? Oya, Anda langsung bisa mensimulasikan-nya ( Ctrl+Shift+Alt+F5Ctrl+Shift+Alt+F5)) dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board mikrokontroler AVR Anda
mikrokontroler AVR Anda88..
8 8
Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di ??, dan Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di ??, dan ikuti diskusi-nya.
Gambar 13. Jendela Debugger AVR Studio 4 Gambar 13. Jendela Debugger AVR Studio 4
Okey, sampai disini pendahuluan AVR Studio 4-nya, sekarang kita mulai bahas konsep Okey, sampai disini pendahuluan AVR Studio 4-nya, sekarang kita mulai bahas konsep pemrogramannya, antara lain:
pemrogramannya, antara lain:
Konsep Masukan/Luaran atau I/O, danKonsep Masukan/Luaran atau I/O, dan
Timer/Counter pada Mikrokontroler AVRTimer/Counter pada Mikrokontroler AVR
5.
5. Masu
Masukan/
kan/Luar
Luaran (I/O) pada Mikr
an (I/O) pada Mikrokont
okontrol
roler AVR
er AVR
Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler AVR) pada halaman-halaman sebel
AVR) pada halaman-halaman sebelum ini. Saum ini. Salah satunya adalah memiliki 4 x 8 lah satunya adalah memiliki 4 x 8 saluran masukan dansaluran masukan dan luaran digital (berlogika 0 atau 1), totalnya 32 bit atau
luaran digital (berlogika 0 atau 1), totalnya 32 bit atau 32 pin! Masing-ma32 pin! Masing-masing diberi nama A, B, sing diberi nama A, B, CC dan D (masing-masing 8 pin atau 8 bit).
dan D (masing-masing 8 pin atau 8 bit). Kali ini
Kali ini kita akan membahakita akan membahas tentang hal dass tentang hal dasar berkaitan denar berkaitan dengan konsep I/O atau masugan konsep I/O atau masukan/luarankan/luaran pada mikrokontroler AVR:
pada mikrokontroler AVR:
Membaca tingkat tegangan masukan, apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (teganganMembaca tingkat tegangan masukan, apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (tegangan
sekitar 5 volt maksimal); sekitar 5 volt maksimal);
Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt);Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt);
Untuk keperlua tersebut, AVR memiliki beberapa register yang t
Untuk keperlua tersebut, AVR memiliki beberapa register yang t erkait, yaitu DDRx, PORTx danerkait, yaitu DDRx, PORTx dan PINx
PINx99, berikut penjelasan masing-masing..., berikut penjelasan masing-masing...
9 9
Tanda ‘x’ diganti dengan A, B, C atau D menyesuaikan dengan pin masukan/luaran yang digunakan. Tanda ‘x’ diganti dengan A, B, C atau D menyesuaikan dengan pin masukan/luaran yang digunakan.
5
5..1
1..
R
Re
eg
giisstte
er
r D
DD
DR
Rx
x
Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A, B, C atau D) sebagai Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A, B, C atau D) sebagai masukan atau luaran atau disebut sebagai arah (
masukan atau luaran atau disebut sebagai arah ( directiondirection) dari pin yang bersangkutan:) dari pin yang bersangkutan:
BerikanBerikan logika 1 (satu)logika 1 (satu) pada bit yang terkait agar dijadikan sebagaipada bit yang terkait agar dijadikan sebagai luaranluaran atauatau output output..
BerikanBerikan logika 0 (nol)logika 0 (nol) pada bit yang terkait agar dijadikan sebagaipada bit yang terkait agar dijadikan sebagai masukanmasukan atauatau inputinput..
Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan perintah...
perintah...
DDRA= 0x00; //seluruh pin-pin pada Port A digunakan sebagai input 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 Misalnya lagi, PORTA.0 akan dijadikan masukan sedangkan PORTA.2 sampai PORTA.7 akan digunakan sebagai luaran, maka perintahnya...
digunakan sebagai luaran, maka perintahnya... DDRA= 0xFE;
DDRA= 0xFE; Perhatikan
Perhatikan 0xFE (heksa) = 0b11111110 (biner), perhatikan baik-baik konversi biner ini, setiap bit0xFE (heksa) = 0b11111110 (biner), perhatikan baik-baik konversi biner ini, setiap bit nilai biner mewakili Pin-Pin pada PortA.
nilai biner mewakili Pin-Pin pada PortA.
5
5..2
2..
R
Re
eg
giisstte
er P
r PO
OR
RT
Tx
x
Sebaga
Sebagaimana dijelaskan sebelumnya, jika sebuah imana dijelaskan sebelumnya, jika sebuah PORT, semua atau sebagian, dikonfigurasi sebagaiPORT, semua atau sebagian, dikonfigurasi sebagai masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait
di-masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait di- pullup pullup atauatau Floating
Floating. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin yang terkait terbaca
yang terkait terbaca HIGH HIGH atauatau LOW LOW . Untuk memahami hal ini, perhatikan Gambar 14.. Untuk memahami hal ini, perhatikan Gambar 14.
Gambar 14. Kondisi
Gambar 14. Kondisi pullup pullup pada suatu PORTpada suatu PORT Penjelasan: Jika
Penjelasan: Jika PIN.1PIN.1 dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka inilahdihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka inilah yang di maksud dengan
yang di maksud dengan pullup pullup.. Saat tidak ada tegangan dari luar,Saat tidak ada tegangan dari luar, PIN.1PIN.1 akanakan cenderungcenderung berkondisi HIGH (logika 1)
berkondisi HIGH (logika 1). Sedangkan. Sedangkan PIN.2PIN.2 dibiarkan begitu saja sehingga kondisi logik daridibiarkan begitu saja sehingga kondisi logik dari PIN.2
PIN.2 begitu rentan terhadap pengaruh disekitarnya.begitu rentan terhadap pengaruh disekitarnya. PIN.2PIN.2 bisa berlogikabisa berlogika HIGHHIGH, bisa juga, bisa juga berlogika
berlogika LOWLOW, ini artinya logika, ini artinya logika PIN.2PIN.2 mengambang (mengambang ( floating floating).). Kondisi
Kondisi floating floating biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor.biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor. Karena jika di
Karena jika di pullup pullup, dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin, dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin sensor yang bersangkutan.
Perhatikan contoh-contoh berikut... Perhatikan contoh-contoh berikut... DDRA=0x00;
DDRA=0x00; PORTA = 0xFF; PORTA = 0xFF;
Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan
di-Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di- pullup pullup, artinya pada, artinya pada rangkaian yang terkait, jika menggunakan tombol atau
rangkaian yang terkait, jika menggunakan tombol atau pushbutton pushbutton, jika tidak ditekan akan terbaca, jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW. Gunakan contoh rangkaian pada Gambar 15 dan HIGH dan jika ditekan akan terbaca LOW. Gunakan contoh rangkaian pada Gambar 15 dan perhatikan tanda panah,
perhatikan tanda panah, pushbutton pushbutton satu ujung dihubungkan ke pin yang terkait sedangkan ujungsatu ujung dihubungkan ke pin yang terkait sedangkan ujung lainnya di-GND-kan. INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan lainnya di-GND-kan. INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan pushbutton
pushbutton, tetapi ini cara , tetapi ini cara yang mudyang mudah dan murah meriah... ah dan murah meriah... he he he...he he he... Contoh lainnya... Contoh lainnya... DDRB= 0x00; DDRB= 0x00; PORTB=0x0F; PORTB=0x0F;
Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b00001111) atau Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b00001111) atau PO
PORRTBTB.0 .0 ssamamppai ai POPORRTBTB.3 .3 didi-- pullup pullup, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi floating
floating..
5
5..3
3..
R
Re
eg
giisstte
er
r P
PIIN
Nx
x
Digunakan untuk membaca masukan pada pin yang bersangkutan, akan dijelaskan pada contoh Digunakan untuk membaca masukan pada pin yang bersangkutan, akan dijelaskan pada contoh program di halaman-halaman berikutnya.
program di halaman-halaman berikutnya.
Gambar 15. Contoh rangkaian aktif rendah tombol