Bot Manual
September 9, 2022 | Author: Anonymous | Category: N/A
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)
d
CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST
43
2 1 0
a
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
a
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
a
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