Bot Manual

September 9, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Bot Manual...

Description

 

Pemrograman ATmega32 Muchlis Polin 14 Oktober 2010

 

Daftar Isi 1 Pengena Pengenalan lan Mikrokontr Mikrokontroler oler ATmeg ATmega32 a32 1.1 Mikrok Mikrokont ontrol roler er   . . . . . . . . . . . . . . . . . . . . . . 1.2 1.2 Atmel tmel AVR VR   . . . . . . . . . . . . . . . . . . . . . . . . 1. 1.33 ATmeg Tmega3 a322   . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Rangka Rangkaian ian minima minimall A ATme Tmega3 ga322   . . . . . . . . . . . . . 1.5 Downl Download oader er ATme ATmega3 ga322   . . . . . . . . . . . . . . . . . 1.5. 1.5.1 1 STK2 STK200 00   . . . . . . . . . . . . . . . . . . . . . 1.5. 1.5.2 2 USBa USBasp sp   . . . . . . . . . . . . . . . . . . . . . 1. 1.5. 5.2. 2.1 1 Rang Rangka kaia ian n USB USBas asp p . . . . . . . . . . 1.5.2. 1.5 .2.2 2 File-fi File-file le pend penduku ukung ng USBasp USBasp   . . . . . 1.5.2.3 1.5.2 .3 Pengisia Pengisian n firmware firmware/pro /program gram USBasp USBasp   1. 1.5. 5.33 AVR-D VR-Dope operr   . . . . . . . . . . . . . . . . . . . 1. 1.66 Fuse use bit bitss   . . . . . . . . . . . . . . . . . . . . . . . . . 1.6. 1.6.1 1 Hi High gh Byte Byte   . . . . . . . . . . . . . . . . . . . . 1.6. 1.6.2 2 Lo Low w byt ytee   . . . . . . . . . . . . . . . . . . . . . 1. 1.6. 6.33 Pem emro rogr gram aman an fu fuse se bits bits   . . . . . . . . . . . . . 2 Bahasa Bahasa C untuk untuk AVR 2. 2.11 Opti Optima masi si kode   . . . . . . . . . . . 2.1.1 2.1 .1 Macam Macam-ma -macam cam inte integer ger   . . 2. 2.1. 1.22 Konst onstan anta ta   . . . . . . . . . 2. 2.22 Mani Manipu pula lasi si po port rt I/O I/O   . . . . . . . . 2. 2.2. 2.11 Por ortt I/O ATm ATmeg ega3 a322   . . . . 2. 2.2. 2.22 Opera Operasi si bitw bitwis isee   . . . . . . 2. 2.2. 2.2. 2.1 1 Opera Operasi si bitw bitwis isee   . 2. 2.2. 2.2. 2.2 2 Oper Operas asii  bit-shift    2. 2.2. 2.33 Mani Manipu pula lasi si bit bit   . . . . . . .

2.2. 2.2.4 4

2.2.5 2.2 .5

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

  . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

8 8 8 9 11 11 12 12 13 14 15 15 17 17 18 20

  . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

22 22 22 23 23 23 24 24 26 27

2. 2.2 2.3 .3.1 .1 Set Seear t bit bi t   .t   .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 2. 2.2. 2.3. 3.2 2 Clea Cl r bit bi 2. 2.2. 2.3. 3.3 3 Toggl ogglee bit bit   . . . . . . . . . . . . . . . . . . . . . 2. 2.2. 2.3. 3.4 4 Peng Pengec ecek ekan an bit bit   . . . . . . . . . . . . . . . . . . Head Header er    . . . . . . . . . . . . . . . 2.2.4.1   _BV(bit)   . . . . . . . . . . . . . . . . . . . . 2.2.4.2   bit_is_se bit_is_set(sfr, t(sfr, bit)   . . . . . . . . . . . 2.2.4.3   bit_is_cl bit_is_clear(sfr, ear(sfr, bit)   . . . . . . . . . 2.2.4.4   loop_unti loop_until_bit_is l_bit_is_clear(sf _clear(sfr, r, bit)   . 2.2.4.5   loop_unti loop_until_bit_is l_bit_is_set(sfr, _set(sfr, bit)   . . Contoh Contoh prog program ram mani manipul pulasi asi po port rt I/O  I/O   . . . . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

2277 27 28 28 28 28 28 28 29 29

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

3 WinA WinAVR VR   30 3.1 Pe Penge ngenal nalan an WinA WinAVR VR   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Ins Instal talasi asi WinA WinAVR   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3 Pe Pemro mrogra graman man dengan dengan WinA WinAVR   . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3. 3.3. 3.11

Buat Buat Pro Proje ject ct b baaru   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1

 

3. 3.3. 3.22

3.3.3 3.3.3 3.3.4 3.3 .4

Edit Edit Makefile   Makefile    . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.1 3.3.2. 1 Memasu Memasukka kkan n settin setting g AVRAVR-Dope Doperr pada Makefil Makefilee   . 3. 3.3. 3.2. 2.2 2 Meng Mengub ubah ah na nama ma file file  main   . . . . . . . . . . . . 3. 3.3. 3.2. 2.3 3 Mena Menamb mbah ah ssou ourc rcee co code de   . . . . . . . . . . . . . . Kompi Kompilas lasii Pro Progra gram m  . . . . . . . . . . . . . . . . . . . . . Downl Download oad pr progr ogram am ke mikrok mikrokont ontrol roler er   . . . . . . . . . . . .

4 Penggun Penggunaan aan fitur-fit fitur-fitur ur ATmeg ATmega32 a32

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

 

32 33 33 33 33 34

35

4. 4.11

In Inte terr rrup uptt   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4. 4.1. 1.11 Regi Regist ster er SR SREG EG   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.2 4.1 .2 Mengg Mengguna unakan kan int interr errupt upt   . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.3 4.1 .3 Contoh Contoh sederh sederhana ana pen penggu ggunaa naan n inter interrup ruptt   . . . . . . . . . . . . . . . . . . 37 4.1.4 4.1 .4 Ca Catch tch-al -alll inter interrup ruptt handl handler er   . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2 Timer/ Timer/Cou Counte nterr   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.1 4.2 .1 Pe Penge ngenal nalan an timer timer pada ATme ATmega3 ga322   . . . . . . . . . . . . . . . . . . . . . 39 4.2.2 4.2 .2 Timer/ Timer/Cou Counte nter0 r0 (8(8-bit bit))   . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4. 4.2. 2.2. 2.1 1 Regi Registe sterr   TCCR0   (Timer/Counte (Timer/Counterr Control Control Register) Register)   . . . . . . . 41 4. 4.2. 2.2. 2.2 2 No Norm rmal al mode mode   . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4. 4.2. 2.2. 2.3 3 Cl Clea earr Ti Time merr on Com Compa pare re Mat Match ch (CTC) (CTC) mode mode   . . . . . . . . . . 43 4. 4.2. 2.2. 2.4 4 Fast ast PWM PWM mode mode   . . . . . . . . . . . . . . . . . . . . . . . . . 43 4. 4.2. 2.2. 2.5 5 Phas Phasee Corr Correc ectt PWM PWM mode mode   . . . . . . . . . . . . . . . . . . . . 44 4.2.2. 4.2 .2.6 6 Interru Interrupt pt Timer/ Timer/Cou Counte nter0 r0   . . . . . . . . . . . . . . . . . . . . 45 4. 4.33 USAR USART T   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 4.3 .1 Regist Registerer-reg regist ister er USART USART   . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.3.1.1   UCSRA   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.3.1.2   UCSRB   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3.1.3   UCSRC   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3.1.4   UBRR UBRRH H & UBRR UBRRL L   . . . . . . . . . . . . . . . . . . . . . . . . 52 4. 4.3. 3.22 Konfig onfigur uras asii USAR USART T   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4. 4.3. 3.2. 2.1 1 Peng Pengat atur uran an bau baud d rate rate   . . . . . . . . . . . . . . . . . . . . . . . 54 4. 4.3. 3.2. 2.2 2 Baud Baud rate rate erro errorr   . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3.2. 4.3 .2.3 3 Pe Penga ngatur turan an registe registerr kont kontrol rol USART USART (UCSRA (UCSRA,, UCSRB & UCSRC) UCSRC)   55 4.4 ADC   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4.1 4.4 .1 Regist Registerer-reg regist ister er ADC ATme ATmega3 ga322   . . . . . . . . . . . . . . . . . . . . . . 57 4.4.1.1   ADMUX   – ADC Multipl Multiplexe exerr Sel Select ection ion Register Register   . . . . . . . . . 58 4.4.1.2   ADCSRA   – ADC Con Contro troll and Status Status Regist Register er A   . . . . . . . . 59 4.4.1.3   ADCH ADCH & ADC ADCL L   . . . . . . . . . . . . . . . . . . . . . . . . . 60 4. 4.4. 4.22 Meng Menggu guna naka kan n ADC ADC   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5 5. Pemba Pe1mbacaa caan Sens Sensor ornikk   . . . . . . . . . . . . . . 5.1 Se Sens nsoorn Ultra Ult raso soni 5.1.1 5.1 .1 Pa Paral rallax lax PING)) PING))))   . . . . . . . . . . 5. 5.1. 1.1. 1.1 1 Spesi Spesifik fikas asii   . . . . . . . . . 5.1.1. 5.1 .1.2 2 Konek Koneksi si kkee mikro mikroko kontr ntrole olerr   5. 5.1. 1.22 Deva Devant ntec ech h SRF SRF05 05   . . . . . . . . . . 5.1.3 5.1 .3 Algor Algoritma itma senso sensorr ultras ultrasoni onikk   . . . . . 5.2 5.2 Sens Sensoor UV TRO TRON N . . . . . . . . . . . . . . 5.3 Senso Sensorr Pyroelec Pyroelectri tricc IR-EYE IR-EYE 442 442-3 -3   . . . . . 6 Pengont Pengontrolan rolan Motor Motor DC DC 6.1 6.1 H-Br H-Brid idge ge   . . . . . . . . . . . . . . . 6.2   Pulse Width Modulation (PWM)  (PWM)    . . 6. 6.2. 2.11 Apa it itu u PWM PWM??   . . . . . . . 6.2.2 6.2 .2 Memba Membangk ngkitka itkan n sinya sinyall PW PWM M Timer/Counter1   . . . . . . . 6. 6.2. 2.2. 2.1 1

. . . . . . . .

. . . . . . . .

 . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . menggu menggunak nakan an mode Phase Phase . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

62 62 63 63 63 64 65 68 70

73 . . . . . . . . . 73 . . . . . . . . . 75 . . . . . . . . . 75 Correct Correct PWM . . . . . . . . . 76

Sumb Sumber er cloc clockk   . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2

 

6. 6.2. 2.2. 2.2 2 6.2.2. 6.2 .2.3 3 6.2.2. 6.2 .2.4 4 6. 6.2. 2.2. 2.5 5

Mode Mode Phas Phasee Co Corr rrec ectt PWM PWM   . . . . . . . . . . . . . . . . . . . Pe Penga ngatur turan an Frekue Frekuensi nsi PWM pad padaa mode Phase Corre Correct ct PWM   Pe Penga ngatur turan an Mode Mode Compa Compare re Output Output   . . . . . . . . . . . . . . Conto Contoh h prog progra ram m   . . . . . . . . . . . . . . . . . . . . . . . .

Bibliografi

 

3

. . . .

77 78 78 79

82

 

Daftar Gambar 1. 1.11 1.2 1.3 1.4 1.5

Ko Konfi nfigu gura rasi si pin ATm ATmeg ega3 a32 2 ([Atm09]) [Atm09])   . . . Rangka Rangkaian ian minima minimall A ATme Tmega3 ga322   . . . . . . Simpli Simplified fied AVR AVR ISP Progr Programm ammer er   . . . . . Rangka Rangkaian ian leng lengkap kap USBasp USBasp   . . . . . . . . Ca Cara ra mengh menghubu ubungk ngkan an krist kristal[ al[Atm09 Atm09,, h26]  

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

10 11 12 13 19

2. 2.11 2. 2.22 2. 2.33 2. 2.44 2. 2.55 2.6 2.6

Regi Registe sterr PO PORT RTA A[Atm09,   h64]   . Regi Registe sterr DDRA DDRA   [Atm09,   h64]   . Regi Registe sterr PI PINA NA[Atm09, [Atm09,   h64]   . . Opera Operasi si bit bitwi wise se AND AND   . . . . . Opera Operasi si bit bitwi wise se OR OR   . . . . . . Co Cont ntoh oh left left bi bitt shift shift   . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

24 24 24 26 26 27

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

3.1 Ico Icon n instal installer ler WinA WinAVR VR   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Item-i Item-item tem yang yang WinAVR WinAVR pada Star Startt Menu   . . . . . . . . . . . . . . . . . . . . . 31 3. 3.33 Vari Variabe abell   AVRDUDE_PORT   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1 4. 4.22 4.3 4.3 4. 4.44 4. 4.55 4. 4.66 4. 4.77 4.8 4.8 4. 4.99 4.10 4.1 0 4.11 4.1 1

Rangka Rangkaian ian inte interru rrupt pt INT0 INT0   . . . . . . . . . . . . Bl Blok ok diagr diagram am timer/ timer/co coun unte terr 8-bi 8-bitt ([Atm09 [Atm09]) ])   . . Re Regi gist ster er  TCCR0   [Atm09, [Atm09, h80]   . . . . . . . . Timi Timing ng diag diagra ram m mode CTC CTC   . . . . . . . . . . . Timi Timing ng diagr diagram am mode Fas Fastt PWM[ PWM[Atm09,   h75]   Timi Timing ng diagr diagram am mode Phase Phase Corr Correc ectt PWM PWM   . . Di Diag agra ram m blok blok U USA SART RT[Atm09 [Atm09,, h140] h140]   . . . . . . Re Regi gist ster er  UCSRA[Atm09 [Atm09,, h160]   . . . . . . . . . Regi Registe sterr U UCS CSRB RB[Atm09, [Atm09,   h161]   . . . . . . . . . Registe Registerr   UCSRC[Atm09 [Atm09,, h162]   . . . . . . . . . Registe Registerr   UBRRH   dan   UBRRL   [Atm09, [Atm09, h164] h164]   . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

37 39 41 43 44 45 48 49 50 51 52

4.12 4.1 4.1 4.13 32 4.14 4.15

Saran Saran penyajia penya jian n pin AVC AVCC C [Atm09, Registe Reg ister r ADMUX ADM UX[Atm09 [Atm09, , h214] h21 4]   .   h210] . . . .   .. .. .. Representa Representasi si   ADCH   &   ADCL   jika   ADLAR = 0   . Representa Representasi si   ADCH   &   ADCL   jika   ADLAR = 1   .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

.. . .

5587 60 60

5.1 5.2 5. 5.33 5. 5.44 5. 5.55 5. 5.66 5. 5.77 5. 5.88 5. 5.99 5.10 5.1 0 5.11

Pa Paral rallax lax PING) PING))) ))[pin] [pin]   . . . . . . . . . . . . . . . Konek Koneksi si sens sensor or ping ke mikrok mikrokont ontrol roler[ er[Par05, Par05,   h2]   Di Diag agra ram m ti timi ming ng senso sensorr PI PING NG)) )))) [Par05 [ Par05,, h2]   . . . Deva Devante ntech ch SR SRF0 F055[srf]   . . . . . . . . . . . . . . . Ko Kone neks ksii senso sensorr SRF SRF05 05 [Dev, [Dev,   h2]   . . . . . . . . . Di Diag agra ram m timing timing senso sensorr SRF05 SRF05 [[Dev, Dev,   h3]   . . . . . Se Sens nsoor UV TRON TRON dan dan driv driver erny nya[ a[HAM97 HAM97]]   . . . . Se Sens nsit itiv ivit itas as UV UV TR TRON ON   [HAM97,   h1]   . . . . . . . Di Diag agra ram m blok sens sensor or UV TRON TRON[HAM97, [HAM97,   h4]   . . Senso Sensorr Pyroele Pyroelectr ctric ic IR-EYE IR-EYE 442 442-3 -3[Acr01 [Acr01]]   . . . . . Diagram Diagram blok sensor sensor pyroelectr pyroelectric ic[ELT02] [ELT02]   . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

63 63 64 64 65 65 68 68 69 70 70

5.12 5.1 2 Fu Fungs ngsii pin-pi pin-pin n pad padaa sen senso sorr pyroel pyroelect ectric ric [ELT02]   . . . . . . . . . . . . . . . . . . 70 5.13 Grafik 5.13 Grafik out output put sen senso sorr pyroel pyroelect ectric ric saat saat men mendet deteks eksii panasi panasi   . . . . . . . . . . . . . 71 4

 

6.1 6.1 6. 6.22 6. 6.33

1/ 1/2 2 da dari L2 L298 98   [STM00, [STM00, h6]   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Conto Contoh h siny sinyal al PWM denga dengan n du duty ty cycle cycle 10% 10%,, 50% 50% da dan n 90% 90%   [Bar01]   . . . . . . . 76 Pem emil ilih ihan an clock clock Time Timer1 r1   [Atm09, [Atm09, h110] h110]   . . . . . . . . . . . . . . . . . . . . . . . 76

5

 

Daftar Tabel 1.1 1.2 1.2 1.3 1.3 1.4 1.5 1.6 1.7 1.7 1.8 1.8

Konek Koneksi si anta antara ra USBa USBasp sp dan Mik Mikrok rokont ontrol roler er target target   . . . . Fus usee High High B Byt yte[ e[Atm09, Atm09,   h257]   . . . . . . . . . . . . . . . Fus usee Lo Low Byt Bytee[Atm09,   h258]   . . . . . . . . . . . . . . . Waktu Waktu startstart-up up untuk osilat osilator or RC Internal Internal[[Atm09,   h30]   . Mode opera operasi si osilat osilator or kris kristal tal[[Atm09, Atm09, h26]   . . . . . . . . Piliha Pilihan n waktu waktu startstart-up up untuk osilato osilatorr kri krista stall   . . . . . . . Co Cont ntoh oh HFUS HFUSE E   . . . . . . . . . . . . . . . . . . . . . . Co Cont ntoh oh HFUS HFUSE E   . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

14 17 18 19 19 20 20 21

2.2 2.3 2.4 2.5 2.6

MacamMacam-mac macam am tipe tipe inte integer ger   . . . . . . Tabel kebena kebenaran ran operas operasii bitwise bitwise   AND   . Tabel kebena kebenaran ran operas operasii bitwise bitwise   OR   . . Tabel kebena kebenaran ran operas operasii bitwise bitwise   XOR   . Tabel kebena kebenaran ran operas operasii bitwise bitwise   NOT   .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

22 25 25 25 25

4. 4.11 4.2 4. 4.33 4. 4.44 4. 4.55 4. 4.66 4. 4.77 4. 4.88 4. 4.99 4.10 4.1 0 4.11 4.12 4.1 2 4.13

In Inte terr rrup uptt 0 sens sensee contr control ol   . . . . . . . . . . . . . . . . . . . . . . . . . . Perbandi Perbandingan ngan Timer/Coun Timer/Counter0, ter0, Timer/Cou Timer/Counter1 nter1 dan Timer/Coun Timer/Counter2 ter2   . . Ko Komb mbin inas asii bit bit   W WGM GM01: 01:0 0 [Atm09] Atm09]   . . . . . . . . . . . . . . . . . . . . Pen enga gatu tura ran n bit bit   COM01:0   untuk untuk mode non non-PW -PWM M[Atm09, [Atm09, h81]   . . . . . . Pen enga gatu tura ran n bit bit   COM01:0   untuk untuk mode fast PWM PWM[Atm09, [Atm09, h81]   . . . . . . Pen enga gatu tura ran n bit bit   COM01:0   untuk untuk mode Pha Phase se Corre Correct ct PWM[Atm09 PWM[Atm09,, h81]   Desk Deskri rips psii bit clock clock selec selectt   . . . . . . . . . . . . . . . . . . . . . . . . . . Pen enga gatu tura ran n bit UMSE UMSEL L[Atm09, [Atm09, h162] h162]   . . . . . . . . . . . . . . . . . . . Pen enga gatu tura ran n bit-bi bit-bitt UPM[Atm09 UPM[Atm09,, h163]   . . . . . . . . . . . . . . . . . . . Pe Penga ngatur turan an bit USBS USBS[Atm09, [Atm09, h163] h163]   . . . . . . . . . . . . . . . . . . . . Pengatur Pengaturan an bit-bit   UCSZ[Atm09,   h163]   . . . . . . . . . . . . . . . . . . . Pe Penga ngatur turan an bit   UCPOL   [Atm09,   h164]   . . . . . . . . . . . . . . . . . . . Pa Parame rameter ter koneksi serial Microsof Microsoftt Mouse   . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

36 40 41 41 42 42 42 51 51 51 52 52 53

4.1 4.14 45 4.15 4.1 4.17 4.1 7 4.18

Ru Rumus mus menghi men ghitun tung g nil nilai reg bau rate Piliha Pilihan n untuk tegang tegangan an ref refere erensi nsi ADC ADaiCregiste   . .ister . r. baud . . d. rat . . e. [Atm09, . . . .   .h143] . . .   .. Pe Pemil miliha ihan n cha channe nnell inp input ut dan penguat penguatan an[Atm09, [Atm09,   h215]   . . . . . . . Pengatur Pengaturan an prescaler prescaler ADC[Atm09, ADC[Atm09,   h217]   . . . . . . . . . . . . . .

.. . .

.. . .

.. . .

.. . .

5548 58 59

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

.. . .

.. . .

.. . .

.. . .

6. 6.11 Tabel abel keb keben enaaran ran L29 L298 8 [STM00, [ STM00,   h6]   . . . . . . . . . . . . . . . . . . . . . . . . 74 6.2 Mode Compar Comparee Output Output untuk Phase Phase Corre Correct ct dan Phase Phase and Frequ Frequenc encyy Corre Correct ct PWM   [Atm09 [Atm09,, h108] h108]   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

6

 

Daftar Algoritma 5.1 Pe Pengu ngukur kuran an jarak jarak mengg mengguna unakan kan sensor sensor ult ultras rasoni onikk   . . . . . . . . . . . . . . . . . 66

7

 

Bab 1

Pengenalan Mikrokontroler ATmega32 1. 1.1 1

Mikr Mikrok okon ontr trol oler er

Menur Me nurut ut [Wik10e]   Mikroko Mikrokontrole ntrolerr (sering (sering disingkat disingkat MCU atau  µC) adalah adalah ko kompu mputer ter mini mini ya yang ng terlet terletak ak dalam dalam seb sebuah uah IC yang yang tersus tersusun un dari dari CP CPU, U, jam, jam, timer, timer, port port I/O dan memor memori. i. Seperti Sepe rti ko kompu mputer ter pada pada umu umumny mnya, a, mik mikrok rokont ontrol roler er memili memiliki ki media media penyimp penyimpana anan n pr progr ogram am 1 (flash memory  ) dan data (EEPROM  (EEPROM )).. Bila Bila dia dianal nalogi ogikan kan secar secaraa bebas bebas maka maka hardd harddisk isk pada pada PC bisa disamakan (fungsinya) dengan flash dengan  flash memory  pada memory  pada mikrokontroler, sedangkan USB Flashdisk bisa disamakan dengan EEPROM, seperti pada PC mikrokontroler juga memiliki RAM meskipun ukuranny ukura nnyaa jauh lebih kecil. kecil. Jika Ji ka PC mene meneri rima ma inpu inputt da dari ri duni duniaa lua luar mela melalu luii bebera beberapa pa maca macam m al alat at,, mi misa saln lnya ya mous mouse, e, keyboa keyboard, rd, gamepa gamepad d dsb dsb,, maka maka mik mikrok rokont ontrol roler er meneri menerima ma input input dari dari sej sejuml umlah ah pin Input/Output  pin  Input/Output  (I/O (I/O)) ya yang ng ad adaa pada pada ch chip ip mikr mikrok okon ontro trole lerr it itu u send sendir iri. i. In Inpu putt ya yang ng di dite teri rima ma ol oleh eh pi pin n I/ I/O O bi bisa sa berupa beru pa data data dig digita itall atau atau ana analog log (jika (jika mikrok mikrokont ontrol roler er tsb mempun mempunya yaii ADC). ADC). Seperti Sepe rti namany namanya, a, pin I/O tidak tidak hanya hanya dig diguna unakan kan oleh oleh mikrok mikrokont ontrol roler er untuk untuk meneri menerima ma data data namun nam un jug jugaa dim dimanf anfaat aatkan kan untuk untuk mengel mengelua uarka rkan n data. data. Biasan Biasanya ya sebuah sebuah pin bis bisaa diubahdiubah-uba ubah h fungsinya fungs inya sesuai sesuai denga dengan n kebutuhan kebutuhan pro programm grammer. er.

1. 1.2 2

Atmel tmel AVR

AVR adalah adalah mik mikrok rokont ontrol roler er 8-bit 8-bit chi chip p tungga tunggall dengan dengan arsit arsitekt ektur ur Ha Harva rvard rd termodi termodifika fikasi si ya yang ng diciptakan oleh Atmel pada tahun 1996 [Wik10a [Wik10a]. ]. Arsitektur Arsitektur Harvard Harvard menggunaka menggunakan n bus terpisah untuk unt uk pr progr ogram am dan dat dataa seh sehing ingga ga kedua keduany nyaa bis bisaa dia diakse ksess secar secaraa simult simultan an[dsp [dsp,, h84]. h84]. Arsite Arsitektu kturr ini dip dipili ilih h untuk untuk memaks memaksima imalka lkan n perfor performa ma dan paral paraleli elisme sme.. Ketika Ketika sebuah sebuah ins instru truksi ksi sedang sedang dieksekusi dieks ekusi,, instruksi instruksi sela selanjutny njutnyaa diambil diambil dar darii memori memori program, program, dengan demikian demikian setiap setiap intruksi intruksi bis bisaa dijalan dijalankan kan dalam dalam satu satu siklus siklus clock. clock. Pa Pada da AVR pr progr ogram am dis disimp impan an dalam dalam memor memorii flash flash ya yang ng bisa diprogra diprogram m ulang[ ulang[Atm09,   h8]. 1 Mikrokontroler

zaman dulu tidak menggunakan flash memory untuk menyimpan data, tapi PROM, EPROM

atau EEPROM.

8

 

1. 1.3 3

ATmeg Tmega3 a32 2

ATmega32 Tmega32 terdiri terdiri dari dari dua seri, yaitu yaitu ATmega Tmega32 32 dan ATmega32L, Tmega32L, perbedaanny perbedaannyaa terletak terletak pada tegang teg angan an catu catu yang yang dibutu dibutuhka hkan n dan kecep kecepata atan n maksim maksimum um mikrok mikrokont ontrol roler. er. Be Berik rikut ut ini adalah adalah 2 fitur-fitur dari ATmega32(L) ATmega32(L)   [Atm09] [Atm09] : ∗

  Kecepatan Kecepatan : ◦ ◦





  ATmega ATmega32: 32: 0-16 MHz   ATmega32L ATmega32L:: 0-8 MHz

  Catu daya: daya: ◦

  ATme ATmega ga32 32:: 4. 4.55 - 5. 5.55 V



  ATmeg ATmega32 a32L: L: 2.7 - 5.5 V

  Memori: ◦

  Flash mem memor ory: y: 32 KB (Daya (Daya tahan: tahan: 10.000 10.000 kali penulis penulisan) an)



  EEP EEPROM ROM:: 1024 1024 Byte Byte (Daya (Daya tah tahan: an: 100.00 100.000 0 kal kalii penulis penulisan) an)



  SRAM Interna Internal: l: 2 KB



  Lama penyimpanan penyimpanan data: ∗   20 tahu tahun n pa pada da suhu 85ºC ∗   100 tahun pada suhu 25ºC



  Fitur-fitur Fitur-fitur peripheral: peripheral: ◦

  2 buah buah tim timer/ er/cou counte nterr 8-bit 8-bit



  Sebuah timer/count timer/counter er 16-bit 16-bit



  4 buah buah cha channe nnell PWM



  8 buah buah cha channe nnell ADC 10-b 10-bit it



  Interface Two-wire Interface  Two-wire Serial Interface 



  Interface USART (serial) (serial)



  Interf Interface ace SPI Master/Sl Master/Slave ave



  Watchdog Watchdog timer yang bisa diprogram diprogram



  Komparator Komparator Analog

2 Datasheet

ATm ATmega32: ega32:   http://www.atmel.com/atmel/acrobat/doc2503.pdf

9

 

Gambar Gamb ar 1.1: Konfiguras Konfigurasii pin ATmega32 Tmega32 ([Atm09]) [Atm09]) ATmega32 mempunyai 32 pin I/O yang terorganisir dalam 4 port, yaitu PORT PORTA A (PA0-PA7 (PA0-PA7), ), PORTB POR TB (PB0 (PB0-PB7 -PB7), ), PORT PORTC C (PC0-PC7 (PC0-PC7) ) dan PORT PORTD D (PD0-P (PD0-PD7) D7). Se Seti tiap ap port port memmempunya pun yaii 8 pin I/O. I/O. Jadi Jadi yang yang dim dimaks aksud ud den dengan gan port   port    adalah adalah sekump sekumpula ulan n pin I/O ya yang ng tergab tergabung ung menjadi menja di satu kesatuan. kesatuan. Selain Sel ain seb sebaga agaii I/O tiap tiap pin mem mempun punya yaii fungsi fungsi sampin sampingan gan,, pada pada Gamba Gambarr   1.1   hal ini ditanda ditandaii dengan den gan tanda tanda kurung kurung.. Misaln Misalnya ya pin   PA0,   pin ini berfung berfungsi si juga juga sebaga sebagaii sal salah ah sat satu u input input dari dari ADC   yaitu   ADC0.Co .Conto ntoh h lain lain adalah adalah   PD0   yang yang ak akan an berub berubah ah fu fung ngsi si me menj njad adii in inpu putt po port rt se seri ri-al/USART   jika fitur komunikas komunikasii   USART   diaktifkan.

10

 

1.4

Rangka Rangkaian ian minima minimall ATmega3 Tmega32 2

Gambarr 1.2: Rangkaian Gamba Rangkaian minimal ATmega32 Tmega32 Kapasitor 100nF yang berada diantara  VCC   dan GND   digunakan untuk menstabilkan rangkaian, let letakk akkan an kapasi kapasito torr sedeka sedekatt mungki mungkin n den dengan gan pin mikrok mikrokont ontrol roler. er. Set Setiap iap rangka rangkaian ian digita digitall akan akan menye men yebab babkan kan timbuln timbulnya ya noi noise se pada pada pow power er supply supply,, kapasi kapasito torr ini berfung berfungsi si untuk untuk mereda meredam m noise noise tersebut. Menurut datasheet ATmega32, pin  AVCC   har harus us dihubungka dihubungkan n dengan dengan power power supply meskipun meskipun ADC   tidak tidak digu diguna naka kan. n. Ji Jika ka   ADC   digunak digunakan an maka maka anda anda wa wajib jib menar menaruh uh filter filter berupa berupa indukinduktor tor/kumpa /kumparan ran dan kapasito kapasitorr antara antara pin   AVCC   dan pow power er supply supply. Ada empat pin yan yang g dibutuhkan dibutuhkan untuk mengisi/me mengisi/mendow ndownload nload program kedalam kedalam ATmega32: Tmega32: RESET,   SCK   (PB7),   MISO   (PB6) dan   MOSI   (PB5). Anda Anda bis bisaa menggu menggunak nakan an   PB5,   PB6   dan PB7   seperti port-port lain, namun pastikan bahwa tidak ada komponen lain yang terhubung saat melakukan mela kukan download download agar proses proses pengisian pengisian program program tidak terganggu. terganggu.

1.5

Downl Download oader er ATmega3 Tmega32 2

Downl Download oader er atau atau pr progr ogramm ammer er ada adalah lah alat alat yang yang diguna digunakan kan untuk untuk mengis mengisii pr progr ogram am ke kedal dalam am mikrok mik rokont ontrol roler. er. Ad Adaa banya banyakk tipe progr programm ammer er untuk untuk ATmega3 Tmega32, 2, namun namun ya yang ng akan akan sa saya ya bahas hanyalah hanyalah STK2 STK200 00 dan AVR-Doper. VR-Doper.

11

 

1.5. 1.5.1 1

ST STK2 K200 00

Parameter avrdude: Tipe programmer: programmer: stk200 Po Port: rt: lpt1

Gambar Gamb ar 1.3: Simplified Simplified AV AVR R ISP Programmer Programmer Ini ada adalah lah downl download oader er sederh sederhana ana yang bis bisaa anda anda buat buat sendir sendiri. i. Anda Anda hanya hanya membut membutuhk uhkan an empat buah resistoruntuk 330 ohm, serta konektor parallel konektor  parallel port  port     untuk dihubungkan dihubung kan ke komputer. kompsederhana uter. Kebanyakan software memprogram ATmega32 bisa digunakan dengan downloader ini. Downloader ini membutuhkan parallel port yang sekarang sudah mulai hilang pada komputerko kompu mputer ter genera generasi si terba terbaru, ru, teruta terutama ma pad padaa laptop laptop.. Untuk Untuk mengak mengakali aliny nyaa anda anda bis bisaa mencob mencobaa menggunaka mengg unakan n konv konverter erter USB-to-Para USB-to-Parallel. llel. Say Sayaa belum pernah menggunakan menggunakan konverter konverter jenis ini padaa downl pad download oader er jad jadii tidak tidak tah tahu u apa apakah kah cara cara ini bis bisaa diguna digunakan kan atau atau tidak. tidak.

1.5. 1.5.2 2

US USBa Basp sp

Parameter avrdude: Tipe programmer: programmer: usbasp Po Port: rt: Tidak Tidak diperlukan diperlukan

12

 

1.5.2. 1.5 .2.1 1

Rangka Rangkaian ian USBasp USBasp

Gambarr 1.4: Rangkaian Gamba Rangkaian lengkap USBasp USBasp menggu USBasp menggunak nakan an mikrok mikrokont ontrol roler er ATmega8 Tmega8 (atau (atau bis bisaa digant digantii ATmega4 Tmega48) 8) sebaga sebagaii otak otak rangka ran gkaian ian.. Downl Download oader er ini menggu menggunak nakan an port port USB sehing sehingga ga anda anda bis bisaa memaka memakainy inyaa pada pada ko kommpu pute terr ya yang ng ti tida dakk memi memili liki ki pa para rall llel el po port rt.. Ke Kele lema maha han n da dari ri do down wnlo load ader er in inii adal adalah ah ti tida dakk se semu muaa softw softwar aree menduk mendukung ung USB USBasp asp.. Pa Pada da saat saat penulis penulisan an buku buku ini ini,, sat satu-s u-satu atuny nyaa sof softw twar aree ya yang ng menmendukung dukun g USBasp USBasp adalah adalah avrdude, avrdude, softwa software re downloade downloaderr bawaan bawaan dari dari WinAVR. WinAVR. Konekto Kon ektorr ke mikrokont mikrokontroler roler pada Gamb Gambar ar   1.4   dengan dengan label   X2   adalah adalah konekto konektorr 10-pin yang merupakan merup akan konektor konektor standar standar ISP (In-System (In-System Programmi Programming) ng) mikrokont mikrokontroler roler AVR. Konekto Konektorr ini dilengkapi dilen gkapi dengan jalur koneksi serial yang yang digunakan digunakan untuk kepentingan kepentingan debugging, debugging, meskipun meskipun konekto kon ektornya rnya sudah ada tapi firmware firmware dari USBa USBasp sp belum mendukung mendukung komunikasi komunikasi serial. serial. Koneksi Koneksi ini tida tidakk dibutu dibutuhka hkan n pad padaa saa saatt pemrogr pemrograma aman n seh sehing ingga ga anda anda hanya hanya membut membutuhk uhkan an lima lima ko konek neksi si darii USBasp dar USBasp ke mikrok mikrokontrol ontroler er target: Ground, Ground, MISO, MOSI, SCK dan RESET. Lebih lengkapny lengkapnyaa bisa dilihat pada Tabel Tabel   1.1.

13

 

Da Dari ri ATmeg Tmega4 a48/ 8/A ATmeg Tmega8 a8 SS (PB2/pin 16) MOSI (PB3/pin 17) MISO (PB4/pin 18) SCK (PB5/pin 19) Ground (pin 8)

Da Dari ri Kon onek ekto torr 10 10-p -pin in pin 5 pin 1 pin 9 pin 7 pin 8 & 10

Ke Mi Mikr krok okon ontr trol oler er RESET (ATmega32: pin 9) MOSI (ATmega32: PB5/pin6) MISO (ATmega32: PB6/pin7) SCK (ATmega32: PB7/pin 8) Ground (ATmega32: pin 11 & 31)

Tabel 1.1: Koneksi Koneksi anta antara ra USBasp USBasp dan Mikrokon Mikrokontrole trolerr target target

1.5.2.2 1.5.2 .2

File-file File-file pendukung pendukung USBasp USBasp

Seluru Sel uruh h file yang yang anda anda but butuhk uhkan an untuk untuk membua membuatt USB USBasp asp bis bisaa anda anda downl download oad pada pada sit situsn usnya ya:: http://www.fischl.de/usbasp/

File File ya yang ng saya saya downl download oad ada adalah lah file den dengan gan nam namaa   usbasp.2007-10-23.tar.gz. Formatt ini ma ini ad adaa da dala lam m fo form rmat at kompr ompres esii   gzip   (digunak (digunakan an di Linux) Linux),, anda anda bis bisaa mengek mengekstr strakn aknya ya menggunaka mengg unakan n softwa software re 7-Zip (Website (Website::   http://www.7zip.org   (gr (grat atis is)) )).. Is Isii da dari ri fil filee ini ini adalah: ∗

  Direktori   bin Didala Did alam m dir direkt ektor orii ini ada dua dir direkt ektor orii lagi, lagi, ya yaitu itu ◦





  Direktori   firmware Berisii firmw Beris firmware are yang har harus us dimas dimasukkan ukkan kedalam kedalam mikrokontrol mikrokontroler er pada USBasp, USBasp, gunakan file   usbasp.atmega8.2007-10-23.hex   jika anda memakai memakai ATmega8 ATmega8 dan gunakan   usbasp.atmega48.2007-10-23.hex   jika anda memakai memakai ATmega48. Tmega48.   Direktori   win-driver Berisii drive Beris driverr yang yang harus harus diinstall diinstall pada kompute komputerr yang yang digunakan digunakan untuk memprogram memprogram mikrokontro mikrok ontroler. ler. Klik kanan pada file   usbasp.inf   lalu pilih “Install” “Install”..

  Direktori   circuit ◦



  File   USBasp.s#1 Saya Saya tidak tahu file apa ini ini,, mungki mungkin n bac backup kup dari file   USBasp.sch.   USBasp.sch

Ini adala adalah h gambar gambar rangkaian rangkaian USBasp, anda bisa membukany membukanyaa dengan dengan softwa software re CAD “EAGLE” (Website:   http://www.cadsoft.de/freeware.htm). ◦

  USBasp_schematics.pdf

Ini adalah versi pdf dari file   USBasp.sch. ∗

  Direktori   firmware ◦



  Direktori   usbdrv Berisi Ber isi file-fil file-filee sou source rce code dari dri driver ver USB ya yang ng ada pada dir direkt ektor orii   bin/firmware   Source code dari firmware USBasp yang harus dimasukkan kedalam ATmega8/ATmega48.



  File   Changelog.txt



  File   Readme.txt

14

 

1.5.2.3 1.5.2 .3

Pengisian Pengisian firmware firmware/p /progra rogram m USBasp USBasp

Karena USBasp menggunakan mikrokontroler sebagai inti dari rangkaian maka kita harus memasukkan sukka n program program kedalamn kedalamnya ya terlebih terlebih dahulu dahulu3 .   Tentu Tentu saja anda membutuhkan membutuhkan downloader downloader lain untuk memasukkan memasukkan firmware firmware kedalam kedalam USBasp. USBasp. Jika anda tidak memiliki downloade downloader/pr r/progra ogrammmer, mer, solu solusi si pa pali ling ng muda mudah h adal adalah ah memi meminj njam am puny punyaa tema teman n an anda da :D :D.. Ji Jika ka tid tidak ak ad ada, a, an anda da bi bisa sa membuat membu at STK200 STK200 (lihat (lihat bagian bagian   1.5.1). 1.5.1). Perhatian!, pastikan bahwa: ∗   Jumper pada JP2, Self programming, telah terpasang ∗



  Komputer anda telah terinstall WinAVR (lihat Bab 3 Bab 3): ):

  Edit file  Makefile   yang ada pada direktori  firmware, ganti baris-baris ini sesuai dengan mikrokontrol mikrok ontroler er yang yang anda gunak gunakan: an: ◦

  TARGET=...

Isi dengan atmega8 atau atmega48, tergantung mikrokontroler yang anda gunakan ◦

  HFUSE=...

Isi dengan 0xc9   jika anda menggunakan atmega8,  0xdd   jika menggunakan atmega48 ◦

  LFUSE=...

Isi dengan 0xef   jika anda menggunakan atmega8,  0xff   jika menggunakan atmega48 ◦

  ISP=...

Sesuaikan Sesua ikan denga dengan n programm programmer/do er/downloa wnloader der yang yang anda gunakan. gunakan. ◦

  PORT=...

Sesuaikan Sesua ikan denga dengan n port dimana dimana dow download nloader er terpasang. terpasang. ∗

  Buka command command prompt prompt windows: windows: Star St artt menu menu > Run Run > ketik ketik  cmd   > tek tekan an ent enter er



  Masuk Masuk kedalam kedalam direk direktori tori  usbasp.2007-10-23



  Setelah itu masuk kedalam kedalam direktori direktori  firmware



  jalankan perintah-perint perintah-perintah ah ini:





  make make fuse fuses s



  make make flas flash h

  Selesai!

1.5.3 1.5 .3

AVR-D VR-Doper oper

Parameter avrdude: Tipe programme programmer: r: stk500v2 stk500v2 Po Port: rt: avrdoper avrdoper Setelah Setela h dic dicoba oba,, terny ternyata ata USB USBasp asp yang yang saya saya bua buatt memili memiliki ki ke kecep cepata atan n transf transfer er ya yang ng terasa terasa lambat, lamba t, lebih lambat dari STK200. STK200. Say Sayaa pikir mungkin mungkin ada sesuatu yang salah dengan rangkaian rangkaian ya yang ng sa saya ya buat. buat. Setela Setelah h menca mencariri-ca cari ri saya saya tida tidakk bis bisaa menemu menemukan kan penyeba penyebab b permasa permasalah lahann annya ya sehingga sehin gga saya saya menca mencari ri dow download nloader er lain, dan akhirnya akhirnya saya saya menemukan menemukan AVR-Doper VR-Doper pada website ini: 3 Programmer

yang harus diprogram terlebih dahulu

15

 

http://www.obdev.at

Pa Pada da website website tersebut tersebut disebutkan disebutkan bahwa bahwa firmware firmware AVR-Doper VR-Doper kompatibel kompatibel dengan dengan USBasp, USBasp, ini berarti berarti saya saya tidak perlu membuat membuat programme programmerr baru baru :-). Kelebihan Kelebihan AVR-Do AVR-Doper per dibandingka dibandingkan n dengan denga n USBasp USBasp adalah adalah AVR-Doper VR-Doper tidak membutuhkan membutuhkan driver driver khusus. khusus. AVR-Doper VR-Doper menggunamenggunakan mode HID –Human –Human Interface Device , mode yang digunakan oleh mouse dan keyboard USB–, dri driver ver HID bia biasan sanya ya sud sudah ah terins terinstal talll pad padaa ma mayo yorit ritas as sis sistem tem operasi operasi ya yang ng ada saat saat ini ini.. Kekura Kekuranngan ganny nya, a, seperti seperti USBasp USBasp,, AVRVR-Dope Doperr hanya hanya bis bisaa dig diguna unakan kan bersama bersama AVRDUDE VRDUDE versi versi 5.3 dan selanjutnya. Setelah Setel ah firmware firmware AVR-Doper AVR-Doper saya saya pasa pasang ng pro proses ses down download load menjadi menjadi lebih cepat cepat dibandingka dibandingkan n wa waktu ktu masih menggunaka menggunakan n firmware firmware aslin aslinya ya (USBa (USBasp). sp). Perhatian!, pastikan bahwa: ∗   Jumper pada JP2, Self programming, telah terpasang ∗

  Komputer anda telah terinstall WinAVR (lihat Bab 3 Bab 3): ):

Untuk memasukka memasukkan n firmware firmware AVR-Doper VR-Doper ked kedalam alam USBasp USBasp lakukan lakukan langkah-la langkah-langkah ngkah berikut ∗





  Downl Download oad dan ekstra ekstrakk file   AVR-Doper.2008-11-27.zip   atau atau ya yang ng leb lebih ih baru. baru.   Masuk kedalam direktori AVR-Doper.2008-11-27\firmware lalu edit file Makefile dengan denga n WordP WordPad, ad, janga jangan n mengg menggunaka unakan n Notepad. Notepad.   Edit baris-ba baris-baris ris berikut: ◦

  DEVICE=

Isi sesuai sesuai mikrok mikrokontro ontroler ler yang yang anda gunakan,  atmega8   atau   atmega48. ◦

  F_CPU=12000000

Jangan Janga n diganti. diganti. ◦

  FUSE_L= 0x9f   untuk ATmega8 Tmega8 dan   0xdf   untuk ATmega48



  FUSE_H= 0xc9   untuk AT ATmega8 mega8 dan   0xdd   untuk ATmega48



  PORT=

Ganti Gan ti ses sesuai uai port port progr programm ammer er yang yang and andaa pakai. pakai. ◦

  PROGRAMMER=

Ganti Gan ti dengan dengan tipe progr programm ammer er yang yang and andaa pakai. pakai.



  Masih dalam dalam direktori direktori  firmware, gant gantii na nama ma fil filee   usbasp-mega8-12mhz.hex   men  jadi   main.hex



  Buka Buka comman command d promp promptt lalu lalu masuk masuk ke dir direkt ektor orii   AVR-Doper.2008-11-27\firmware



  Jalankan perintah-perin perintah-perintah tah berikut secara secara berurutan: berurutan:





  make make fuse fuse



  make make flas flash h

  Selesai!

16

 

1.6

Fuse use bits bits

Fu Fuse se bit bitss diguna digunakan kan untuk untuk mengat mengatur ur fitur-fi fitur-fitur tur dasar dasar ATmega3 Tmega32 2 seperti seperti sumber sumber clock, clock, osi osilat lator or,, sta start rt up time, brown out detector, detector, dsb. ATmega32 Tmega32 diedarkan diedarkan oleh produsenny produsennyaa dengan dengan frekuensi frekuensi 1 MHz, seandainya Anda ingin menjalankannya pada frekuensi maksimum, 16 MHz, maka Anda ha haru russ mema memasa sang ng kr kris ista tall 16 MHz MHz pa pada da pin pin XTAL XTAL1 1 da dan n XTAL XTAL22 se sert rtaa me memp mpro rogr gram am fu fuse se bi bits ts CKOPT CK OPT dan CKSEL. CKSEL. Jik Jikaa anda anda lupa lupa melaku melakukan kanny nyaa maka maka mikrok mikrokont ontrol roler er aka akan n tetap tetap berjala berjalan n padaa fre pad frekue kuensi nsi 1 MHz, MHz, meskip meskipun un kri krista stall sud sudah ah terpas terpasang ang dengan dengan baik baik dan benar benar :-) :-).. Fu Fuse se bits dibagi dibagi menjad menjadii dua yaitu High Byte Byte (HFUSE (HFUSE)) dan Low Byte Byte (LFUSE (LFUSE). ).

Perhatian! Sebuah Seb uah fus fusee dikata dikatakan kan terpr terprogr ogram am jik jikaa nil nilain ainya ya ’0’, ’0’, dan tidak tidak terpr terprogr ogram am jik jikaa nil nilain ainya ya ’1’. Jadi Jadi   jangan sampai terbalik.

1.6. 1.6.1 1

Hi High gh By Byte te

Fuse High Byte

No. bit 7 6 5

OCDENa  JTAGENb  SPIENc 

Penjelasan

Nilai default

Enable OCD Enable JTAG Enab Enable le pemr pemrog ogra rama man n da dan n do down wnlo load ad dataa melalu dat melaluii SPI

1 (tidak terprogram, OCD di-disable) 0 (terprogram, JTAG di-enable) 0 (te (terp rprog rogram ram,, pemrog. pemrog. SPI di-enable)

PePROM ngaOM turan oskilaik tout r di Memo Memori ri EEPR EE ti tida dak ikut diha hapu puss saatt chi saa chip p dihapu dihapuss Pemilihan ukuran Boot Size Pemilihan ukuran Boot Size Pemilihan reset vector

(tidrogram, ak tem, rproEEPROM gram) M ikut 1 (tidak (tidak1terprogra terp EEPRO terhapus) 0 (terprogram)e  0 (terprogram) 1 (tidak terprogram)



CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST

43

       

2 1 0



Jangan pernah meluncurkan produk dengan fuse OCDEN terprogram apapun pengaturan pada  Lock Bits  dan  dan fuse JTAGEN. Fuse OCDEN yang terprogram mengakibatkan sebagian sistem clock berjalan pada semua mode sleep. Ini bisa saja menambah pemakaian daya. b  Jika interface JTAG tidak dihubungkan, sebaiknya fuse JTAGEN JTAGEN di-disable. Ini untuk menghindari arus statis pada pin TDO dari interface JTAG. c  Fuse SPIEN tidak bisa diakses dalam mode pemrograman SPI Serial d  Fungsi fuse CKOPT bergantung pada pengaturan bit-bit CKSEL. Lihat “Clock Sources” pada halaman 25 di datasheet. e  Nil Nilai ai defau default lt dari dari BOOTS BOOTSZ1. Z1..0 .0 meng menghas hasilk ilkan an Boot Siz Sizee maksim maksimum um.. Lih Lihat at Tab Tabel el 99 pada pada hal. hal. 255 di datasheet.

Tabel 1.2: Fu Fuse se High High Byte[ Byte[Atm09 Atm09,, h257] h257] ∗

  OCDEN

Ini diguna digunakan kan untuk untuk mengak mengaktifk tifkan an On-Chi On-Chip p Debug Debug system system,, bia biarka rkan n fus fusee ini tidak tidak terpr terproogram. ∗

  JTAGEN

Jik Jikaa anda anda tidak tidak menggu menggunak nakan an inte interfa rface ce JTAG JTAG maka maka sebaik sebaikny nyaa fungsi fungsi ini dinona dinonakti ktifka fkan n dengan mengubah JTAGEN menja menjadi di tidak terprogram terprogram (1). Interface Interface JT JTAG AG pada ATmega32 Tmega32 secara seca ra default default diaktifkan. diaktifkan. ∗

  SPIEN

Biarkan fuse ini terp Biarkan terprogr rogram, am, karena karena umumny umumnyaa downloade downloaderr melakukan melakukan pemrograman pemrograman lewat lewat SPI. Jika anda menggunakan SPI untuk memasukkan program anda tidak akan bisa mengganti gan ti fus fusee ini ini.. ∗

  CKOPT

17

 

Singka Sin gkatny tnya, a, jik jikaa anda anda menggu menggunak nakan an kri krista stall dengan dengan fre frekue kuensi nsi dia diatas tas 8 MH MHz, z, maka maka set agar agar CKOPT terpr CKOPT terprogr ogram am (0) (0).. Untuk Untuk fre frekue kuensi nsi 8 MHz ke keba bawa wah h set CKOPT CKOPT tidak tidak terpr terprogr ogram. am. ∗

  EESAVE

Se Sesu suai aika kan n fuse fuse ini ini deng dengan an kebu kebutu tuha han n an anda da.. Ji Jika ka ka kare rena na su suat atu u al alas asan an tert terten entu tu anda anda menginginkan agar EEPROM tidak dihapus saat chip dihapus (contohnya saat anda memasukkan sukka n program program kedalam mikrokontrol mikrokontroler) er) maka anda bisa memprogra memprogram m fuse ini (0). ∗

  BOOTSZ1..0

Kedua fuse ini digunakan untuk mengatur ukuran Boot Size dimana boot loader disimpan. Saya belum pernah menggunakan boot loader jadi tidak bisa berkomentar soal pengaturan fus fusee ini ini.. ∗

  BOOTRST

Fuse ini digunakan untuk memilih reset vector, jika tidak terprogram (default) maka setelah reset mikrokontrole mikrokontrolerr akan menjalankan menjalankan program seperti biasa biasa.. Jika terprogram terprogram maka yang yang dij dijala alanka nkan n set setela elah h res reset et adalah adalah boot loader loader..

1.6. 1.6.2 2

Lo Low w byte yte

Fuse Low Fuse Byte BODLEVEL   BODEN   SUT1   SUT0   CKSEL3   CKSEL2   CKSEL1   CKSEL0  

No. bit

Penjelasan

Nilai default

7 6 5 4 3 2 1 0

Brown-out Detector trigger level Brown-out Detector enable Pilih waktu startup Pilih waktu startup Pilih sumber clock Pilih sumber clock Pilih sumber clock Pilih sumber clock

1 (tidak terprogram) 1 (tidak terprogram, BOD non-aktif) 1 (tidak terprogram) 0 (terprogram) 0 (terprogram) 0 (terprogram) 0 (terprogram) 1 (tidak terprogram)

Tabel 1.3: Fu Fuse se Low Low Byte Byte[Atm09,   h258] ∗

  BODLEVEL

Jika Ji ka terp terpro rogr gram am maka maka leve levell pemic pemicu u tega tegang ngan an brow brown n out out di di-s -set et 4. 4.00 V, ji jika ka tid tidak ak le leve vell tegangan tegang an br brow own n out di-s di-set et 2.7 V. ∗

  BODEN

BOD (Brown Out Detector) Detector) digunakan digunakan untuk melakukan melakukan reset secara secara otomatis otomatis jika tegangan catu mikrokontroler turun lebih rendah dari yang telah ditentukan pada fuse BODLEVEL. BOD sebaik sebaikny nyaa tidak tidak diguna digunakan kan jik jikaa tidak tidak dibutu dibutuhka hkan n ka karen renaa akan akan menamb menambah ah ko konsu nsumsi msi daya.



  SUT1..0

Kedua bit ini digunakan digunakan untuk memilih memilih waktu waktu sta start-up rt-up sebelum mikrokontro mikrokontroler ler diaktifkan diaktifkan,, ini untuk memastikan bahwa catu daya dan osilator sudah stabil saat mikrokontroler mulai berjala berj alan. n. Secar Secaraa defaul defaultt ATme Tmega3 ga32 2 die dieda darka rkan n dengan dengan set settin ting g start-u start-up p paling paling lama lama (65 ms). Tabel   1.4   menunjukkan menunjukkan pengaturan pengaturan   SUT1..0   untuk untuk osi osilat lator or RC int intern ernal. al. Penga Pengatur turan an SUT1..0   untuk kristal disajikan disajikan pada Tabel Tabel   1.6 1.6..

18

 

SUT1..0Wak Waktu tu sta start-up rt-up

dari power-do power-down wn dan power power sav savee 6 CK 6 CK 6 CK

00 01 10 11

Delayy tamba Dela tambahan han setelah setelah reset (V cccc  = 5.0V   V    )

Digunakan Digun akan untuk

– 4.1 ms 65 ms Reserved

BOD aktif   Fast rising power Slowly rising power

 

Tabel 1.4 1.4:: Waktu Waktu startstart-up up unt untuk uk osi osilat lator or RC Int Intern ernal al[Atm09 [Atm09,, h3 h30] 0] ∗

  CKSEL3..0

Keempatt fus Keempa fusee ini diguna digunakan kan untuk memili memilih h sumber sumber dan kecepat kecepatan an clock. clock. Pada Pada buku buku ini sa saya ya hanya hanya aka akan n mem membah bahas as peng penggun gunaan aan kri krista stal. l. Pengg Pengguna unaan an sumber sumber clock clock lai lainny nnyaa bis bisaa andaa baca and baca pad padaa dat datash asheet eet,, Bab “Syste “System m Clock Clock and Clock Clock Option Options”, s”, halama halaman n 24. Pada Gambar   1.5   ditunjukkan ditunjukkan bagaimana bagaimana menghubungk menghubungkan an kristal kristal dengan dengan ATmega32. Tmega32.

Gambar Gamb ar 1.5: Ca Cara ra menghubungk menghubungkan an kristal kristal[Atm09,   h26]

Fuse   CKSEL3..1   bersama bersama denga dengan n   CKOPT   digunaka digunakan n untuk memilih memilih frekuensi frekuensi osilator osilator kristal. CK CKOP OPT T

1 1 1 0

CK CKSE SEL3 L3.. ..1 1   Rentan Rentangg ffrek rekuen uensi si (MHz) (MHz)

101a  110 111 101, 110, 111

0.4 - 0.9 0.9 - 3.0 3.0 - 8.0 > 1.0

Nilai Nilai kapasi kapasito torr ((C1 C1 & C2) yang disarankan – 12 - 22 12 - 22 12 - 22



Jangan digunakan untuk kristal, khusus untuk resonator keramik.

Tabel 1.5 1.5:: Mode operasi operasi osilat osilator or krista kristal[ l[Atm09, Atm09,   h26]

Fuse CKSEL0 bersama dengan SUT1..0 digunakan untuk memilih waktu start-up, seperti pada Tabel   1.6.

19

 

 

 

Delay tambahan Delay tambahan setelah setel ah reset

Digunakan Digun akan untuk

00

  Waktu Waktu start-up start-up dari dari pow power er down down & power pow er save 258 CK

4.1 ms

0

01

258 CK

65 ms

Resonator keramik, fast rising power power Resonator keramik, slowly rising power power

0

10

1K CK



Resonator aktif  kera mik, BOD

0

11

1K CK

4.1 ms

1

00

1K CK

65 ms

1 1

01 10

16K CK 16K CK

4.1 ms

1

11

16K CK

65 ms

Resonator keramik, fast rising power power Resonator keramik, slowly rising power power Osilator kristal, BOD aktif   Osilator kristal, fast rising power Osilator kristal, slowly rising power

CKSE CKSEL0 L0

SUT1 SUT1.. ..0 0

0

Tabel 1.6: Pilihan Pilihan wa waktu ktu start-up start-up untuk osilator osilator kristal

1.6.3 1.6 .3

Pe Pemro mrogra graman man fuse bit bitss

Ad Adaa banya banyakk cara cara untuk untuk mempr memprogr ogram am fus fusee bit bits, s, namun namun ya yang ng sa saya ya bahas bahas hanya hanyalah lah pemrogr pemrograma aman n fuse dengan dengan avrdude. avrdude.

Perhitungan fuse bits Sebagai Seba gai contoh, anggap anggap saja kita menginginka menginginkan n kon konfigura figurasi si sepert ini: ∗

  Waktu Waktu start start up paling paling lam lama: a:   CKSE KSEL0 = 1, SUT SUT1 = 1, SU SUT T0 = 1



  Kecepat Kecepatan an 16 MHz, MHz, menggu menggunak nakan an kri krista stal: l:   CKOP CKOPT T = 0, CKS CKSEL EL3 3 = 1, CKSE CKSEL2 L2 = 1, CKS KSE EL1 = 1



  JT JTAG AG tidak digunakan: digunakan:   JTA JTAGE GEN N = 1



  Fu Fuse se bit bitss lain lain dibia dibiarka rkan n pada pada peng pengatu aturan ran defaul default. t.

Sehingga: ∗

  High byte byte (HFUSE): Fuse

No. bit OCDEN   7 JTAGEN   6 SPIEN   5 CKOPT   4 EESAVE   3 BOOTSZ1   2 BOOTSZ0   1 BOOTRST   0

Konfigurasi 1 (default) 0 0 (default) 0 1 (default) 0 (default) 0 (default) 1 (default)

Tabel 1.7 1.7:: Contoh Contoh HFUSE HFUSE

HFUSE = 10001 10001001 001, jika dikonver HFUS USE E = 0x89 0x89. Jadi   HFUSE dikonversi si ke heksadesim heksadesimal, al,   HF

20

 

 

 

 



  Low byte byte (LFUSE): Fuse BODLEVEL BODEN SUT1 SUT0

No. bit 7 6 5 4

Konfigurasi 1 (default) 1 (default) 1 (default) 1

CKSEL3 CKSEL2 CKSEL1 CKSEL0

3 2 1 0

1 1 1 1 (default)

Tabel 1.8 1.8:: Contoh Contoh HFUSE HFUSE Jadii LFUSE Jad LFUSE = 111111 11111111, 11, dalam dalam hek heksad sadesi esimal mal HFUSE HFUSE = 0xFF. 0xFF.

Tips! Ada ba bany nyak ak ka kalk lkul ulat ator or fuse fuse bits bits yang yang bi bisa sa an anda da temu temuka kan n di in inte tern rnet et,, gunakan kata kunci fuse kunci  fuse bits calculator   calculator   pada search engine favorit anda.

Pemrograman fuse bits dengan avrdude Pa Pastika stikan n bahwa bahwa WinAVR WinAVR telah terinstall (lihat (lihat Bab   3) 3).. Pe Perintah rintah untuk memprogra memprogram m fuse bits dengan dengan avrdude avrdude adalah adalah sebagai sebagai berikut: avrdud avr dude e -c PRO PROGRA GRAMME MMER R -P POR PORT T -p m32 m32 -U hfuse hfuse:w: :w:HFU HFUSE SE:m :m -U lfuse:w:LFUSE:m

Dimana: PROGRAMMER : Lihat Lihat bag bagian ian   1.5 PORT: Lih Lihat at bagian bagian   1.5 HFUSE: isi dengan   HFUSE   ya yang ng telah Anda hitung (heksadesimal) (heksadesimal) LFUSE: isi dengan   LFUSE   ya yang ng telah Anda hitung (heksadesimal) (heksadesimal)

!Perhatian! Berhati-hat Berha ti-hatilah ilah dalam memprogra memprogram m fuse bits, kesalaha kesalahan n kecil kecil bisa menyebabk menyebabkan an mikrokont mikrokontroler roler andaa tidak and tidak bis bisaa diguna digunakan kan lagi: lagi: Misaln Mis alnya ya saya saya pern pernah ah secar secaraa tida tidakk sengaj sengajaa mengat mengatur ur agar agar ATmega3 Tmega32 2 menggu menggunak nakan an clock clock eksterna sternall (CKSEL CKSEL3.. 3..0 0 = 0000 0000).. hasilnya hasilnya?? mikrokont mikrokontroler roler tidak bisa dikenali dikenali oleh downloade downloaderr a  :-) Jadi selalu pastikan bahwa pengaturan fuse bits sudah benar sebelum anda memprogramnya. a 

Jika hal ini terjadi, jangan putus asa, ada beberapa situs internet yang membahas cara mengatasi hal ini, gunakan search engine favorit Anda :-).

21

 

Bab 2

Bahasa C untuk AVR Pad adaa ba bagi gian an ini ini ak akan an dije dijela lask skan an bebe bebera rapa pa ma mate teri ri fit fitur ur-fi -fitu turr da dari ri Baha Bahasa sa C ya yang ng se seri ring ng di digu gu-nakan dalam pemrograman AVR. Anda diharapkan sudah mengerti dasar-dasar Bahasa C seperti dekla dek laras rasii fungsi fungsi,, varia variabel, bel, dsb dsb.. Ad Adaa banya banyakk tutor tutorial ial Bahasa Bahasa C ya yang ng bis bisaa anda anda ikuti ikuti di int intern ernet, et, bertanyalah bertany alah pada   om google, google,   dia pas pasti ti dengan dengan senan senang g hati hati memban membantu tu anda anda :-)

2. 2.1 1 2.1.1 2.1 .1

Opti Optima masi si kode Mac Macamam-mac macam am int intege egerr

Memori Memo ri pad padaa mik mikrok rokont ontrol roler er AVR jumlah jumlahny nyaa kecil kecil dib diband anding ingkan kan dengan dengan ya yang ng ada pada pada PC sehing seh ingga ga kit kitaa harus harus leb lebih ih ’ber ’berhem hemat’ at’ saat saat membua membuatt pr progr ogram am pada pada mikrok mikrokont ontrol roler/ er/robo robot. t. ProProgram robot biasanya biasanya banyak menggunakan menggunakan variabel numerik berupa  integer,  float   ataupun double   karena karena banya banyakny knyaa perhitu perhitunga ngan n yang yang harus harus dil dilaku akukan kan.. Salah Salah sat satu u ca cara ra untuk untuk menghe menghe-mat mem memor orii adalah adalah den dengan gan mem memili ilih h menggu menggunak nakan an va varia riabel bel (te (terut rutama ama int intege eger) r) dengan dengan ukuran ukuran yang yan g sesuai sesuai dengan dengan kebutuhan kebutuhan.. Informasi Info rmasi tentang berba b erbagai gai macam ukuran ukuran variabel variabel integer bisa anda lihat pada dokumentas dokumentasii header stdint.h   yan yangg terdapat pada manu manual al avr-libc —Start Menu → WinAVR → avr-libc Manual —. Pa Pada da tabel   2.2   disajika disajikan n ukura ukuran n dari dari berbaga berbagaii tipe integer. integer.

De Dekl klaarasi rasi

Uk Ukur uran ana 

Nilai minimum

Nilai maksimum

int8_t

8-bit

-126

127

uint8_t

8-bit

0

255

int16_t uint16_t

16-bit 16-bit

-32.766 0

32.767 65535

int32_t

32-bit

-2.147.483.646

2.147.483.647

uint32_t

32-bit

0

4.294.967.295

int64_ int 64_t t

64-bit 64-bit

-9. -9.223 223.37 .372.0 2.036. 36.854 854.77 .775.8 5.806 06

9.223. 9.223.372 372.03 .036.8 6.854. 54.775 775.80 .807 7

uint64_t

64-bit

0

18.446.744.073.709.551.615



8 bit = 1 byte – 2 byte = 16 bit = 1 word

Tabel 2.2: Macam-mac Macam-macam am tipe integer integer Int Intege egerr yang yang dia diawa wali li dengan dengan huruf huruf ’u’ ’u’—mi —misal salny nyaa   uint8_t,   uint16_t—dise —disebut but dengan dengan unsigned integer . Inte Intege gerr yang yang ti tida dakk dia diawali ali hu huru ruff u di dise sebu butt de deng ngan an signed  signed integer .   Unsigned  integer    artinya integer tersebut tidak mungkin menyimpan nilai negatif dan signed integer  dan  signed integer   integer   artinya int intege egerr terseb tersebut ut bis bisaa diguna digunakan kan untuk untuk menyim menyimpan pan nil nilai ai positif positif dan negati negatif. f. Kita bisa menentukan menentukan jenis variabel variabel yang akan digunakan digunakan dengan dengan memperkiraka memperkirakan n nilai maksimum sim um dan4 minimu min mngan yang yang aka akan n dit ditamp ampung varia va riabel. bel.berapa Sebaga Sebpa agai i contoh con toh, , ng misaln mistelah alnya yadimasu didala didasuki alam m arena arenat robo robot t ada buah buaimum h rua ruanga n dan kit kita a ingin ing inung men menyim yimpan pan bera ruanga rua ngan n ya yang tel ah dim ki robot robo 22

 

kedalam variabel   nomorRuangan.   Variabel   nomorRuangan   tidak mungkin bernila b ernilaii kurang kurang dari dari 0, sehing sehingga ga kita kita bis bisaa menggu menggunak nakan an   unsigned integer   integer    (uint* _t). Kem Kemudi udian an ka karen renaa nil nilai ai variabel   nomorRuangan   kemungk kemungkina inan n besar besar tidak tidak akan akan leb lebih ih dari dari 255 maka maka sebaik sebaikny nyaa kit kitaa menggu men ggunak nakan an int intege egerr 8-b 8-bit. it. Dari Dari sini sini kita kita bis bisaa men menent entuka ukan n bahwa bahwa tipe integer integer ya yang ng akan akan cocok cocok untuk variable variable  nomorRuangan   adalah   uint8_t. Contoh Con toh kasus kasus lainny lainnya, a, pada pada   Botro   terpasa terpasang ng whe wheel el encoder encoder untuk untuk menghi menghitung tung putar putaran an roda kiri dan kan kanan. an. Jumlah Jumlah tota totall putaran putaran roda ter tersim simpan pan dalam dalam va varia riabel bel   jarak_kiri_tot dan   jarak_kanan_tot. Jik Jikaa roda berputar berputar kedepan kedepan (sehingg (sehinggaa robot robot berg bergera erakk maju) maju) maka maka variabel var iabel akan ditambah ditambah sesuai dengan dengan jumla jumlah h puta putaran. ran. Sebalikny Sebaliknyaa jika roda berputar berputar kebelakan kebelakangg makaa va mak varia riabel bel akan akan dikura dikurangi ngi,, sehing sehingga ga ada kemun kemungki gkinan nan va varia riabel bel akan akan bernila bernilaii negati negatif, f, oleh oleh karen karenaa itu tipe yang yang coco cocokk adalah adalah signed  signed integer.Satu integer.Satu putaran roda akan menyebabkan menyebabkan variabel bertamb bert ambah ah atau atau berk berkura urang ng seb sebany anyak ak sekita sekitarr 90 – 120, 120, tergan tergantung tung encoder encoder ya yang ng diguna digunakan kan,, sehingga sehin gga menggunakan menggunakan integer integer 8-bit adalah ide yang yang buruk. Pa Pada da praktekn prakteknya ya integer 16-bit pun masih mengalami mengalami   overflow   overflow    karena karena tidak tidak muat, muat, akhirn akhirnya ya dengan dengan agak agak berat berat hati hati sa saya ya memili memilih h menggunakan   int32_t.

2. 2.1. 1.2 2

Kon onst stan anta ta

Ji Jika ka an anda da ingi ingin n meny menyim impa pan n ko kons nsta tanta nta —v —vaari riabe abell yan angg tid tidak ak ak akan an berub berubah ah se sela lama ma prog progra ram m berjalan— berjal an— maka jangan jangan lupa menggunaka menggunakan n keyword keyword  const   untuk variabel tersebut: 1   const uint8_t   nomor_rah nomor_rahasia asia = 123;

Keyword  const   akan mempermuda mempermudah h optimasi optimasi kode yang dilakukan oleh compiler compiler sehingga progr pr ogram am anda anda bis bisaa leb lebih ih efisien efisien.. Ca Cara ra lainnya lainnya adal adalah ah dengan dengan menggunaka menggunakan n   #define: 1   #define   NOMOR_RAHASIA NOMOR_RAHASIA 123 ...

3   ... if( tebaka tebakan n != NO NOMOR MOR_RA _RAHA HASIA SIA )

5   printf(" printf("Teba Tebakan kan anda salah, salah, coba lagi!\n lagi!\n"); "); else

7   printf("Selamat printf("Selamat, , jawaban anda anda benar!");

Setiap kali compiler Setiap compiler menju menjumpai mpai  NOMOR_RAHASIA   mak makaa akan akan digant digantii dengan dengan angka angka   123. Ja Janga ngan n menar menaruh uh ko konst nstant antaa yang yang dig diguna unakan kan berulan berulang g langsu langsung ng pada pada kode, kode, ca cara ra seperti seperti ini tidak tidak laz lazim im dig diguna unakan kan karen karenaa nantin nantinya ya progr program am aka akan n sul sulit it dibaca dibaca dan anda anda akan akan ke kesul sulita itan n jik jikaa suatu suatu saatt harus saa harus meruba merubah h ko konst nstant antaa terseb tersebut ut karen karenaa anda anda harus harus menca mencari ri dan mengub mengubahn ahnya ya sat satuupersatu.

2. 2.2 2

Mani Manipu pula lasi si port port I/O I/O

2.2.1 2.2 .1

Po Port rt I/O ATme Tmega3 ga32 2

Seperti yang telah dijelaskan dijelaskan pada bagian bagian   1.3   ATmega ATmega32 32 mempunya mempunyaii 4 buah port p ort I/O:   PORTA, PORTB, POR TB, POR PORTC TC   dan   PORTD.   Keempat Keempat por portt ini bis bisaa dia diakse kses/d s/dima imanip nipula ulasi si melalu melaluii regist register er dengan nama yang sama, jadi  PORTA   diaks diakses es dari regis register ter PORTA,  PORTB   diaks diakses es dari register register PORTB   dan set seteru erusny snya. a. Sel Selain ain regist register er   P PORT ORT (PORTA-PORTD (PORTA-PORTD), terd terdap apat at juga juga du duaa jeni jeniss reregister lain, yaitu DDR  –Data Direction Register --   (DDRA-DDRD)   dan PIN (PINA-PIND). (PINA-PIND). Ketiga Ket iga jen jenis is regist register er ini mem memili iliki ki fungsi fungsi yang yang berbe berbedada-beda beda:: ∗

  PORT

Register   PORT   dig diguna unakan kan untuk untuk mengub mengubah ah nil nilai ai port port I/O I/O..

23

 

Gambarr 2.1: Register Gamba Register PORT PORTA A[Atm09, [Atm09, h64] Pada Gambar Pada Gambar   2.1   ditunjukka ditunjukkan n susuna susunan n dar darii register register  PORTA. ’Read/Write  Read/Write ’’ menunjukkan menunjukkan status status baca/t baca/tulis ulis setiap setiap bit regist register. er. Pada Pada regist register er   PORTA, se seti tiap ap bi bitt bi bisa sa di diba baca ca dan dan ditulis ditu lisi. i. ’Initial Value ’ menya menyatak takan an nil nilai ai awal awal ya yang ng dibe diberik rikan an pada pada  PORTA   setelah setelah terjadi terjadi res reset. et. Dari Dari gamba gambarr kit kitaa bis bisaa meliha melihatt bahwa bahwa ke keada adaan an defaul defaultt   PORTA   adalah adalah logika logika nol (0 Volt). Pada penulisan program penulisan bit bisa disingkat, misalnya PORTA7 ditulis PA7,  PORTB0 menjadi   PB0, dst. Untu Untukk meng mengub ubah ah outp output ut ti tiap ap pin pin ki kita ta ha haru russ me meng ngub ubah ah bi bitt ya yang ng me mew wak akil ilii pi pin n ters terseb ebut ut tanpa tan pa mengga menggangg nggu u bitbit-bit bit lain, lain, misaln misalnya ya unt untuk uk mengub mengubah ah   PA7   da dari ri 0 me menj njad adii 1, ki kita ta harus harus mengub mengubah ah bit 7 dari dari regist register er   PORTA, ds dst. t. Da Dala lam m Baha Bahasa sa C ha hall in inii bi bisa sa di dila laku kuka kan n dengan denga n operasi operasi bitwise bitwise (dibahas (dibahas pada bagian bagian   2.2.2). 2.2.2). ∗

  DDR

Register   DDR   dig diguna unakan kan untuk mengub mengubah ah fungsi fungsi pin I/O dari port ya yang ng dit ditent entuka ukan. n. Sebuah bua h pin bis bisaa dif difung ungsik sikan an sebaga sebagaii input input ata atau u output output dengan dengan ca cara ra mengat mengatur ur set setiap iap bit dari dari register   DDR   yan yang g berkaitan. berkaitan.

Gamba Gam barr 2.2 2.2:: Regist Register er DDRA DDRA   [Atm09, [Atm09, h64] Darii Gambar Dar Gambar   2.2   bisa bisa dil diliha ihatt bahwa bahwa setelah setelah res reset et semua semua bit pada pada   DDRA   diset diset 0, sehing sehingga ga PORTA   be berfu rfungs ngsii seb sebaga agaii input. input. Ini tidak tidak hanya hanya berlaku berlaku untuk untuk   PORTA   tapi tapi juga juga un untu tukk semua   PORT. Fu Fungs ngsii tiap tiap pin bis bisaa diubah diubah ind indepen ependen den terhad terhadap ap pin-pi pin-pin n lai lain, n, misaln misalnya ya untuk untuk mengub mengubah ah PA5   menja menjadi di outpu output, t, maka maka ki kita ta perlu perlu meng mengub ubah ah bi bitt   DDA5   menj menjad adii 1. Ji Jika ka kem emud udia ian n DDA5   dirubah dirubah lagi lagi menjad menjadii nol, nol, maka maka   PA5   akan akan berubah kembali menjadi input. ∗

  PIN

Register   PIN   dig diguna unakan kan untuk untuk membac membacaa nil nilai ai port port I/O I/O..

Ga Gamba mbarr 2.3: 2.3: Registe Registerr PINA PINA[Atm09, [Atm09, h64]

2. 2.2. 2.2 2

Ope Opera rasi si bi bittwi wise se

2.2.2. 2.2 .2.1 1

Operasi Operasi bitwis bitwise e



  AND: AND: &



  OR OR: |



  XOR: XOR: ^

24

 



  NOT/ NOT/bi bit t flip flip: :

~

Jik Jikaa digolo digolongk ngkan an berdasa berdasarka rkan n jumlah jumlah argum argumen/ en/oper operand and maka maka operato operatorr AND, AND, OR, dan XOR XOR tergolong tergo long kedalam kedalam operator operator  binary , artinya artinya operato operatorr tersebut tersebut membutuhkan membutuhkan dua buah argumen. argumen. Sedangkan operator  NO  NOT T   digolongkan kedalam operator unary  operator  unary    karena hanya membutuhkan membutuhkan satu argumen. Berikut Beri kut ini adalah adalah tabel-tabel tabel-tabel kebenara kebenaran n dari dari tiap operasi bitwise: bitwise: Bit 1 0 0 1 1

Bit 2 0 1 0 1

Hasil 0 0 0 1

Tabel 2.3: Tabel keben kebenara aran n operasi operasi bitwise bitwise   AND

Bit 1 0 0 1 1

Bit 2 0 1 0 1

Hasil 0 1 1 1

Tabel 2.4: Tabel keben kebenara aran n operasi bitwise  OR Bit 1 0 0 1 1

Bit 2 0 1 0 1

Hasil 0 1 1 0

Tabel 2.5: Tabel keben kebenara aran n operasi operasi bitwise bitwise   XOR

Bit 1 0 1

Hasil 1 0

Tabel 2.6: Tabel keben kebenara aran n operasi operasi bitwise bitwise   NOT

Perbedaan operasi logika biasa dengan operasi logika boolean Operasi bitwise berbeda dengan operasi logika boolean karena digunakan untuk mengubah bit-bit darii var dar variabel/ iabel/regis register ter seca secara ra langsung. langsung. Untuk lebih jelasnya jelasnya perhatikan program program dibawa dibawah h ini: 1   #include   3   int   main() {

5   char   a = 4 5 ; char   b = 6 8 ;

   

// 001 0010 0 1101 1101 // 010 0100 0 0100 0100

7 prin printf tf(" ("a a && b = %i %i\n \n", ", a && b) b); ;   // AN AND D

9   prin printf tf(" ("a a & b = %i %i\n \n\n \n", ", a & b) b); ;   // Bit Bitwi wise se AND 11   prin printf tf(" ("a a || b = %i %i\n \n", ", a || b); b);   // OR prin printf tf(" ("a a | b = %i %i\n \n", ", a | b) b); ;   // B Bit itwi wise se O OR R

13

25

 

getchar();

15   return   0; }

Jika program program dijalankan dijalankan maka outputnya outputnya adalah: a && && b = 1

2 a & b = 4   a || || b = 1

4 a | b = 109

Seperti yang Seperti yang kita lihat, output output dari dari oper operasi asi logika logika boolean boolean berbeda berbeda dengan dengan operasi operasi logika logika bitwise. ∗



  Pada operasi operasi logika logika AND dan OR yang yang die dieval valuas uasii adalah adalah nilai dari dari a dan b secar secaraa ke kesel seluuruhan, jika lebih besar dari 0 maka dianggap TRUE dan jika kurang dari atau sama dengan nol maka dianggap dianggap FALSE, sehingga: ◦

  a > 0, maka   a = TRUE



  b > 0, maka   b = TRUE



  a && & & b   hasilnya  TRUE, demiki demikian an juga juga   a || b, hasilnya hasilnya  TRUE

  Pa Pada da operasi operasi bit bitwis wisee AND, AND, operasi operasi logika logika dil dilaku akukan kan pada pada set setiap iap bit dari dari ke kedua dua angka, angka, bit pertama pert ama dari dari varia variabel bel a dio diopera perasik sikan an dengan dengan bit pertama pertama dari dari va varia riabel bel b dan set seteru erusny snyaa untukk semua untu semua bit yang yang terdap terdapat at pada pada kedua kedua va varia riabel: bel:

Gamba Gam barr 2.4 2.4:: Operasi Operasi bit bitwis wisee AND ∗

  Demiki Demikian an juga juga dengan dengan bit bitwis wisee OR:

Gamba Gam barr 2.5 2.5:: Operasi Operasi bit bitwis wisee OR

2.2. 2.2.2. 2.2 2

Opera Operasi si bit-shift   bit-shift 

Operasi bit Operasi bit-sh -shift ift diguna digunakan kan unt untuk uk mengge menggeser ser seluru seluruh h bit dari dari va varia riabel bel atau atau regist register er ke kear arah ah kir kirii atau ata u kanan kanan sesuai sesuai dengan dengan keing keingina inan n kita. kita. Operasi Operasi ini diperlu diperlukan kan agar agar kit kitaa bis bisaa memani memanipul pulasi asi bit sat satu u persatu persatu,, tanpa tanpa mengga menggangg nggu u bit-bit bit-bit lainny lainnya, a, sehing sehingga ga kit kitaa bis bisaa mengub mengubah ah sal salah ah sat satu u portt I/O ATmega3 por Tmega32 2 tanpa tanpa mengub mengubah ah port port I/O lainny lainnya, a, contoh contohny nyaa kit kitaa bis bisaa menges mengeset et pin PA0 menjad men jadii 0 tanpa tanpa mengub mengubah ah nil nilai ai pin lain lain yang yang tergab tergabung ung dalam dalam PORT PORTA. ∗

  Left bit shi shift ft Dalam Bahasa C, operasi ini dilambangkan dengan tanda “
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF