Assalamu'alaikum :) Terima kasih telah membuka Blog ini, silahkan membaca beberapa postingan Saya :) Semoga bermanfaat :))

Selasa, 20 Januari 2015

Posted by Alifiyah Rohmatul UMSIDA in | 11:24 AM No comments
Direct Addressing (Pengalamatan Langsung)

Penjelasan :
      Suatu proses penyalinan data pada register dan suatu alamat efektif (Effective Address, Alamat ini disimpan pada byte berikut setelah opcode instruksi).  Dalam mode pengalamatan direct addressing, harga yang akan dipakai diambil langsung dalam alamat memori lain. Contohnya: MOV A,30h. Dalam instruksi ini akan dibaca data dari RAM internal dengan alamat 30h dan kemudian disimpan dalam akumulator. Mode pengalamatan ini cukup cepat, meskipun harga yang didapat tidak langsung seperti immediate, namun cukup cepat karena disimpan dalam RAM internal. Demikian pula akan lebih mudah menggunakan mode ini daripada mode immediate karena harga yang didapat bisa dari lokasi memori yang mungkin variabel.

Kelebihan :
     Field alamat berisi efektif address sebuah operand

Kekurangan :
     Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word
         Contoh :
ADD A ; tambahkan isi pada lokasi alamat A ke akumulator.





Indirect Addressing (Pengalamatan tak langsung)

Penjelasan :
       Merupakan mode pengalamatan tak langsung. Field alamat mengacu pada alamat word di dalam memori, yang pada gilirannya akan berisi alamat operand yang panjang atau untuk mentransfer DATA/byte/word antar register dan lokasi yang alamatnya ditunjukkan oleh isi suatu register. Mode pengalamatan indirect addressing sangat berguna karena dapat memberikan fleksibilitas tinggi dalam mengalamati suatu harga. Mode ini pula satu-satunya cara untuk mengakses 128 byte lebih dari RAM internal pada keluarga 8052. Contoh: MOV A, @R0. Dalam instruksi tersebut, 89C51 akan mengambil harga yang berada pada alamat memori yang ditunjukkan oleh isi dari R0 dan kemudian mengisikannya ke akumulator. Mode pengalamatan  indirect addressing selalu merujuk pada RAM internal dan tidak pernah merujuk pada SFR. Karena itu, menggunakan mode ini untuk mengalamati alamat lebih dari 7Fh hanya digunakan untuk keluarga 8052 yang memiliki 256 byte spasi RAM internal.

Kelebihan :
     Ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi.

Kekurangan :
     Diperlukan referensi memori ganda dalam satu fetch sehingga memperlambat proses operasi
     Contoh :
ADD (A) ; tambahkan isi memori yang ditunjuk oleh isi alamat A ke akumulator.




Immediate Addressing (Pengalamatan Segera)

Penjelasan :
        Suatu proses penyalinan data yang berukuran byte atau word langsung ke dalam register tujuan. Data yang dimaksud di sini adalah suatu  nilai atau bilangan tertentu atau bisa juga berupa sebuah konstanta (didefinisikan dengan instruksi EQU). Data segera merupakan data konstan, sedangkan data yang dipindahkan dari register adalah data berubah (variable). Mode pengalamatan immediate addressing sangat umum dipakai karena harga yang akan disimpan dalam memori langsung mengikuti kode operasi dalam memori. Dengan kata lain, tidak diperlukan pengambilan harga dari alamat lain untuk disimpan. Contohnya: MOV A, #20h. Dalam instruksi tersebut, akumulator akan diisi dengan harga yang langsung mengikutinya, dalam hal ini 20h. Mode ini sangatlah cepat karena harga yang dipakai langsung tersedia.

Keuntungan :

  1. Tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand
  2. Menghemat siklus instruksi sehingga proses keseluruhanakan akan cepat

Kekurangan :
·      Ukuran bilangan dibatasi oleh ukuran field
       Contoh :
ADD 7 ; tambahkan 7 pada akumulator
Posted by Alifiyah Rohmatul UMSIDA in | 10:59 AM 6 comments

Mikro Kontroler Atmega 16     
     
       Mirkokontroler AVR (Alf and Vegard’s Risc processor) standar memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16-bit, dan sebagian besar intruksi dieksekusi dalam 1(satu) siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing), sedangkan MCS51 berteknologi CISC (Complex Intruction Set Computing).

       AVR dapat dikelompokkan menjadi empat kelas, yaitu keluarga Attiny, keluarga AT902xx, keluarga Atmega, dan keluarga AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Silahkan buka www.atmel.com untuk informasi lebih lanjut tentang berbagai variasi AVR. Untuk mikrokontroler AVR yang berukuran lebih kecil, silahkan mencoba Atmega8, Attiny2313 dengan ukuran Flash Memory 2KB dengan dua input analog.

       Mikrokontroler pada dasarnya diprogram dengan bahasa assembler. Tetapi  Saat ini mikrokontroler dapat deprogram dengan menggunakan bahasa tingkat tinggi sepert BASIC, PASCAL atau C. Bahasa tingkat tinggi tersebut memiliki beberapa keuntungan dibandingkan dengan bahasa asembler :

  1. Lebih mudah membangun program dengan menggunakan bahasa tingkat tinggi
  2. Perbaikan program lebih mudah jika program dibangun menggunakan bahasa tingkat tinggi
  3. Testing program didalam bahasa tingkat tinggi lebih mudah
  4. Bahasa tingkat tinggi lebih banyak dikenal dan error program yang dibuat dapat dihindari
  5. Mudah mendokumentasikan sebuah program tingkat tingggi

      Meskipun demikian, bahasa tingkat tinggi juga memiliki beberapa kelemahan, contohnya ukuran kode memori biasanya besar, dan program yang dibangun menggunakan bahasa asembler biasanya bekerja cepat dibangdingkan dengan program yang dibangun menggunakan bahasa tingkat tinggi.

Didalam mikrokontroler Atmega16 terdiri dari:

  1. Saluran I/O ada 32 buah, yaitu Port A, Port B, Port C, dan Port D.
  2. ADC (Analog to Digital Converter) 10 bit sebanyak 8 channel.
  3. Tiga buah Timer/Counter dengan kemampuan perbandingan.
  4. CPU yang terdiri dari 32 register.
  5. 131 intruksi andal yang umumnya hanya membutuhkan 1 siklus clock.
  6. Watchdog Timer dengan oscilator internal.
  7. Dua buah Timer/Counter 8 bit.
  8. Satu buah Timer /Counter 16 bit.
  9. Tagangan operasi 2.7 V - 5.5 V pada Atmega16.
  10. Internal SRAM sebesar 1KB.
  11. Memory Flash sebesar 16KB dengan kemampuan Read While Write.
  12. Unit interupsi internal dan eksternal.
  13. Port antarmuka SPI.
  14. EEPROM sebesar 512 byte dapat diprogram saat operasi.
  15. Antar muka komparator analog.
  16. 4 channel PWM.
  17. 32x8 general purpose register.
  18. Hampir mencapai 16 MIPS pada Kristal 16 MHz.
  19. Port USART programmable untuk komunikasi serial.


Konfigurasi Pin ATmega16

         Atmega 16 memepunyai kaki standart 40 pin PID yang mempunyai fungsi sendiri-sendiri. Untuk lebih jelas tentang konigurasi Pin Atmega 16 bisa di lihat pada gambar berikut.



        Gambar di atas merupakan susunan kaki standar 40 pin mikrokontroler AVR Atmega16. Berikut penjelasan umum susunan kaki Atmega16 tersebut:

  1. VCC merupakan pin masukan positif catudaya. Setiap peralatan elektronika digital tentunya butuh sumber catu daya yang umumnya sebesar 5 V, itulah sebabnya di PCB kit rangkaian mikrokontroler selalu dipasang IC regulator 7805.
  2. GND sebagai PIN ground.
  3. Port A (PA0 ... PA7) merupakan pin I/O dua arah dan dapat diprogram sebagai pin masukan ADC.
  4. Port B (PB0 ... PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Timer/Counter, Komparator Analog, dan SPI.
  5. Port C (PC0 ... PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, dan Timer Oscilator.
  6. Port D (PD0 ... PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal, dan komunikasi serial.
  7. Reset merupakan pin yang digunakan untuk me-reset mikrokontroler ke kondisi semula.
  8. XTAL 1 dan XTAL 2 sebagai pin masukan clock eksternal. Suatu mikrokontroler membutuhkan sumber detak (clock) agar dapat mengeksekusi intruksi yang ada di memori. Semakin tinggi  nilai kristalnya, maka semakin cepat pula mikrokontroler tersebut dalam mengeksekusi program.
  9. AVCC sebagai pin masukan tegangan untuk ADC.
  10. AREF sebagai pin masukan tegangan referensi.


Port sebagai input/output digital

        ATMega16 mempunyai empat buah port yang bernama  PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur  bidirectional dengan pilihan  internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka  Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor  pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah  tri-state setelah kondisi reset.

       Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi  tri-state  (DDxn=0, PORTxn=0) ke kondisi  output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled  (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah  strong high driver  dengan sebuah  pull-up. Untuk lebih jelasnya, dapat dilihat pada gambar berikut.



Peta Memori

       AVR ATMega16 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Memori data terbagi menjadi 3 bagian, yaitu 32 buah register umum, 64 buah register I/O, dan 1kb SRAM internal.

      Register keperluan umum menempati space data pada alamat terbawah, yaitu $00 sampai $1F. Sementara itu, register khusus untuk menangani I/O dan kontrol terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register tersebut merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler,
seperti kontrol register, timer/counter, fungsi – fungsi I/O, dan sebagainya. Alamat memori berikutnya yang digunakan untuk SRAM 1kb, yaitu pada lokasi $60 sampai dengan $45F. Konfigurasi memori data ditunjukan pada gambar berikut.



      Mikrokontroler disini digunakan sebagai komunikasi antara computer dengan Plant, dimana digunakan komunikasi serial RS232 sebagai komunikasi antara Mikrokontroler dengan Komputer. (Wardhana.L ,2006).



Pulse Width Modulation (PWM)

       PWM atau modulasi lebar pulsa adalah salah satu keunggulan dari Timer/Counter yang terdapat pada ATMega16. Ketiga jenis Timer/Counter pada ATMega32 dapat menghasilkan pulsa PWM. Pulsa PWM adalah sederetan pulsa yang lebar pulsanya dapat diatur. Pulsa PWM berfungsi mengatur kecepatan motor DC, mengatur gelap terang LED dan lain sebagainya.

        Untuk memahami penggunaan PWM, disini digunakan Timer/Counter  1 sebagai PWM. PWM adalah Timer Mode Output Compare yang canggih. Mode PWM timer juga dapat mencacah turun yang berlawanan dengan mode Timer lainya yang hanya mencacah naik. Pada mode PWM tersebut, Timer  mencacah naik hingga mencapai nilai TOP, yaitu 0xFF untuk PWM 8 bit. Timer/Counter 1 memiliki PWM 9 bit dan PWM 10 bit, selain PWM 8 bit. Pemilihan Timer Mode PWM diseting melalui bit WGM01 dan bit WGM00 pada register TCCR0. Tabel Konfigurasi Bit WGM01 dan WGM00 dapat dilihat pada tabel berikut.



       Sebagai penggunaan mode PWM Timer / Counter 0, keluaran sinyal PWM terletak pada pin OC0 sehingga pada contoh ini LED diletakkan pada pin OC0. Ketika nilai TCNT0 sama dengan nilai pada OCR0, maka output pada OC0 akan berlogika nol atau berlogika satu, tergantung pada pemilihan mode PWM. Anda dapat memilih mode normal atau mode inverted PWM. Pemilihan mode PWM diseting melalui bit COM01 dan bit COM00 pada register TCCR0 yang konfigurasinya seperti tabel berikut.

Tabel Konfigurasi Bit COM01 dan COM00 Compare Output Mode Phase Correct PWM

      Dari tabel diatas  dapat diketahui saat COM00 clear dan COM01 set, pin OC0 clear saat timer mencacah diatas Compare Match dan pin OC0 set saat timer mencacah dibawah Compare Match atau non-inverting PWM. Kebalikannya, saat COM00 set dan COM01 juga set, maka pin OC0 set saat timer mencacah diatas Compare Match dan pin OC0 clear saat mencacah dibawah Compare Match atau disebut juga inverting PWM. Untuk lebih jelasnya, perhatikan gambar berikut.


Search

Bookmark Us

Delicious Digg Facebook Favorites More Stumbleupon Twitter