Mengenal Microcontroller


> Tujuan pada bab ini adalah: anda  mengetahui gambaran  umum ,cara kerja  dan bagian bagian penyusun sebuah  microcontroller

Pendahuluan

Sejarah

Perbedaan Microcontrollers  dengan Microprocessor

1. Memori dan register

2. Central processing unit / cpu

3. Bus / jalurs

4. Input-output unit

5. Komunikasi Serial

6  Timer

7. Watchdog timer

8. Analog to digital converter / adc

9. Program

10. Subrutin

11. Interupsi

Pendahuluan

Apa itu microcontroller ?

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  misalnya: PIC16F84 buatan microchip , Atmega8535, AT89c51 buatan ATMEL  dan  MC68HC11 buatan motorola . Bagi pemula pilih salah satu saja untuk memulai mempelajarinya, misal ATmega8535, At89s51  atau  PIC16f84. jika anda sudah menguasai satu jenis microcontroller maka akan mudah mempelajari microcontroller jenis lainnya karena pada prinsipnya sama.   

inout-device

Microcontroller

   

SEJARAH

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. 

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 .

 

Perbedaan Microcontroller dengan Microprocessor

perbedaan Microprosessor dengan microcontroller

Perbedaan Microprosessor dengan Microcontroller

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.  

Bagian-bagian sebuah Microcontroller :

1.1 Memori dan register  

Memori  Memori adalah bagian microcontroller untuk menyimpan Program dan data. 

memory

ada 3 bagian utama sebuah memori yaitu alamat,data dan control baca atau tulis R/W  

Jenis-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 

CPU dalam memproses data memori , ia akan mengambil data dimemori dan menyimpan kedalam register yg ada di dalam CPU setelah diproses hasil akan dikirim kembali ke memori . Register di CPU biasanya terdiri dari 2 jenis yaitu Akumulator dan index register Accumulators digunakan dlm perhitungan ,operasi aritmetika, spt penambahan,  pengurangan, or operasi logika dan operasi bit. Indek registers digunakan menujuk alamat  data di memory.  

1.2 Central Processing Unit /CPU 

cpu

cpu

CPU adalah bagian utama sebuah microcontroller dialah yg melaksanakan(mengeksekusi) program yg ada di memori dalam melaksanakan tugasnya ia dibantu beberapa beberapa  memori internal di dlm cpu yg disebut register , dalam melakukan berbagai operasi perhitungan data yg ada dimemori  , cpu mengambil data dimemori dan menyimpan diregister agar lebih efisien. 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    

1.3 Bus/jalur

bus

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 = 2

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 

1.4 Input-output unit

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 . 

input output

cara menulis/membaca persis seperti menulis/membaca memori, cuma alamatnya bisa nomor port/pin microcontroller

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,  

SERIAL

  

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.

1.6 Timer unit

timer

untuk mengetahuai waktu , panjang sinyal, frekwensi dll kita membutuhkan timer. dasarnya adalah  timer  free-run counter adalah sebuah register counter  yang nilainya bertambah satu mulai dari 000 sampai 255  kemudian kembali 000 terus menerus berulang .

1.7 Watchdog Timer

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

1.8 Pengubah sinyal Analog ke Digital

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 AVR8535 buatan Atmel dan  mc68hc11 buatan motorola.  Tugas adc merubah sinyal analog kedigital sehingga bisa diproses microcontroller.

Kesimpulan

akhirnya lengkap sudah bagian-bagian sebuah  microcontroller,dan agar bisa bekerja bagian2 tsb harus disatukan dlm sebuah rangkaian dalam 1 IC / Chip dan kita mengaksesnya melalui kaki2/pin. Gambar dibawah ini menunjukan bagian dalam sebuah IC  microcontroller .

bagian2 sebuah Microcontroller

bagian2 sebuah Microcontroller

1.9 Program

Sebuah microcontroller tanpa diprogram tdk ada artinya apa-apa sebelum bisa digunakan dia harus diberi perintah yang berupa program yang disimpan/diisikan  ke dalam memorinya. Perintah tsb biasanya menggunakan bahasa asembler ,bahasa C atau bahasa Basic. Tiap bahasa mempunyai kelebihan dan kekuranganya masing-masing tapi pada contoh dibawah  ini kita akan meggunakan bahasa asembler karena instruksi berhubungan langsung dengan  register-register pd microcontroller

Contoh kita akan “menginstruksikan” microcontroller untuk mentransfer data dari Port0 (P0) ke register A, B dan lokasi memori 20H maka kita akan menuliskan urutan instruksi yg disebut program, menggunakan bahasa asembler sbb :

;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 bisa kita ketik menggunakan notepad pada windows dan disimpan  dengan extention  .asm   

Compiler

Setelah program selesai kita buat  dlm bahasa asembler ataupun bahasa C kita harus menterjemahkan program yg kita buat kedalam bahasa mesin (berupa file berektensi *.HEX) agar dimengerti oleh microcontroller   dgn sebuah sofware yg disebut Compiler.

Beberapa Contoh Compiler:

  • AVR Studion & WinAVR ( AVR-GCC ) compiler  Bahasa C  untuk microcontroller AVR.
  • CodeVision compiler  Bahasa C  untuk microcontroller AVR.
  • ASM51 Compiler bahasa Asembler untuk microcontroller MCS51
  • dll

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 compiler : asm51.exe  dengan  mengetik pada console :

C:> asm51.exe  contoh1.asm     ; lalu tekan enter

maka akan dihasilkan file ” contoh1.hex”   pada direktori yang sama, file inilah (contoh1.hex)  yg dimengerti microcontroller dan akan kita masukan kedalam memori program microcontroller dengan menggunakan alat yg disebut programmer (berupa hardware dan software) .

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.

pc

pc

fetch

fetch

Interupsi

Saat kaki RESET pada IC 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 alamat awal memori-program yang menampung program yang harus dijalankan ketika terjadi interupsi.

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.

Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak, tidak hanya terjadi pada proses reset, tapi terjadi pula dalam proses interupsi.

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 alamat 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 ISRprosesor kembali menjalankan program utama, seperti yang digambarkan dalam Gambar 1.

interupsi

Bagan kerja prosesor melayani interupsi

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 ISRmana 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

INTERUPSI_PROSES

INTERUPSI_PROSES

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 melayanipermintaan 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.

About these ads

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 14 May 2011, in Menengah-2. Bookmark the permalink. Leave a comment.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 63 other followers

%d bloggers like this: