Untuk kepentingan pembahasan dalam artikel ini anggap saja sistem Arduino terdiri dari dua sub sistem utama. Yang pertama adalah Arduino IDE, yaitu software yang beroperasi di komputer. Menurut situs http://www.arduino.cc perangkat lunak ini mereka sebut sebagai Arduino Software.
The open-source Arduino environment makes it easy to write code and upload it to the i/o board. It runs on Windows, Mac OS X, and Linux. The environment is written in Java and based on Processing, avr-gcc, and other open source software.
Tugas dari “Arduino Software” adalah menghasilkan sebuah file berformat hex yang akan di-download pada papan arduino atau papan sistem mikrokontroler lainnya. Ini mirip dengan Microsoft Visual Studio, Eclipse IDE, atau Netbeans. Lebih mirip lagi adalah IDE semacam Code::Blocks, CodeLite atau Anjuta yang mempermudah untuk menghasilkan file program. Bedanya kesemua IDE tersebut menghasilkan program dari kode bahasa C (dengan GNU GCC) sedangkan Arduino Software (Arduino IDE) menghasilkan file hex dari baris kode yang dinamakan sketch.
A sketch is the name that Arduino uses for a program. It’s the unit of code that is uploaded to and run on an Arduino board.
Sub sistem yang kedua adalah hardware (perangkat keras) yaitu papan Arduino (Arduino Boards). Sampai saat tulisan ini dibuat yang paling umum dijual adalah varian baru yaitu Arduino Uno dan Arduino Mega 2560. Kesemua papan arduino itu memiliki perangkat lunak yang dinamakanbootloader.
When you upload a sketch, you’re using the Arduino bootloader, a small program that has been loaded on to the microcontroller on your board. It allows you to upload code without using any additional hardware. The bootloader is active for a few seconds when the board resets; then it starts whichever sketch was most recently uploaded to the microcontroller. The bootloader will blink the on-board (pin 13) LED when it starts (i.e. when the board resets).
Pada umumnya sketch yang dibuat di Arduino Software di-compile dengan perintah verify / Compile (Ctrl+R) lalu hasilnya di-download ke papan Arduino seperti Arduino Uno atau Arduino Mega 2560. Program hasil kompilasi itu lalau dijalankan oleh bootloader.
Tetapi ternyata hasil kompilasi dari Arduino Software dapat dipergunakan dan dijalankan tidak hanya pada papan arduino (Arduino Boards) atau turunannya yang kompatibel. Program hasil kompilasi itu dapat dijalankan di sistem mikrokontroller Atmel AVR yang sesuai bahkan tanpa menggunakan bootloader. Selain memperluas pilihan varian IC microcontroller AVR yang bisa dipergunakan hal ini juga berarti semakin besar program yang bisa kita muat di flash memori IC itu.
If you want to use the full program space (flash) of the chip or avoid the bootloader delay, you can burn your sketches using an external programmer. [sumber]
If you have an external programmer (e.g. an AVR-ISP, STK500, or parallel programmer), you can burn sketches to the Arduino board without using the bootloader. This allows you to use the full program space (flash) of the chip on the Arduino board. So with anATmega168, you’ll get 16 KB instead of 14 (on an ATmega8 you’ll get 8 KB instead of 7). It also avoids the bootloader delay when you power or reset your board. [sumber]
Kemudahan untuk mempergunakan berbagai macam varian microcontroller dalam tulisan ini mengikuti karya dari Mark Sproul. Beliau telah berbuat amal [ ] dengan melakukan pengujian dan kemudian mempublikasikan secara luas uji cobanya untuk mempergunakan Arduino IDE untuk memprogram berbagai uC IC AVR. Daftar hasil uji cobanya dapat dilihat di http://www.avr-developers.com/cputable.html. Untuk dapat memprogram berbagai IC AVR tanpa papan arduino kita perlu melakukan download file-file konfigurasi yang telah dimodifikasi oleh Mark Sproul.
Sep 29, 2010 Updated to version 0020 core
Based on Version 0020 core filesDownload this file (arduino-extras.zip) uncompress it and add it in the hardware folder.
On the Mac, this is /Applications/Arduino.app/Contents/Resources/Java/hardware
This file contains ALL of the defintions that are included in the “arduino” folder as well. So your BOARDS menu will have duplicates.This will give you access to just about EVERY ATmega that I can find that has been made into a comerically avaialable board.NOTE: Not all cpus support bootloaders.
File arduino-extras.zip berisi tiga direktori: bootloaders, cores dan firmwares dan dua file:boards.txt dan programmers.txt. Kesemuanya di-copy-kan ke direktori hardware arduino, misalnya:/home/sunu/arduino-0022/hardware/arduino/ atau misalnya direktori arduino utak-atik saya/home/sunu/arduino-0022hknix/hardware/arduino/. Kesemua direktori dan file yang baru itu akan menimpa yang lama, aman, kecuali anda telah melakukan modifikasi pada fileyang lama yang sayang kalau hilang .
Ada dua cara konfigurasi untuk melakukan pemrograman tanpa papan arduino. Yang pertama melakukan konfigurasi pada file preferences.txt untuk mengubah secara otomatis setting pada semua pengaturan papan. Cara yang kedua adalah dengan melakukan konfigurasi pada fileboards.txt, ini jika kita hendak melakukan setting yang berbeda untuk tiap papan.
Untuk file preferences dapat ditemukan di sistem sebagai berikut:
* /Users/<USERNAME>/Library/Arduino/preferences.txt (Mac)
* c:\Documents and Settings\<USERNAME>\Application Data\Arduino\preferences.txt (Windows)
* ~/.arduino/preferences.txt (Linux)
Perlu diperhatikan bahwa direktori ~/.arduino/ adalah direktori tersembunyi pada sistem GNU/Linux anda. Jika menggunakan file explorer Nautilus untuk menampilkan semua direktori tersembunyi dapat menggunakan Ctrl+h.
Modifikasi pada file preferences.txt dilakukan dengan melakukan pengubahan pada baris konfigurasi yang tercantum
upload.using=bootloader
menjadi salah satu nama programmer yang telah dicantumkan dalam fileprogrammer.txt.
Change: upload.using from bootloader to the identifier of one of the programmers in hardware/programmers.txt (e.g. avrispmkii).
Misalnya saya menggunakan dua programmer, yaitu USBasp dan USBtinyISP yang saya cantumkan di dalam file programmer.txt.
usbasp.name=USBaspusbasp.protocol=USBaspusbtinyisp.name=USBtinyISP
usbtinyisp.protocol=usbtiny
Maka saya bisa mengubah baris yang tertulis sebagai upload.using=bootloader dalampreferences.txt menjadi upload.using=USBasp atau upload.using=USBtinyISP.
Saya sendiri lebih menyenangi cara yang kedua yaitu melakukan konfigurasi pada file boards.txt. Menurut saya cara ini lebih fleksibel, bahkan saya menjadi bisa untuk memiliki lebih dari satu konfigurasi untuk satu papan / boards / sistem. Misalnya saya memiliki dua konfigurasi untuk sistem/papan ATmega8, satu untuk internal clock 1 MHz dan satu lagi untuk internal clock 8 Mhz.
File boards.txt pada sistem OS MS Windows dapat ditemukan di sub folder instalasinya misalnyaD:\arduino-0022\hardware\arduino\boards.txt. Pada sistem GNU/Linux dapat ditemukan di tempat instalasinya misalnya di /home/sunu/arduino-0022hknix/hardware/arduino/boards.txt.
Baris konfigurasi yang perlu diubah atau ditambahkan (jika belum ada) adalah baris yang tertulis sebagai:
xxx.upload.using=nama_programmerxxx.upload.protocol=nama_programmer
Misalnya:
USBtinyISP-ATtiny2313.upload.using=usbtiny
USBtinyISP-ATtiny2313.upload.protocol=usbtiny
USBtinyISP-ATtiny2313.upload.protocol=usbtiny
atau
arduino_attiny2313.upload.using=usbasp
arduino_attiny2313.upload.protocol=usbasp
arduino_attiny2313.upload.protocol=usbasp
Berikut ini adalah konfigurasi yang saya buat untuk keperluan sistem saya, dapat dimodifikasi sesuai keperluan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | ############################################################## USBtinyISP-ATtiny2313.name=USBtinyISP ATtiny2313 8 MHZ internal USBtinyISP-ATtiny2313.upload.using=usbtiny USBtinyISP-ATtiny2313.upload.protocol=usbtiny USBtinyISP-ATtiny2313.upload.maximum_size=2048 USBtinyISP-ATtiny2313.upload.speed=19200 USBtinyISP-ATtiny2313.bootloader.low_fuses=0x64 USBtinyISP-ATtiny2313.bootloader.high_fuses=0xdf USBtinyISP-ATtiny2313.bootloader.path=attiny45 USBtinyISP-ATtiny2313.bootloader.file=ATmegaBOOT.hex USBtinyISP-ATtiny2313.bootloader.unlock_bits=0x3F USBtinyISP-ATtiny2313.bootloader.lock_bits=0x0F USBtinyISP-ATtiny2313.build.mcu=attiny2313 USBtinyISP-ATtiny2313.build.f_cpu=8000000L USBtinyISP-ATtiny2313.build.core=arduino ############################################################## arduino_attiny2313.name=USBasp ATtiny2313 8 MHZ internal arduino_attiny2313.upload.using=usbasp arduino_attiny2313.upload.protocol=usbasp arduino_attiny2313.upload.maximum_size=2048 arduino_attiny2313.upload.speed=19200 arduino_attiny2313.bootloader.low_fuses=0x64 arduino_attiny2313.bootloader.high_fuses=0xdf arduino_attiny2313.bootloader.path=attiny45 arduino_attiny2313.bootloader.file=ATmegaBOOT.hex arduino_attiny2313.bootloader.unlock_bits=0x3F arduino_attiny2313.bootloader.lock_bits=0x0F arduino_attiny2313.build.mcu=attiny2313 arduino_attiny2313.build.f_cpu=8000000L arduino_attiny2313.build.core=arduino ############################################################## atmega8usbasp1mhz.name=ATmega8 tanpa bootloader 1 MHz (USBasp) atmega8usbasp1mhz.upload.using=usbasp atmega8usbasp1mhz.upload.protocol=usbasp atmega8usbasp1mhz.upload.maximum_size=8192 atmega8usbasp1mhz.upload.speed=19200 atmega8usbasp1mhz.build.mcu=atmega8 atmega8usbasp1mhz.build.f_cpu=1000000L atmega8usbasp1mhz.build.core=arduino ############################################################## atmega8usbasp8mhz.name=ATmega8 tanpa bootloader 8 MHz (USBasp) atmega8usbasp8mhz.upload.using=usbasp atmega8usbasp8mhz.upload.protocol=usbasp atmega8usbasp8mhz.upload.maximum_size=8192 atmega8usbasp8mhz.upload.speed=19200 #catatan -U lfuse:w:0xE4 #catatan -U hfuse:w:0xD9 atmega8usbasp8mhz.build.mcu=atmega8 atmega8usbasp8mhz.build.f_cpu=8000000L atmega8usbasp8mhz.build.core=arduino ############################################################## atmega8.name=Arduino NG or older w/ ATmega8 atmega8.upload.protocol=stk500 atmega8.upload.maximum_size=7168 atmega8.upload.speed=19200 atmega8.bootloader.low_fuses=0xdf atmega8.bootloader.high_fuses=0xca atmega8.bootloader.path=atmega8 atmega8.bootloader.file=ATmegaBOOT.hex atmega8.bootloader.unlock_bits=0x3F atmega8.bootloader.lock_bits=0x0F atmega8.build.mcu=atmega8 atmega8.build.f_cpu=16000000L atmega8.build.core=arduino ############################################################## atmega16_1Mhz_dalam.name=Atmega16 1 MHz internal atmega16_1Mhz_dalam.upload.using=usbasp atmega16_1Mhz_dalam.upload.protocol=usbasp atmega16_1Mhz_dalam.upload.maximum_size=16384 atmega16_1Mhz_dalam.upload.speed=57600 #catatan -U lfuse:w:0xE1 #catatan -U hfuse:w:0x99 atmega16_1Mhz_dalam.build.mcu=atmega16 atmega16_1Mhz_dalam.build.f_cpu=1000000L atmega16_1Mhz_dalam.build.core=arduino ############################################################## arduino_atmega16.name=Arduino-Atmega16 arduino_atmega16.upload.protocol=stk500v2 arduino_atmega16.upload.maximum_size=14336 arduino_atmega16.upload.speed=57600 arduino_atmega16.bootloader.low_fuses=0xE4 arduino_atmega16.bootloader.high_fuses=0x98 arduino_atmega16.bootloader.extended_fuses=0xFF arduino_atmega16.bootloader.path=atmega arduino_atmega16.bootloader.file=ATmegaBOOT_168_atmega16.hex arduino_atmega16.bootloader.unlock_bits=0x3F arduino_atmega16.bootloader.lock_bits=0x0F arduino_atmega16.build.mcu=atmega16 arduino_atmega16.build.f_cpu=8000000L arduino_atmega16.build.core=arduino ############################################################## atmega32_no_boot_1MHz.name=ATmega32 1 MHz internal atmega32_no_boot_1MHz.upload.using=usbasp atmega32_no_boot_1MHz.upload.protocol=usbasp atmega32_no_boot_1MHz.upload.maximum_size=32768 atmega32_no_boot_1MHz.upload.speed=57600 #catatan -U lfuse:w:0xE1 #catatan -U hfuse:w:0x99 atmega32_no_boot_1MHz.build.mcu=atmega32 atmega32_no_boot_1MHz.build.f_cpu=1000000L atmega32_no_boot_1MHz.build.core=arduino ############################################################## atmega32_no_boot_8MHz.name=ATmega32 8 MHz internal atmega32_no_boot_8MHz.upload.using=usbasp atmega32_no_boot_8MHz.upload.protocol=usbasp atmega32_no_boot_8MHz.upload.maximum_size=28672 atmega32_no_boot_8MHz.upload.speed=57600 #catatan -U lfuse:w:0xE4 #catatan -U hfuse:w:0x99 atmega32_no_boot_8MHz.build.mcu=atmega32 atmega32_no_boot_8MHz.build.f_cpu=8000000L atmega32_no_boot_8MHz.build.core=arduino ############################################################## arduino_penguino_avr.name=Arduino-Penguino AVR arduino_penguino_avr.upload.protocol=stk500v2 arduino_penguino_avr.upload.maximum_size=28672 arduino_penguino_avr.upload.speed=57600 arduino_penguino_avr.bootloader.low_fuses=0xFF arduino_penguino_avr.bootloader.high_fuses=0xDA arduino_penguino_avr.bootloader.extended_fuses=0x05 arduino_penguino_avr.bootloader.path=atmega arduino_penguino_avr.bootloader.file=stk500boot_v2_penguino.hex arduino_penguino_avr.bootloader.unlock_bits=0x3F arduino_penguino_avr.bootloader.lock_bits=0x0F arduino_penguino_avr.build.mcu=atmega32 arduino_penguino_avr.build.f_cpu=16000000L arduino_penguino_avr.build.core=arduino ############################################################## uno.name=Arduino Uno uno.upload.protocol=stk500 uno.upload.maximum_size=32256 uno.upload.speed=115200 uno.bootloader.low_fuses=0xff uno.bootloader.high_fuses=0xde uno.bootloader.extended_fuses=0x05 uno.bootloader.path=optiboot uno.bootloader.file=optiboot_atmega328.hex uno.bootloader.unlock_bits=0x3F uno.bootloader.lock_bits=0x0F uno.build.mcu=atmega328p uno.build.f_cpu=16000000L uno.build.core=arduino ############################################################## mega2560.name=Arduino Mega 2560 mega2560.upload.protocol=stk500v2 mega2560.upload.maximum_size=258048 mega2560.upload.speed=115200 mega2560.bootloader.low_fuses=0xFF mega2560.bootloader.high_fuses=0xD8 mega2560.bootloader.extended_fuses=0xFD mega2560.bootloader.path=stk500v2 mega2560.bootloader.file=stk500boot_v2_mega2560.hex mega2560.bootloader.unlock_bits=0x3F mega2560.bootloader.lock_bits=0x0F mega2560.build.mcu=atmega2560 mega2560.build.f_cpu=16000000L mega2560.build.core=arduino ############################################################## arduino_atmega8515.name=Arduino-ATmega8515 arduino_atmega8515.upload.using=usbtinyisp arduino_atmega8515.upload.protocol=stk500 arduino_atmega8515.upload.maximum_size=8192 arduino_atmega8515.upload.speed=19200 arduino_atmega8515.bootloader.low_fuses=0xdf arduino_atmega8515.bootloader.high_fuses=0xca arduino_atmega8515.bootloader.path=atmega arduino_atmega8515.bootloader.file=ATmegaBOOT.hex arduino_atmega8515.bootloader.unlock_bits=0x3F arduino_atmega8515.bootloader.lock_bits=0x0F arduino_atmega8515.build.mcu=atmega8515 arduino_atmega8515.build.f_cpu=16000000L arduino_atmega8515.build.core=arduino ############################################################## arduino_atmega8535.name=Arduino-Test-Atmega8535 arduino_atmega8535.upload.protocol=stk500v2 arduino_atmega8535.upload.maximum_size=7168 arduino_atmega8535.upload.speed=38400 arduino_atmega8535.bootloader.low_fuses=0xEC arduino_atmega8535.bootloader.high_fuses=0x18 arduino_atmega8535.bootloader.extended_fuses=0xFD arduino_atmega8535.bootloader.path=atmega arduino_atmega8535.bootloader.file=stk500boot_v2_notdefined.hex arduino_atmega8535.bootloader.unlock_bits=0x3F arduino_atmega8535.bootloader.lock_bits=0x0F arduino_atmega8535.build.mcu=atmega8535 arduino_atmega8535.build.f_cpu=16000000L arduino_atmega8535.build.core=arduino ############################################################## atmega328.name=Arduino Duemilanove or Nano w/ ATmega328 atmega328.upload.protocol=stk500 atmega328.upload.maximum_size=30720 atmega328.upload.speed=57600 atmega328.bootloader.low_fuses=0xFF atmega328.bootloader.high_fuses=0xDA atmega328.bootloader.extended_fuses=0x05 atmega328.bootloader.path=atmega atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex atmega328.bootloader.unlock_bits=0x3F atmega328.bootloader.lock_bits=0x0F atmega328.build.mcu=atmega328p atmega328.build.f_cpu=16000000L atmega328.build.core=arduino ############################################################## diecimila.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168 diecimila.upload.protocol=stk500 diecimila.upload.maximum_size=14336 diecimila.upload.speed=19200 diecimila.bootloader.low_fuses=0xff diecimila.bootloader.high_fuses=0xdd diecimila.bootloader.extended_fuses=0x00 diecimila.bootloader.path=atmega diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex diecimila.bootloader.unlock_bits=0x3F diecimila.bootloader.lock_bits=0x0F diecimila.build.mcu=atmega168 diecimila.build.f_cpu=16000000L diecimila.build.core=arduino ############################################################## |
Saya melakukan modifikasi pada file boards.txt agar tampilan daftar pilihannya tidak terlalu panjang dan berisi penuh konfigurasi yang hampir tidak pernah saya pergunakan. Jika suatu hari nanti perlu ditambah atau dimodifikasi ulang toh caranya sangat gampang.
File boards.txt maupun file programmers.txt yang berada di folder/direktori yang sama telah sayaupload di sini. File programmers.txt perlu dimodifikasi jika anda ingin membakar/download bootloader dengan papan selain turunan papan arduino. Misalnya jika ingin menggunakan programmer USBasp atau USBtinyISP.
Demikianlah, selamat mencoba. Silahkan melihat ke semua link (tautan) di tulisan di atas dan daftar referensi berikut:
Sumber: pikirsa.wordpress.com
No comments:
Post a Comment