diff --git a/build/macosx/Arduino.xcodeproj/project.pbxproj b/build/macosx/Arduino.xcodeproj/project.pbxproj index 1df5bb2c8..1e5d537bc 100644 --- a/build/macosx/Arduino.xcodeproj/project.pbxproj +++ b/build/macosx/Arduino.xcodeproj/project.pbxproj @@ -56,7 +56,7 @@ productName = App; productReference = 33DD8FB6096AC8DA0013AF8F /* Arduino.app */; productSettingsXML = " - + CFBundleDevelopmentRegion @@ -687,7 +687,6 @@ 33FFFD3F0965B1E40016AC38 /* Project object */ = { isa = PBXProject; buildConfigurationList = 33FFFD400965B1E40016AC38 /* Build configuration list for PBXProject "Arduino" */; - compatibilityVersion = "Xcode 2.4"; hasScannedForEncodings = 0; mainGroup = 33FFFD3D0965B1E40016AC38; productRefGroup = 33FFFD3D0965B1E40016AC38; diff --git a/hardware/boards.txt b/hardware/boards.txt index 8fcf066c6..25b0ae531 100644 --- a/hardware/boards.txt +++ b/hardware/boards.txt @@ -100,6 +100,26 @@ diecimila.build.core=arduino ############################################################## +nano.name=Arduino Nano + +nano.upload.protocol=stk500 +nano.upload.maximum_size=14336 +nano.upload.speed=19200 + +nano.bootloader.low_fuses=0xff +nano.bootloader.high_fuses=0xdd +nano.bootloader.extended_fuses=0x00 +nano.bootloader.path=atmega168 +nano.bootloader.file=ATmegaBOOT_168_diecimila.hex +nano.bootloader.unlock_bits=0x3F +nano.bootloader.lock_bits=0x0F + +nano.build.mcu=atmega168 +nano.build.f_cpu=16000000L +nano.build.core=arduino + +############################################################## + lilypad.name=LilyPad Arduino lilypad.upload.protocol=stk500 @@ -116,4 +136,24 @@ lilypad.bootloader.lock_bits=0x0F lilypad.build.mcu=atmega168 lilypad.build.f_cpu=8000000L -lilypad.build.core=arduino \ No newline at end of file +lilypad.build.core=arduino + +############################################################## + +pro.name=Arduino Pro (8 MHz) + +pro.upload.protocol=stk500 +pro.upload.maximum_size=14336 +pro.upload.speed=19200 + +pro.bootloader.low_fuses=0xc6 +pro.bootloader.high_fuses=0xdd +pro.bootloader.extended_fuses=0x00 +pro.bootloader.path=atmega168 +pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex +pro.bootloader.unlock_bits=0x3F +pro.bootloader.lock_bits=0x0F + +pro.build.mcu=atmega168 +pro.build.f_cpu=8000000L +pro.build.core=arduino diff --git a/hardware/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex b/hardware/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex new file mode 100644 index 000000000..f1d4fb0ec --- /dev/null +++ b/hardware/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex @@ -0,0 +1,117 @@ +:103800000C94341C0C944F1C0C944F1C0C944F1CA7 +:103810000C944F1C0C944F1C0C944F1C0C944F1C7C +:103820000C944F1C0C944F1C0C944F1C0C944F1C6C +:103830000C944F1C0C944F1C0C944F1C0C944F1C5C +:103840000C944F1C0C944F1C0C944F1C0C944F1C4C +:103850000C944F1C0C944F1C0C944F1C0C944F1C3C +:103860000C944F1C0C944F1C11241FBECFEFD4E0BE +:10387000DEBFCDBF11E0A0E0B1E0E8E1FFE302C0B0 +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70C94311D0C94BD +:1038A000001CCF93DF93CDB7DEB724970FB6F89403 +:1038B000DEBF0FBECDBF382F882309F433E010924E +:1038C0000A02332309F44BC020E02D9A19821A8290 +:1038D0001B821C8289819A81AB81BC8180549F416B +:1038E000A040B040A0F489819A81AB81BC8101964F +:1038F000A11DB11D89839A83AB83BC8389819A8181 +:10390000AB81BC8180549F41A040B04060F32D98B2 +:1039100019821A821B821C8289819A81AB81BC81A7 +:1039200080549F41A040B040A0F489819A81AB812E +:10393000BC810196A11DB11D89839A83AB83BC8391 +:1039400089819A81AB81BC8180549F41A040B04065 +:1039500060F32F5F231708F4B8CF20930A02249650 +:103960000FB6F894DEBF0FBECDBFDF91CF910895A3 +:10397000EF92FF920F931F93EE24FF248701809113 +:10398000C00087FD17C00894E11CF11C011D111D2A +:1039900081E2E81681EAF80687E0080780E0180768 +:1039A00070F3E0910201F091030109958091C0004C +:1039B00087FFE9CF8091C600992787FD90951F91D9 +:1039C0000F91FF90EF900895982F8091C00085FF90 +:1039D000FCCF9093C60008950E94B81C803271F00D +:1039E000809104018F5F80930401853009F0089570 +:1039F000E0910201F09103010995089584E10E948C +:103A0000E41C80E10E94E41C08951F93182F0E947B +:103A1000B81C803269F0809104018F5F80930401AB +:103A2000853079F4E0910201F0910301099509C014 +:103A300084E10E94E41C812F0E94E41C80E10E942A +:103A4000E41C1F910895282F882351F090E0809165 +:103A5000C00087FFFCCF8091C6009F5F2917B9F790 +:103A60000895CFEFD4E0DEBFCDBF000089E18093A1 +:103A7000C4001092C50088E18093C10086E0809365 +:103A8000C2005098589A259A81E00E94511C0E94C9 +:103A9000B81C8033B1F18133B9F1803409F454C0DA +:103AA000813409F45AC0823409F469C0853409F4B8 +:103AB0006CC0803531F1813521F1823511F18535C8 +:103AC00009F4B2C0863509F4BAC0843609F463C07B +:103AD000843709F4BBC0853709F40EC1863709F471 +:103AE0004AC0809104018F5F80930401853079F68C +:103AF000E0910201F091030109950E94B81C803306 +:103B000051F60E94EC1CC3CF0E94B81C803249F7CA +:103B100084E10E94E41C81E40E94E41C86E50E948A +:103B2000E41C82E50E94E41C80E20E94E41C89E41B +:103B30000E94E41C83E50E94E41C80E50E94E41CD2 +:103B400080E10E94E41CA3CF0E94B81C8638C8F212 +:103B50000E94B81C0E94EC1C9ACF0E94B81C8038AE +:103B600009F4F7C0813809F4F8C0823809F4F9C0C3 +:103B7000883909F4BDC080E00E94051D88CF84E12A +:103B80000E94231D0E94EC1C82CF85E00E94231D11 +:103B90000E94EC1C7CCF0E94B81C809309020E94FA +:103BA000B81C8093080280910C028E7F80930C02D7 +:103BB0000E94B81C853409F4C6C080910802909117 +:103BC0000902892B09F0ADC00E94B81C803209F0AF +:103BD00088CF80910C0280FFC8C08091080290912C +:103BE00009020097D1F02091060130910701E8E029 +:103BF000F1E0AC014E0F5F1FF999FECF32BD21BD40 +:103C0000819180BDFA9AF99A2F5F3F4F4E175F0757 +:103C100099F7309307012093060184E10E94E41C88 +:103C200080E10E94E41C33CF0E94B81C80930601FF +:103C30000E94B81C809307010E94EC1C28CF84E0EE +:103C40000E94231D80E00E94051D21CF0E94B81C08 +:103C5000809309020E94B81C809308020E94B81C3D +:103C6000853409F4F4C080910C028E7F80930C029D +:103C70008091060190910701880F991F9093070189 +:103C8000809306010E94B81C803209F000CF84E1C5 +:103C90000E94E41C2091080230910902211531058F +:103CA00019F1C0E0D0E0E0910601F09107018091A8 +:103CB0000C0280FFC4C0F999FECFF2BDE1BDF89AB5 +:103CC00080B50E94E41CE0910601F0910701319655 +:103CD000F0930701E0930601209108023091090258 +:103CE0002196C217D30718F380E10E94E41CCFCEBF +:103CF00083E00E94051DCBCE0E94B81C803209F0E3 +:103D0000F0CE84E10E94E41C8EE10E94E41C84E970 +:103D10000E94E41C86E00E94E41C80E10E94E41CF6 +:103D2000B6CEC0E0D0E008E011E00E94B81CF80177 +:103D300081938F0121968091080290910902C81702 +:103D4000D90798F341CF80910C02816080930C02D7 +:103D500034CF82E00E94051D9ACE81E00E94051DAD +:103D600096CE80E10E94051D92CE8091070187FDCD +:103D700080C010920B028091060190910701880F7C +:103D8000991F90930701809306018091080280FF9C +:103D900009C080910802909109020196909309024E +:103DA00080930802F894F999FECF1127E09106015B +:103DB000F0910701C8E0D1E08091080290910902DA +:103DC000103091F40091570001700130D9F303E0F5 +:103DD00000935700E8950091570001700130D9F326 +:103DE00001E100935700E895099019900091570060 +:103DF00001700130D9F301E000935700E895139565 +:103E0000103498F011270091570001700130D9F358 +:103E100005E000935700E8950091570001700130CC +:103E2000D9F301E100935700E8953296029709F023 +:103E3000C7CF103011F00296E5CF1124EECE81FFEE +:103E40000CC03196F0930701E093060149CF8091B1 +:103E50000C02816080930C0215CF84910E94E41CB7 +:103E60002091080230910902E0910601F0910701CA +:103E7000E8CF81E080930B027ECF0F931F930E94C7 +:103E8000B81C182F0E94E41C0E94B81C082F0E9426 +:103E9000E41C11362CF0175501363CF0075508C0CC +:103EA0001033D4F310530136CCF700330CF0005329 +:103EB0001295107F100F812F992787FD90951F91E4 +:103EC0000F9108951F93282F992787FD9095807F44 +:103ED00090709595879595958795959587959595E6 +:103EE00087958A304CF0982F995A822F8F708A309C +:103EF0004CF0182F195A08C0982F905D822F8F70A0 +:103F00008A30BCF7182F105D892F0E94E41C812F86 +:083F10000E94E41C1F910895BA +:023F1800800027 +:0400000300003800C1 +:00000001FF diff --git a/hardware/bootloaders/atmega168/Makefile b/hardware/bootloaders/atmega168/Makefile index 669879b7b..6be8dbed7 100755 --- a/hardware/bootloaders/atmega168/Makefile +++ b/hardware/bootloaders/atmega168/Makefile @@ -1,7 +1,7 @@ # Makefile for ATmegaBOOT # E.Lins, 18.7.2005 # $Id$ - +# # Instructions # # To build the bootloader for the Diecimila: @@ -10,16 +10,18 @@ # To build the bootloader for the NG/Mini: # make ng # +# To build the bootloader for the LilyPad: +# make lilypad +# # To burn the bootloader: # make TARGET=diecimila isp # make TARGET=ng isp +# make TARGET=lilypad isp +# make TARGET=pro8 isp # program name should not be changed... PROGRAM = ATmegaBOOT_168 -# enter the target CPU frequency -AVR_FREQ = 16000000L - # enter the parameters for the avrdude isp tool ISPTOOL = stk500v2 ISPPORT = usb @@ -37,9 +39,13 @@ LDSECTION = --section-start=.text=0x3800 # unlock the bootloader section) and 0xcf instead of 0x0f (to # lock it), but since the high two bits of the lock byte are # unused, avrdude would get confused. -ISPFUSES = avrdude -c $(ISPTOOL) -p m168 -P $(ISPPORT) $(ISPSPEED) -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xdd:m -U lfuse:w:0xff:m +ISPFUSES = avrdude -c $(ISPTOOL) -p m168 -P $(ISPPORT) $(ISPSPEED) -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m ISPFLASH = avrdude -c $(ISPTOOL) -p m168 -P $(ISPPORT) $(ISPSPEED) -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex -lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + OBJ = $(PROGRAM).o OPTIMIZE = -O2 @@ -49,7 +55,6 @@ LIBS = CC = avr-gcc - # Override is only needed by avr-lib build system. override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) @@ -61,18 +66,59 @@ OBJDUMP = avr-objdump all: +lilypad: TARGET = lilypad +lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +lilypad: $(PROGRAM)_lilypad.hex +lilypad: AVR_FREQ = 8000000L +lilypad: HFUSE = DD +lilypad: LFUSE = E2 + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: HFUSE = DD +lilypad_resonator: LFUSE = C6 + +pro8: TARGET = pro_8MHz +pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +pro8: $(PROGRAM)_pro_8MHz.hex +pro8: AVR_FREQ = 8000000L +pro8: HFUSE = DD +pro8: LFUSE = C6 + +pro16: TARGET = pro_16MHz +pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +pro16: $(PROGRAM)_pro_16MHz.hex +pro16: AVR_FREQ = 16000000L +pro16: HFUSE = DD +pro16: LFUSE = C6 + +pro20: TARGET = pro_20mhz +pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +pro20: $(PROGRAM)_pro_20mhz.hex +pro20: AVR_FREQ = 20000000L +pro20: HFUSE = DD +pro20: LFUSE = C6 + diecimila: TARGET = diecimila diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' diecimila: $(PROGRAM)_diecimila.hex +diecimila: AVR_FREQ = 16000000L ng: TARGET = ng ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' ng: $(PROGRAM)_ng.hex +ng: AVR_FREQ = 16000000L isp: $(PROGRAM)_$(TARGET).hex $(ISPFUSES) $(ISPFLASH) +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + %.elf: $(OBJ) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) @@ -90,3 +136,4 @@ clean: %.bin: %.elf $(OBJCOPY) -j .text -j .data -O binary $< $@ + diff --git a/readme.txt b/readme.txt index c857a8cd3..a0d9a10bc 100644 --- a/readme.txt +++ b/readme.txt @@ -31,7 +31,7 @@ FTDI chip on the board. These can be found in the drivers/ directory. * On Linux, drivers are included in kernel versions 2.4.20 or greater. CREDITS -Arduino is an open source project, owned by nobody and supported by many. +Arduino is an open source project, supported by many. The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, and David A. Mellis. @@ -48,9 +48,11 @@ UPDATES 0012 +* Added Arduino Nano and Arduino Pro (8 MHz) to the boards menu. * Added a LiquidCrystal library based on the work in the playground. * Improved millis(): it now overflows after 49 days instead of 9 hours. * Fixed reversing direction bug in Stepper library. (Thanks to Wayne Holder.) +* Moved insertion of #include so #include works. 0011 - 2008.03.28 diff --git a/todo.txt b/todo.txt index e5e8294a9..e7c489258 100644 --- a/todo.txt +++ b/todo.txt @@ -3,13 +3,14 @@ 0012 Update Windows avr-libc to 1.6 and avr-gcc to 4.3 (to match Mac). +Move Servo min/max parameters to attach() function from constructor. Improve shiftOut() performance: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1216659239/0 Add String library. -Add highByte(), lowByte(), and makeWord(high, low) functions. -Add bitRead() and bitWrite() functions (and bitSet() and bitClear()?) -Add Encoder library. Comment LiquidCrystal examples. Write LiquidCrystal documentation. +Add Arduino Nano to boards menu. +Add Arduino Pro to boards menu. +[done] Per-board upload.using preference. [done] Update version of avr-gcc, etc. to support ATmega644, ATmega328, etc. [done] Move #include after other #include's? (prevent it from interfering with standard libraries) [done] Add LiquidCrystal library. @@ -19,6 +20,9 @@ Write LiquidCrystal documentation. AVR +Add Encoder library. +Add highByte(), lowByte(), and makeWord(high, low) functions. +Add bitRead() and bitWrite() functions (and bitSet() and bitClear()?) Bootloader: - disable watch dog timer - fix eeprom writing: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202157667/15 @@ -41,6 +45,7 @@ Add SPI library. Add OneWire library. Add pulseOut(), etc. functions from Wiring. Add Ping example. +Add ContinuousServo library that inherits from Servo? Supporting EEMEM directive by changing compiler command line: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202157667 Include Arduino as AVR-ISP sketch in hardware/firmwares. Move type definitions into WConstants.h. @@ -55,7 +60,11 @@ Improve preprocessing of sketches: - Remember the original locations of function prototypes to highlight the correct line on error. Multiple sketch windows. Easier library discovery and installation. -Easier board installation. +Easier board installation ("Add board..." menu item) +Comprehensive board management: + - Enabled and disabled boards. + - Dialog for enabling, disabling, adding, and deleting boards. + - Board descriptions (e.g. explaining differences between boards). Clean up Library and LibraryManager. Detect dependencies between libraries. Byte-based serial monitor. @@ -64,12 +73,11 @@ Clear character should clear serial monitor. Incorporate serial-net proxy. Changing font size should change serial monitor font size. Deal with shorter screens (e.g. ASUS EEPC). -Investigate method for auto-detecting serial port on Windows. +Investigate method for auto-detecting serial port on Windows (javax.usb?) Guess serial port on the Mac and Linux. Automatic detection of baud rate for serial monitor (based on the call to Serial.begin() in the current sketch). Improve, generally, the upload experience (e.g. faster program start after upload, keep-alive messages to bootloader from IDE, shorter bootloader timeout if possible, progress bar) Allow uploading of .hex files. -Per-board upload.using preference. Allow for arbitrary compilation command line arguments. Find in reference should give same message for missing page as for missing page association. Test find in reference on libraries. @@ -132,6 +140,7 @@ Get good top-down, well-lit, plain-white-background photos of the Arduino boards DOCUMENTATION / GETTING STARTED +Main "getting started" link should automatically load page for the user's operating system. Consider deleting many of the pictures in the howto's as they just make it harder to see the instructions without adding much (e.g. the pictures of files in folders). Tell people not to put the board on a Powerbook. People don't know what a jumper is. @@ -144,4 +153,4 @@ Add explanation of how to work around auto-reset. DOCUMENTATION / HACKING -Burning bootloader without an AVRISP: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html \ No newline at end of file +Burning bootloader without an AVRISP: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html