Setiap orang dewasa ini tentu sudah sangat familiar dengan komputer , tapi tidak semua orang tahu bagaimana sebuah komputer itu bekerja. begitu juga dengan mesin cuci,AC,oven dan peralatan lain yang serba otomatis kita semua sudah terbiasa menggunakannya tapi tapi tidak semua orang tahu bagaimana peralatan otomatis itu bekerja. Tentu tidak semua orang ingin mengetahuinya karena dianggap sulit .Tapi tahukah anda bahwa semua itu anda dapat pelajari dengan mudah.
Bagian utama sebuah komputer atau peralatan otomatis adalah apa yang disebut prosessor. lebih khusus untuk sebuah komputer biasa disebut microprosesor dan untuk peralatan otomatis spt ac,mesin cuci, remote control, dll disebut microcontroller tapi tugas keduanya adalah sama yaitu menjadi pemroses/ "pemikir" utama .
Untuk komputer anda mungkin sudah sering mendengar pentium I, Pentium II , Atlon dsb. itu adalah jenis microprossesor sebuah pc. Pentium adalah microprosesor buatan perusahaan Intel dan Atlon buatan AMD .Tapi pada tutorial ini kita hanya akan mempelajari Microcontroller diantaranya PIC16F84 buatan microchip , AT89c51 buatan ATMEL dan MC68HC11 buatan motorola .bagi pemula pilih salah satu saja untuk memulai mempelajarinya, saya sarankan pilih AT89C51 (sejenis dg 8051 buatan intel) atau PIC16f84. jika anda sudah menguasai satu jenis microcontroller maka akan mudah mempelajari microcontroller jenis lainnya karena pada prinsipnya sama.
Bagaimana microcontroller bekerja pada sebuah mesin cuci ? Gambar dibawah ini menggambarkan contoh rangkaian microcontroller dlm sebuah mesin cuci yg disederhanakan . Agar rangkaian bekerja kita harus memberi perintah (program ) kepada microcontroller , programnya adalah sbb: " jika tombol start ditekan nyalakan led hijau dan berikan sinyal 5volt dan jika tombol stop ditekan nyalakan led merah dan stop sinyal 5volt"
Instruksi/program yg telah kita buat kita masukan kedalam microcontroller dengan menggunakan sebuah alat yg dinamakan programmer (yg dapat kita buat sendiri) .
Bagian yang terdapat dalam sebuah microcontroller : MEMORI untuk menyimpan program , CPU yang melaksanakan program yg ada dimemori, PORT untuk mengambil sinyal dari luar (pd contoh diatas : tombol start dan stop dihubungkan ke port sbg input ) dan untuk mengeluarkan sinyal (pada contoh sinyal 5V , dan led merah /hijau) , sinyal yg diambil dan dikeluarkan adalah sinyal digital 5 volt (logika 1) atau 0 volt (logika 0) .
1969, BUSICOM membuat calculator . microprocessor pertama dibuat.
1971, Microprocessor 4004 microprocessor 4 bit pertama ,6 000 operasi perdetik.
1972, Microprocessor 8008.microprosesor 8 bit pertama , memori 16Kb, 45 instruksi dan 300 000
operasi per detik.
1974, Microprocessor 8 bit dng nama 8080 ,memori 64Kb 75 instruksi, harga saat itu $360.
Motorola mengeluarkan , microprocessor 8 bit , 6800, 6820 dan 6850.
Motorola mengeluarkan , microprocessor 8 bit , 6800, 6820 dan 6850.
1975, Microprosesor Technologi MOS 6501 , 6502, 8080 dan 6800 .
1976, Z80. 8080, Z80 64 Kb 176 instruksi buatan ZILOG,
1976, Microprocessor 8-bit 8085 buatan Intel .
1976, Microprocessor 8-bit 8085 buatan Intel .
Perbedaan Microcontroller dengan Microprocessor
Microcontroller digunakan khusus untuk mengontrol peralatan tertentu, tidak bisa digunakan untuk tugas2 lain, microcontroller otak dari sebuah peralatan otomatis spt AC, mesin cuci, TV,remote control dll.microprocessor digunakan untuk memproses berbagai macam tugas, contoh penggunaan microprosesor antara lain pada komputer/pc ia bisa digunakan untuk berbagai macam tugas spt pengolah kata, games, disign grafik,multimedia dll, microprosessor membutuhkan memori luar memori, atau components untuk mengirim dan menerima data . bisa dibilang microprocessor otak dari sebuah computer.
Memori adalah bagian microcontroller untuk menyimpan Program dan data.
jenis memory antara lain :
1. RAM (random access memory) : CPU bisa menulis/menyimpan dan membaca kedlm memori ini , memori akan hilang jika power supply dihilangkan.
2. ROM (read-only memory) : memori yg hanya bisa sekali ditulis dan selanjutnya hanya bisa dibaca .data tdk hilang jika power dihilangkan dihilangkan
3. EPROM (erasable programmable read-only memory) : CPU bisa menulis/menyimpan dan membaca kedlm memori, memori tdk hilang jika power supply dihilangkan. (cara penulisan dgn cara tertentu/dgn alat programmer) cara menghapus data dengan disinari cahaya ultra violet atau bisa juga dgn sinar matahari beberapa menit
4. EEPROM (electrically erasable programmable read-only memory) : CPU bisa menulis/menyimpan dan membaca kedlm memori, memori tdk hilang jika power supply dihilangkan. (cara penulisan dgn cara tertentu/dgn alat programmer)
RAM | EEPROM | EPROM | ROM | |
PERMANEN | TDK | TDK | TDK | YA |
volatile | Nonvolatile | Nonvolatile | Nonvolatile | |
TEMPAT PENYIMPAN | DATA | PROGRAM/DATA | PROGRAM | PROGRAM |
Register
Mcu dalam memproses data memori , ia akan mengambil data dimemori dan menyimpan kedalam register didlm CPU setelah diproses hasil akan dikirim kembali kememori. Register di cpu biasanya terdiri dari 2 jenis yaitu Akumulator dan index registerAccumulators digunakan dlm perhitungan arithmetic operations, like addition, subtraction, or performing logical and bit operations .Index registers digunakan menujuk alamat data di memory.
contoh register pada MCU 68HC11.
68HC11 punya 2 register accumulators, labeled A and B. masing register 8-bit : menyimpan 1 byte data.
index registers X dan Y , 16-bit biasa digunakan menunjukan data di memory.
Stack Pointer, atau SP register, menyimpan program stack. stack menyimpan temporary data, dan menyimpan alamat return sebelum subroutine dipanggil.
Register Program Counter, or PC, menyimpan alamat yg sedang diexsekusi CPU. nilai PC automatis bertambah 1 tiap instruksi dieksekusi.
CPU adalah bagian utama sebuah microcontroller dialah yg melaksanakan(mengeksekusi) program yg ada di memori dalam melaksanakan tugasnya ia dibantu beberpa beberapa memori internal di dlm cpu yg disebut register ,
misal operasi penjumlahan data di 2 lokasi memori lokasi data dilokasi memori1 disimpan diregister1 data kedua dari lokasi memori disimpan di register2 hasilnya dismpan diregister3
Bus adalah nama untuk group koneksi2 ada 2 jenis bus : bus data dan bus alamat
jalur data terdiri dari 8 bit,16 bit,32 bit tapi untuk microcontroller yg kita pelajari terdiri dari 8 bit data (1byte) dan jalur alamat jumlahnya variatif tergantung jenis microcontroller, jumlah jalur alamat menunjukan banyaknya lokasi memori yg bisa diakses.
Misal bus alamat ada 3 (A0,A1,A2) maka lokasi alamat di memori yg bisa diakses adalah ada 8 lokasi alamat di memori , 8 = 23
ALAMAT (A2-A1-A0) | ISI MEMORI |
000 | |
001 | |
010 | |
011 | |
100 | |
101 | |
110 | |
111 |
Memori dng 3 jalur alamat
Jadi jika bus alamat ada 16 bit (A0~A15) maka jumlah alamat yang bisa diakses sebanyak 216 = 65536 lokasi memori Untuk berhubungan dengan dunia luar seperti dengan relay, LED, sensor, switch dan lain-lain microcontroller menggunalkan input/output port, jenis port ada 3 yaitu port untuk mengambil sinyal dari luar(disebut input port) ,port untuk mengeluarkansinyal (output port) dan ada port yg bisa untuk input maupun output pd kaki yg sama 1 kaki / bidirectional .
1.5 Komunikasi Serial
Untuk berkomunikasi dengan microcontroller / pc lain salah satu metoda yang populer adalah secara serial dan paralel misal microcontroller akan mengirim 1 byte/huruf "A" (dlm biner 1110 1111) mengirim secara paralel berarti satu clock dikirim sekaligus tapi butuh minimal 8 kabel/pin dan secara serial ia dikirim satu persatu bit, jadi minimal 8 clock dibutuhkan untuk mengirim "A" tapi hanya membutuhkan minimal 2 kabel/ pin, Komunikasi serial antara Microcontroller dng Microcontroller atau dgn PC
untuk microcontroller biasanya menggunakan serial , jadi butuh hanya 2 pin untuk mengirim dan menerima pada waktu yang sama dan ini disebut full duplex.kadang kadang karena berbagai sebab microcontroller mengalamai program hang sama seperti sebuah pc , untuk pc biasanya kita mereset , tapi untuk microcontroller agak sulit jika kita harus yg mereset sendiri kenapa? karena biasanya microcontroller biasanya bekerja pada peralatan 24 jam seperti sistem alarm,ac dll ngga mungkin kita tungguin seharian ya ngga? .untuk mengatasi masalah ini dibuatlah sistem timer yang bisa mereset otomatis jika terjadi program hang ,namanya wacthdog timer ,ia akan mereset program microcontroller secara berkala, misal tiap 5 detik ia akan mereset program microcontroller. lalu bagai mana kalo program tdk hang ? ia tetap akan mereset CPU pada detik ke 5 .
jadi biar wacthdog timer tidak mereset cpu ketika keadaan normal kita harus mereset watchdog timer maksimal tiap 4 detik jadi sebelum ia mereset CPU , artinya pada detik ke 4 kita reset wacth dog timer,jadi sebelum watchdog timer mereset cpu pd detik kelima sudah kita reset duluan watcdog timernya pd detik ke 4, perintah mereset wacthdog timer ada didlm program. jadi ketika program kita hang maka tdk ada lagi perintah yg mereset wachtdog timer sehingga WDT akan mereset CPU..
perlu diingat bahwa microcontroller bekerja pada sinyal digital 1 atau 0 , lalu bagaimana ia membaca sinyal analog , beberapa microcontroller dilengkapi analog digital converter misalnya pada microcontroller mc68hc11 buatan motorola. Tugas adc merubah sinyal analog kedigital sehingga bisa diproses microcontroller.
akhirnya lengkap sudah bagian-bagian sebuah microcontroller,dan agar bisa bekerja bagian2 tsb harus disatukan dlm sebuah rangkaian dan kita mengaksesnya melalui kaki2/pin. Gambar dibawah ini menunjukan bagian dalam sebuah microcontroller .
configurasi phisik bagian dalam sebuah microcontroller
kawat2 kecil yg menghubungkan bagian dalam microcontroller dan luar/pin2 microntroller disebut kawat bonding . gambar dibawah ini menggambarkan bagian tengah microcontroller gambar diatas.Bagian bagian sebuah Microcontroller dan koneksi internal antar bagian
untuk bisa bekerja microcontroller perlu perintah/instruksi2 yang disimpan dalam memori dan kumpulan perintah/instruksi itu kita sebut program. tanpa program sebuah cpu hanyalah sebuah benda mati yg tak berguna. dibawah ini contoh microcontroller yang akan kita pelajari beberapa contoh jenis microcontroller
Sebagian bagian dari microcontroller (memori,cpu,register dll) kita tdk bisa melihat, karena berada didalam ic microcontroller ,yang bisa kita lihat hanya port input/output (P0,P1,P2,P3) saja serta pin2 pendukung clock(XTAL1 & XTAL2),untuk power suply VCC,GND ,
;transfer data menggunakan MOV
ORG 0 ;awal program di alamat 0
;data di port 0 di copy ke reg A, B dan memori 20h
awal: MOV A,P0 ;pindahkan isi P0 ke reg A
MOV B,P0 ;pindahkan isi P0 ke reg B
MOV 20H,P0 ;pindahkan isi P0 ke lokasi alamat 20H
; isi P0 di copy ke RAM alamatnya ditunjukan oleh P1
MOV R0,P1 ;pindahkan isi P1 ke reg R0
MOV @R0,P0 ;pindahkan isi P0 ke alamat yg ditunjuk R0
JMP awal ;kembali ke alamat 0
END
tiap baris disebut instruksi contoh ORG 0 , adalah instruksi untuk memulai program di alamat 0
dan yg disebut program adalah keseluruhan instruksi mulai instruksi ORG 0 sampai instruksi END.
format standar program adalah sbb:
label mnemonic , operand ;keterangan
contoh format
label | mnemonic | operand | keterangan diawali ; |
AWAL | MOV | A, P0 | ; pindahkan isi p0 ke A |
Program dapat dibuat dng beberapa bahasa pemrograman seperti Assembler, C and Basic ,tiap bahasa mempunyai kelebihan dan kekuranganya masing-masing tapi pada tutorial ini kita akan meggunakan bahasa asembler karena instruksi berhubungan langsung dengan register-register pd microcontroller.
setelah program selesai kita harus menterjemahkan program yg kita buat agar dimengerti oleh microcontroller dng sebuah sofware compiler.
program contoh diatas yg kita buat misalnya kita simpan dengan nama contoh1.asm ( .asm menyatakan extensi program asembler)
Setelah program selesai diketik dan dismpan dengan nama contoh1.asm lalu kita terjemahkan kedalam bahasa mesin dengan program asm51.exe dengan mengetik pada dos promt :
C:> asm51.exe contoh1.asm ; lalu tekan enter
maka akan dihasilkan file " contoh1.hex" pada direktori yang sama, file inilah (contoh1.hex) yang akan kita masukan kedalam memori microcontroller dengan menggunakan alat yg disebut programmer (berupa hardware dan software) lihat tutorial microcontroller programmer
isi dari file contoh1.hex adalah sbb
:0E000000E5808580F0858020A890A68080F2A3
:00000001FF
setelah program(contoh1.hex) dimasukan kedalam microcontroller barulah microcontroller dipasangkan pada rangkaian yang akan dicontrol dan menjalankanya.dengan cara mereset. tentu sebelumnya harus diberi power suply untuk tenaga dan clock sebagai "jantung", berdasarkan tiap clock microcontroller mengeksekusi perintah satu persatu dari instruksi awal sampai instruksi terakhir (biasanya instruksi "end") .
beberapa saat setelah direset atau diberi power suply PC bernilai 0000 dan terus bertambah 1 , microcontroller akan menjalankan instruksi program pd alamat yg ditunjukan oleh PC tiap langkah dipicu/trigger oleh sinyal clock .jadi kecepatan eksekusi sebuah program ditentukan oleh clock xtal yg terpasang.
misal xtal /clock yg kita pakai frekwensinya 4 Mhz atau 1 perioda clock = 1/4000.000 detik = 0.00000025 detik
jadi untuk menyelesaikan program diatas = 14 byte instruksi X 0.00000025 detik = 0.0000035 detik
interupsi
Saat kaki RESET pada IC mikroprosesor/mikrokontroler menerima sinyal reset ( sinyal tersebut berupa sinyal ‘1’ sesaat, pada prosesor lain umumnya merupakan sinyal ‘0’ sesaat), Program Counter diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor reset (reset vector), merupakan nomor awal memori-program yang menampung program yang harus dijalankan.
Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni menentukan aliran program prosesor (mengisi Program Counter dengan vektor reset).
Program yang dijalankan dengan cara reset, merupakan program utama bagi prosesor.
Dalam proses interupsi, terjadinya sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai ‘petanda’ (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan interupsi pada prosesor. Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal memori-program yang menampung program yang dipakai untuk melayani permintaan interupsi tersebut.
Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama, seperti yang digambarkan dalam Gambar 1.
Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi, masing-masing sumber interupsi dilayani dengan ISR berlainan, dengan demikian prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu.
contoh interpsi pada kaki XIRQ , yg mempunyai vektor interupsi = FFE4h
Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut perioritas yang sudah ditentukan, selesai melayani permintaan interupsi perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama.
Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang perioritas lebih tinggi, selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini.
Tidak ada komentar:
Posting Komentar