| *** Changes in avr-libc-1.7.1: |
| |
| * Bugs fixed: |
| |
| [Atmel: #11793] XMEGA A devices: 4096-cycle DAC refresh interval setting has wrong name |
| [Atmel: #12314] Hi-Res(CTRLA) and AWex (FDEMASK) |
| [Atmel: #12536] Remove CALCTRL in xmega header files. |
| [no-id] Fix wrong vector table size for ATmega168A devices. |
| [#29235] power.h - warning: comma at end of enumerator list |
| [#30783] Missing prototype in power.h |
| [#31270] Stale link to Philips (now NXP) I2C specification/users manual |
| |
| * New devices supported: |
| |
| ATTiny84a |
| ATMega16HVB RevB |
| ATMega32HVB RevB |
| |
| * Contributed Patches: |
| |
| * Other changes: |
| |
| |
| *** Changes in avr-libc-1.7.0: |
| |
| * Bugs fixed: |
| [Atmel: #7159] the memory location of tccr0b is mixed with tccr0a for tiny48/88 |
| [no-id] Fix CLKPCE bit value to be 7. |
| [no-id] inlining failed in call to '_delay_ms': function body not available |
| [no-id] malloc() could allocate memory beyond the limits of heap |
| [no-id] xmega header file updates. |
| [no-id] Enable ATmega128RFA1 in <avr/power.h> |
| [no-id] longjmp() writes to EIND register, it is forbidden by AVR-GCC's API |
| [no-id] Define _VECTORS_SIZE in iom3000.h |
| [no-id] Redefine __tmp_reg__ and __zer_reg__ for AVR TINY. |
| [AVR Tools: #9724] Error in ATtiny13A include file, PRR register |
| [sourceforge.net: #1836849] Multiplication does not work for AT90USB162 |
| [sourceforge.net: #1883630] ATmegaXX4 - USART0 and USART1 additional bits aliases |
| [sourceforge.net: #1910885] Typo in io90pwm3b.h |
| [sourceforge.net: #1913681] Missing INT3 define in io90pwm3b.h |
| [sourceforge.net: #1957780] New 'FUSES-support' gives error in c++ files |
| [sourceforge.net: #1969436] Wrong flash size for ATmega32U4 |
| [sourceforge.net: #2010688] ATtiny48 SPSR register bits |
| [sourceforge.net: #2012448] ATmega6450 USART Interrupts |
| [sourceforge.net: #2016128] Incorrect ATMega32[c1|m1] Header Entries |
| [sourceforge.net: #2018957] Wrong SPM_PAGESIZE for mega1284P |
| [sourceforge.net: #2033993] User manual: data symbol spec incorrect |
| [sourceforge.net: #2305703] iom162.h ASSR bitdef, typo? |
| [sourceforge.net: #2411516] Error/Bug in the iotn88.h file |
| [sourceforge.net: #2420567] ATmega329P missing in sleep.h |
| [sourceforge.net: #2693898] ATmega32U6 missing in power.h |
| [sourceforge.net: #2738926] avr/eeprom.h EEGET and EEPUT |
| [sourceforge.net: #2812125] ATmega16U4 missing in power.h |
| [sourceforge.net: #2913419] Misspelled Structure Element - xmega |
| [#3485] Using float arithmetic without linking with -lm result in incorrect code |
| [#19079] sscanf %s eats 1 char too much |
| [#19494] sfr_defs.h documentation: Remove references to deprecated macros. |
| [#21410] Incorrect use of 16-bit eeprom addresses in devices with 8-Bit address registers |
| [#21621] Allow autoconf 2.61 |
| [#21622] Support building in a subdirectory |
| [#21623] boot.h: Use the "z" register constraint |
| [#21869] Multiple defines in iotn2313.h |
| [#21872] __floatunsisf/undisf incorrectly named |
| [#21905] scanf: float conversion ignores the suppression symbol |
| [#21906] scanf: float conversion, wrong width count in case of sign or exponent |
| [#21931] Wrong fuses defined for the ATMEGA88/168 |
| [#21935] Typo in avr-ar example avr-as should be avr-ar |
| [#21995] pgm_read_xxxx() does not use enhanced LPM instruction |
| [#21958] UBRR0/UBRR1 SFR is redefined for ATmegaXX8p and atmega1284p devices |
| [#21962] PSYNC1_0 a PSYNC1_1 bits not defined for AT90PWM3B and AT90PWM316 devices |
| [#21986] Typo in iotn13.h |
| [#22016] Typo in iotn2313.h: SIG_OUTPUT_COPMARE0A |
| [#22119] Misleading statement in FAQ |
| [#22153] setjmp.o is wrong in libc.a (1.6.1) for avr's with SPH |
| [#22240] Add EEPROM Page Size to header files |
| [#22276] wdt_reset fails with devices with large WDTCSR addresses |
| [#22377] Wrong XRAMEND for some recent ioXXX.h header files. |
| [#22387] Missing EIMSK and __EEPROM_REG_LOCATIONS__ in iom168p.h |
| [#22390] Unclear note about function pointers |
| [#22447] Summary of iom?8p.h header updates needed |
| [#22493] Typo in iom1284p.h. |
| [#22540] Adding signature bytes to header files |
| [#22548] Missing IVCE and IVSEL in iom328p.h |
| [#22568] Missing EEPROM_REG_LOCATIONS in iom328p.h |
| [#22572] Documentation FAQ example proposal |
| [#22642] AT90USB162 and AT90USB82 not supported in <avr/power.h> |
| [#22643] math.h c99 incompability |
| [#22666] io90pwm3b.h errors |
| [#22785] ATMega644P Support Missing from avr/include/avr/sleep.h |
| [#22828] eeprom_write_block(): incompatibility in args order |
| [#22834] ATmega164P/324P/644P/1284P lack BODS/BODSE bits in MCUCR |
| [#22870] Error in wdt.h and ATmega164P |
| [#22877] Fuse information wrong for xmega devices. |
| [#22878] eeprom_*_word/dword/block cause hang in ATmega256x |
| [#23004] Watchdog enable docu only generated for Xmega series |
| [#23032] Define PORTxn, PINxn, DDxn bit names in iomxx4.h. |
| [#23166] atmega328p does not have SPMEN |
| [#23261] AT90USB162 and AT90USB82 missing power_all_[enable,disable]() in power.h |
| [#23409] Provide an implementation for strtok() |
| [#23546] FAQ documentation symbol seems wrong |
| [#23554] Wrong bit values in iom32u4.h |
| [#23677] Request for cbrt() and strdup to be added to libc |
| [#23703] eeprom write functions optimisation |
| [#23774] Using some defines from avr/fuse.h produces warning |
| [#23850] ATMega8 does not have MCUSR defined |
| [#23871] clock_prescale_set() not available for ATmega32U4 |
| [#23959] Small typo in deprecated documentation |
| [#23969] eeprom_read_byte() throws interrupt EE_READY although EERIE is cleared, controller resets |
| [#24207] Example in inttypes.h is wrong |
| [#24446] _attribute_ should be __attribute__ (with double underscores) |
| [#24762] 1.6.3 wdt.h compile-time bug |
| [#24890] Small error in libm source fp_rempio2.S |
| [#25048] eeprom.h will not compile as c++ code. |
| [#25120] pgm_read_*_far() functions cause incorrect usage of the Z pointer for RAM access in ATxmega series |
| [#25131] Incorrect definition of default lfuse bits for ATTiny2313 |
| [#25261] TWIHSR spelling deviates from XML file in AVR Studio 4.15 |
| [#25535] Nonexistent bit definitions in iotn88.h/iotn48.h AREFD REFS1 RWWSB SM2 |
| [#25645] xmega header files broken #defines |
| [#25723] Realloc corrupts free list when growing into the next free item |
| [#25846] include/avr/power.h:628:1: error: missing binary operator before token "defined" |
| [#25925] <avr/boot.h> cannot be included on Xmega devices |
| [#25929] boot.h Fuse read not compatible with Tiny48/88. |
| [#25930] New IO-Headerfiles missing PXn Portpindefinitions |
| [#26188] Wrong or missing definition of SIGNATURE_X in iom644.h and others |
| [#26284] boot_lock_fuse_bits_get does not compile under gcc 4.3.X |
| [#26308] WDE defined as WDE3 in io90pwm3b.h and io90pwm2b.h |
| [#26767] XMEGA GPIO register name discrepancy |
| [#26809] Some common math constants missing in math.h |
| [#26840] Missing #define in iom32m1.h |
| [#26876] include io.h into fuse.h |
| [#27201] _WORDREGISTER in xmega headers does not work in C99 mode |
| [#27235] malloc: Several things go wrong |
| [#27242] realloc: serious error when size shrinks |
| [#27243] malloc: small error in comment |
| [#27367] RAMSTART missing in elder device header files |
| [#27434] Arguments of macros must be protected in parentheses |
| [#28575] Minor bug in iousb162.h - missing FUSE_ prefixes |
| [#28688] using_tools.dox fails to build due to extra underscore |
| [#28756] Bug in AVR libc 1.6.7 (power.h for 8-bit AVR) |
| [#28812] iotn48.h TWS# bits off by one |
| [#28584] iocanxx.h Add word definitions to iocanxx.h |
| [#28627] power.h ATMEGA32U2 clock_prescale_set() not available |
| [#28901] Xmega header files with missing definitions for GPIO_t and CPU_t |
| [#28574] Xmega D ADC struct missing registers |
| [#28582] XMEGA A3B, RTC32 not properly supported |
| [#28921] pointer to function > 128k flash |
| [#29502] literal error in iox128a1.h |
| [#29653] PUD bit missing for at90usb82 |
| [#29950] ATtiny167 SPM_PAGESIZE Discrepancy |
| [#30018] Errors in include files |
| [#30085] memcpy_P on XMega does not clr NVM.CMD before copy |
| [#30104] power.h - Missing "power_usart1_/enable/disable()" functions for ATmega644 |
| [#30148] XMEGA register discrepancy |
| [#30600] Missing processor spec - wdt.h include file |
| [#30597] Missing definition for ATmega16/32/64m1/c1 |
| [#30475] SPM_PAGESIZE is incorrect in io90pwm3b.h and io90pwm2b.h |
| [#30552] Missing definition ADCW |
| [#30569] ATmega16U4/32U4 wrong bit definition |
| [#30669] Improve comment in stdiodemo |
| [#30735] bug in example twitest |
| [#31086] ATTINY88 RAMEND value not set to correct value in iotn88.h |
| [#30363] _delay_xx() functions in <util/delay.h> are broken |
| [#31990] PRPSC0 used in power.h for AT90PWM81 instead of PRPSCR |
| [#31873] power_aes_enable/disable() are commented in power.h for xmega devices |
| |
| * Other changes: |
| |
| - Added 'avr35' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions |
| supported for AT90USB82 and AT90USB162 devices. GCC 4.3 or above is |
| necessary to use this. |
| |
| - Function vfscanf() is rewriten. The float point version is optimized |
| considerably: the expense of a stack was cut by half, and the size of |
| function has decreased approximately on 1KB. Opportunities of standard |
| and minimal versions are expanded, and their size has remained at a |
| former level. |
| |
| Briefly: |
| . Restrictions of a float point format are eliminated. |
| . Conversion '%[' is present in standart version now. |
| . The minimal version differs from standard only absence of '%[' conv. |
| . The 'hh' type qualifier is added ('char *', C99). |
| . The maximal field width is increased up to 255 (65535 in float version). |
| . All known bugs are fixed. |
| |
| New vfscanf() concedes old in: |
| . The size of the minimal and standard versions has increased for old |
| branches of compiler (less 4.1) and ancient chips (without MOVW). |
| . The maximum quantity of conversions now is limited (255). |
| |
| - EEPROM functions are rewriten. Now they are pure asm functions. The |
| reading of long word or block is speed up. New functions for 32-bit |
| words and floats are added. The group of 'update' (burn only different |
| bytes) functions is added. A set of Avr-libc bugs are fixed. |
| |
| - Added support for XMEGA architectures. |
| |
| - The Postscript documentation build has been removed in favour of |
| building only the PDF (and HTML and man page) versions. PDF offers |
| the same printing quality as postscript at a smaller file size. |
| This also works around a bug in doxygen 1.5.7 where it appears to |
| be no longer possible to set GENERATE_HTML = NO. |
| |
| - A sleeping BOD API was added to <avr/sleep.h>. This allows you to disable |
| the Brown Out Detector (BOD) before going to sleep, thereby reducing |
| power even further. |
| |
| - The note about signbit() implementation is removed from documenatation. |
| The reason is that the GCC can replace it with inline code and the |
| nonzero value is unpredictable in such case. |
| |
| - Signature API added in <avr/signature.h>. |
| |
| - All functions are now placed in the .text.avr-libc section, and the |
| floating point functions are placed in the .text.avr-libc.fplib section. This |
| allows the user the ability to relocate all avr-libc routines to a different |
| address using a custom linker script. |
| |
| - The port/pin assignments of the HD44780 LCD controller in the |
| stdiodemo example can now be distributed across more than a single |
| AVR port. The only remaining requirement is that all data bits |
| are assigned to a single port in ascending order. |
| |
| - Added support for avrtiny10 architecture, to support the ATtiny10 Family. |
| |
| - Added new headerfile: <avr/cpufunc.h>; currently contains _NOP() and |
| _MemoryBarrier(). |
| |
| - The twidemo can now optionally address 24C32 and larger EEPROMs |
| that require 16-bit word addressing. |
| |
| - Add a "memory barrier" to the cli() and sei() macros. |
| |
| |
| * New devices supported: |
| |
| + ATxmega64D3 |
| + ATxmega128D3 |
| + ATxmega256D3 |
| + ATxmega192A3 |
| + ATxmega128A1 |
| + ATxmega64A1 |
| + ATmega32M1 |
| + ATmega32C1 |
| + ATmega32U4 |
| + ATtiny167 |
| + ATtiny13A |
| + ATmega32U6 |
| + AT90SCR100 |
| + ATtiny87 |
| + ATxmega32A4 |
| + ATmega16M1 |
| + ATmega64C1 |
| + ATmega64M1 |
| + ATA6289 |
| + AT90PWM81 |
| + ATmega128RFA1 |
| + ATxmega32D4 |
| + ATxmega16A4 |
| + ATxmega16D4 |
| + ATmega16U4 |
| + ATmega8U2 |
| + ATmega16U2 |
| + ATmega32U2 |
| + ATxmega192D3 |
| + ATtiny2313A |
| + ATtiny4313 |
| + ATtiny24A |
| + ATtiny44A |
| + ATtiny261A |
| + ATtiny461A |
| + ATtiny861A |
| + ATmega644PA |
| + ATmega88PA |
| + ATmega16A |
| + ATmega64HVE |
| + ATmega169PA |
| + ATmega649P |
| + ATmega324PA |
| + ATmega16HVA2 |
| + ATmega16HVB |
| + ATmega48A |
| + ATmega88A |
| + ATmega168A |
| + ATmega328 |
| + ATmega164A |
| + ATmega324A |
| + ATmega644A |
| + ATmega165A |
| + ATmega169A |
| + ATmega645A |
| + ATmega6450A |
| + ATmega649A |
| + ATmega6490A |
| + ATmega6490P |
| + ATmega645P |
| + ATmega6450P |
| + ATmega329PA |
| + ATxmega128A1U |
| + ATxmega64A1U |
| + ATtiny4 |
| + ATtiny5 |
| + ATtiny9 |
| + ATtiny10 |
| + ATtiny20 |
| + ATtiny40 |
| + ATtiny84A |
| + ATmega325A |
| + ATmega3250A |
| + ATmega329A |
| + ATmega3290A |
| + M3000 |
| |
| * Optimized functions: |
| |
| eeprom_read_block |
| eeprom_read_dword |
| eeprom_read_word |
| eeprom_write_block |
| eeprom_write_dword |
| eeprom_write_word |
| strtod |
| setjmp |
| sqrt (and callers: acos, asin and hypot) |
| sin, cos, tan: minor in space |
| strlcat, strlcat_P |
| strlcpy, strlcpy_P |
| strtok, strtok_r |
| |
| * Contributed Patches: |
| |
| [#6194] Twitest updated to handle larger EEPROM devices |
| [#6352] Far pointer library |
| [#6500] Reentrant code faq |
| [#6517] Pgmspace with float support |
| [#6555] malloc improvement |
| [#6649] sqrt.S in libm changes |
| [#6690] Shorten calculation of dallas 1-wire crc |
| [#6718] Optimize the EEPROM functions |
| [#6720] FAQ update. Add EEPROM section, baud rate section. Correct spelling. |
| [#6791] Minor fixes to stdio.h documentation |
| [#6878] eewr_byte.S update for patch #6718 |
| [#6891] Add XMega software reset to the FAQ section on software reset |
| [#6895] Improved malloc behaviour when expanding used area |
| [#6897] Allow <util/setbaud.h> to be used with assembler source |
| |
| * New functions: |
| |
| cbrt |
| eeprom_read_dword |
| eeprom_read_float |
| eeprom_update_block |
| eeprom_update_byte |
| eeprom_update_dword |
| eeprom_update_float |
| eeprom_update_word |
| eeprom_write_dword |
| eeprom_write_float |
| memccpy_P |
| strdup |
| strtok |
| strtok_P |
| strtok_rP |
| strlen_PF |
| strnlen_PF |
| memcpy_PF |
| strcpy_PF |
| strncpy_PF |
| strcat_PF |
| strlcat_PF |
| strncat_PF |
| strcmp_PF |
| strncmp_PF |
| strcasecmp_PF |
| strncasecmp_PF |
| strstr_PF |
| strlcpy_PF |
| memcmp_PF |
| |
| |
| *** Changes in avr-libc-1.6.0: |
| |
| * Main changes from avr-libc 1.4 to 1.6: |
| |
| + The fplib/math library is completely rewritten. Now features of the IEEE |
| 754 standard are supported all: negative zero, subnormals, Infs and NaNs. |
| It concerns both to base operations (arithmetic, comparison...), and to |
| all functions. Speed of performance is increased, sometimes considerably. |
| A number of mistakes (not reflected in the Bugs) which led severe losses |
| of accuracy for some arguments is corrected. A number of new functions is |
| added. It is necessary to note, that the new library concedes old under |
| the charge of flash memory a little. |
| |
| Incompatibilities: |
| |
| - Conversion from float to long (make similar to GCC/x86): in case if |
| overflow was or if input is NaN return 0x80000000 for signed result and |
| return 0 for unsigned result. Negative input (not too big in absolute |
| value) is permissible for cast to unsigned long, for example: (unsigned |
| long)(-1.0) returns ULONG_MAX. |
| |
| - The signbit() function: return 1 as nonzero value (make similar to |
| builtin GCC). |
| |
| - Make frexp() similar to GCC/x86 in case of nonfinite arg: write 0 by |
| exponent pointer. Early Avr-libc's frexp() skips exponent storing in this |
| case. Make the NULL a legal address to skip a storing. |
| |
| + Functions of numbers to ascii conversion are completely rewritten: |
| dtostre(), dtostrf() and printf() family. They more do not use float point |
| operations. Speed of int/float to ascii has increased in some times. For |
| printf() the stack usage is reduced. |
| |
| + Test suite is added to the Avr-libc project. |
| |
| + A few new util's headers: util/atomic.h, util/setbaud.h . |
| |
| * Bugs fixed: |
| |
| [no-id] iscntrl() return true for some values from 0x80 to 0xff. |
| [no-id] Fix the examples installation for non-doc builds. |
| [no-id] Fix the spelling of the OCR1A/B registers in ATtinyX4 devices. |
| [no-id] LED1/2 don't work in the largedemo on an ATmega16. |
| [no-id] Not defined SPM_PAGESIZE for ATtinyX4/X5/X61 and ATtiny2313 devices. |
| [no-id] Typo in iomxx0_1.h: PRUSART3. |
| [no-id] Make include/avr/sfr_defs.h -Wundef safe. |
| [no-id] Make include/avr/eeprom.h -Wundef safe. |
| [no-id] Fix the timing of the HD44780 driver in the stdiodemo. |
| [no-id] Fix the sleep mode definitions for the ATtiny2313. |
| [no-id] Exclude 64-bit types for -mint8. |
| [no-id] Make documentation build work with doxygen 1.5.x |
| [#1929] -Inf not detected |
| [#11511] NaN not generated correctly by division library |
| [#11820] dtostre: wrong output with percision =3 |
| [#13330] NaN is recognized not always |
| [#15161] util/delay.h misses inline keyword (regression) |
| [#15193] incorrect definition of IVSEL bit in MCUCR register |
| [#15266] Function ldexp incorrectly processes overflow and underflow cases. |
| [#15494] Compile warning and errors if compiler flag -Wundef flag specified |
| [#15512] Bootloader macros not interrupt safe. |
| [#15519] AT90CAN* processors incorrectly identified as "AT90S family" |
| [#15522] Typo in iotn2313.h vector table |
| [#15559] Wrong macro for boot_page_write(address) and ATmega128 |
| [#15574] unneeded compatibility break |
| [#15595] GPIOR0 misspelled for ATtiny25/45/85 |
| [#15732] interrupt.h: ISR() incompatibility with gcc 3.4.5 |
| [#15890] missing /devtools/gen-avr-lib-tree.sh |
| [#16039] Names in Pxy (i.e. PA0) style of ports pins for some devices are |
| not defined. |
| [#16125] HD44780 data bit assignment restrictive |
| [#16260] _crc16_update lacks C equivalent |
| [#16411] Add the 'used' attribute to all interrupt service routine macros. |
| [#16434] EMPTY_INTERRUPT has no misspelled vector checking |
| [#16441] eeprom.h should use __asm__ |
| [#16868] depricated.h: outp() arguments order misprint |
| [#17068] wdt.h file: __AVR_ATmeg324P__ spelling mistake |
| [#17470] Add API for CLKPR register. |
| [#17551] Update documentation to point to issues with gcc4.1 |
| [#17591] /avr-libc/libm/fplib/fp_split.S error return will fail for |
| 3-Byte PC devices |
| [#17608] Add ISR_ALIAS() to avr/interrupt.h |
| [#18115] online documentation typo/bug avr/boot.h |
| [#18373] Bugs in Inline ASM documentacion |
| [#18385] SPM_PAGESIZE wrong value for ATmega164p and ATmega324p |
| [#18509] strtod.S crashes due to stack problem with atmega 2560 |
| [#18662] rand() keeps returning the same value if seeded with 0 |
| [#18686] AT90USB**** devices are absent in interrupt-verctor-names table |
| [#18688] vfscanf and vfprintf don't use malloc |
| [#18726] the dtostrf function description is missing in AVR-Libc's webpage |
| [#18903] ATmega644 register definitions for SPI and PRR (datasheet vs. |
| iom*.h) |
| [#18915] PWM1X Bit missing for ATtiny261/461/861 |
| [#18964] USART definitions *wrong* in iocanxx.h |
| [#18994] minor optimization possible to stdlib functions isspace(), |
| isprint(), and islower() |
| [#19009] Make <util/delay.h> issue a warning when optimizations are turned off |
| [#19050] gcrt1.S should call main rather than jumping to it |
| [#19060] PCMSKx registers transposed in header for attinyX61 |
| [#19445] _malloc_heap_end does not follow _heap_end on m2561 |
| [#19495] <avr/interrupts.h> documentation: fix inclusion of cli and sei macros |
| [#19496] Add documentation: how to build toolchain for Windows. |
| [#19650] avr-libc: wrong named bit in SFR of AT90PWMx |
| [#19666] AT90PWMx: Another patch for the include file (missing SFR) |
| [#19669] Need function to read signature row |
| [#19686] alloc declaration missing |
| [#19841] Error building 1.4 HEAD: undefined reference to 'exit' |
| [#20248] FAQ#3: clarify which registers are safe to be used |
| [#20276] power.h missing ATmega644Ppower_XXX_[en/dis]able() macros |
| [#20435] Bit name definitions for AT90PWM3 |
| [#20530] Bug in sample code for early wdt disable |
| [#20650] Missing description of AVR specific C-preprocessor macros |
| [#20682] Bad bit name in avr/io2313.h - Sugestion |
| [#20843] Mega 2561 library |
| [#21174] assembly error with targets at90s1200, attiny11, attiny12, |
| and attiny28 |
| [#21183] Fix Program Space example code. |
| [#21204] iotnx61.h PRR bits incorrect |
| [#21228] Missing 3rd clause in BSD license in documentation pages |
| [#21299] Duplicate register address in iotn48.h. |
| [#21411] Typographical error in 'iotn13.h' |
| [#21432] Incorrect timer interrupt handler names for ATtiny45 |
| [#21434] Bit name definitions for AT90CANxxx |
| [#21444] Undocument -minit-stack |
| [#21484] Documentation build for avr/version.h does not susbstitute autoconf |
| macros |
| [#21749] AT90PWM316: _VECTORS_SIZE should be 128 |
| [#21691] iomx8.h-> IVSEL and IVCE should not be available for ATmega48 |
| [#21743] AT90PWM316 missing PSOC1 bit definitions |
| [#21626] Incorrect Bit Definition for ADC14 and ADC15 Digital Input Disable |
| [#21521] incorrect bit definitions in iotnx61.h |
| [#21840] RAMEND wrong for ATmega48P/88P/168P |
| |
| * Other changes: |
| |
| - New Power Management API in <avr/power.h>. This provides C language |
| macros to manipulate the Power Reduction Register(s) and the System Clock |
| Prescaler register across multiple processors. |
| |
| [patch #4611] sleep.h sleep_mode() not interrupt safe |
| |
| - The simple demo has been modernized a bit. Documentation now |
| generally refers to the ATmega8 rather than the AT90S2313, and |
| the #ifdef spaghetti has been moved out into iocompat.h. |
| |
| - A new demo project ("largedemo") has been added. It extends |
| the simple demo by adding some controls, and thereby touches |
| a good number of avr-libc concepts. It has originally been |
| written for the ATmega16, but can also be run on an ATmega8 |
| or a member of the ATmegaX8 family, as well as on an ATtiny2313. |
| |
| - Another demo project ("stdiodemo") has been added. It |
| demonstrates the setup of the standard IO facilities using |
| a practical small application. |
| |
| - The demo projects now install their source code as part of |
| the documentation tree. |
| |
| - The simple demo has been ported to ATmega8515, ATmega8535, |
| ATmega164P, ATmega165, ATmega169, ATmega324P, ATmega325, |
| ATmega3250, ATmega329, ATmega3290, ATmega640, ATmega644, |
| ATmega644P, ATmega645, ATmega6450, ATmega649, ATmega6490, |
| ATmega1280, ATmega1281, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, |
| ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, |
| ATtiny861. |
| |
| - More overhaul of the demo documentation, don't use the "squid" |
| cable for the largedemo as it is not part of the STK500. |
| |
| - Integrate a copy of the license file into the documentation. |
| |
| - Include an alphabetical index of all globals (functions, |
| macros, types, variables) into the documentation. |
| |
| - Added 'avr25' architecture. Now 'MOVW' and 'LPM Rx, Z[+]' instructions |
| supported for AT86RF401, ATtiny13, ATtiny2313, ATtiny24, ATtiny25, |
| ATtiny261, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85 and |
| ATtiny861 devices. GCC 4.2 or above is necessary to use this. |
| |
| - Add the benchmark page. |
| |
| [patch #5756] New atomic.h header file (added as <util/atomic.h>) |
| |
| [patch #5343] Add a util/setbaud.h "helper" file |
| |
| [patch #6236] Improving _delay_us and _delay_ms |
| |
| [patch #5644] New interrupt.h header file |
| |
| * New devices supported: |
| |
| + ATtiny24 |
| + ATtiny261 |
| + ATtiny44 |
| + ATtiny461 |
| + ATtiny84 |
| + ATtiny861 |
| + ATmega406 |
| + ATmega169 Rev. F |
| + AT90USB82 |
| + AT90USB162 |
| + AT90USB646 |
| + AT90USB647 |
| + AT90USB1286 |
| + AT90USB1287 |
| + ATmega48P |
| + ATmega88P |
| + ATmega164P (renamed from ATmega164) |
| + ATmega168P |
| + ATmega324P (renamed from ATmega324) |
| + ATmega328P |
| + ATmega644P |
| + ATmega1284P |
| + ATmega165P |
| + ATmega169P |
| + ATmega2560 [patch #4461] |
| + ATmega2561 [patch #4461] |
| + ATmega325P |
| + ATmega3250P |
| + ATmega329P |
| + ATmega3290P |
| + AT90PWM1 |
| + ATmega8HVA |
| + ATmega16HVA |
| + ATmega32HVB |
| + AT90PWM216 |
| + AT90PWM316 |
| + ATtiny43U |
| + ATtiny48 |
| + ATtiny88 |
| + AT90PWM2B |
| + AT90PWM3B |
| |
| * New functions: |
| |
| strstr_P (Contributed by Werner Boellmann) |
| round |
| lround |
| lrint |
| |
| * Optimized functions: |
| |
| dtostre |
| |
| *** Changes in avr-libc-1.4.0: |
| |
| * Major API changes: |
| |
| - The INTERRUPT() macro has been deprecated, and it will be |
| removed in a future version. Use __attribute__((interrupt)) |
| explicitly if this functionality is really needed. |
| |
| - A new ISR() macro has been added, and is now the preferred |
| for to introduce an interrupt service routine. It is |
| equivalent to the old SIGNAL() macro, which might become |
| deprecated in a future version. |
| |
| - A new header file, <compat/deprecated.h> has been established. |
| Its purpose is to collect deprecated items from older versions of |
| the library, starting out with the enable_external_int(), |
| timer_enable_int(), and INTERRUPT() macros/functions, as well as |
| the old obsoleted inp/outp/sbi/cbi macros. |
| |
| - A new include file subdirectory named "util/" has been created. |
| The files <compat/twi.h>, <avr/crc16.h>, <avr/delay.h>, and |
| <avr/parity.h> have been moved into the new util/ subdirectory. |
| |
| - A new set of interrupt vector names has been added, closely |
| matching the names given in the datasheet, and more compatible to |
| other compilers available for the AVR platform. The table of |
| interrupt vector names in the documentation is now automatically |
| generated, and explicitly mentions the MCU type for each vector |
| name. |
| |
| - The standard IO facilities API has been enhanced |
| |
| . The backend functions put and get that are passed to fdevopen() |
| during the setup of a stream now take the stream itself as an |
| additional argument. |
| By defining the macro __STDIO_FDEVOPEN_COMPAT_12 before |
| including <stdio.h>, an fdevopen() function prototype will be |
| declared that is backwards-compatible with avr-libc version |
| 1.2 and before. |
| . It is possible to tie user data to a stream using |
| fdev_set_udata(), and to retrieve them using fdev_get_udata(). |
| Together with the additional argument to the backend functions, |
| these functions can now e.g. keep track of internal user state, |
| or distinguish two different devices using the same backend |
| function. |
| . The get backend function can now return _FDEV_EOF to indicate an |
| end-of-file condition, in addition to _FDEV_ERR for an error |
| condition. This will affect the internal state that can be |
| queried using the standard feof() and ferror() functions. |
| . A new macro fdev_setup_stream() is provided to setup a |
| user-supplied stream without the need to call fdevopen(), and thus |
| without requiring malloc(). A similar macro FDEV_SETUP_STREAM() |
| exists that can be used to initialized a FILE object. The |
| floating-point implementations of vfscanf() and vfprintf() now |
| allocate their conversion buffer on the stack, so they do not need |
| malloc() anymore either. |
| |
| - An API has been added to track the library version number. See the |
| documentation of the new header file <avr/version.h>. |
| |
| * Bugs fixed: |
| |
| [#3573] Make local symbols in .S files truely local |
| [#12324] overview: boot_page_write_safe, etc. |
| [#12333] Standard requires libstdc to define vprintf and vscanf |
| [#12495] about Busy-wait delay loops(document) |
| [#12496] about set_sleep_mode() and tiny26/tiny2313 |
| [#12735] No support for AT94K devices in sleep.h |
| [#12739] Gcc assumes that target libc provides ffs function |
| [#12775] Possible Bug in sscanf on string end |
| [#13340] Math lib documentation/lib mismatch |
| [#13557] small typo in avr-libc-user-manual-1.2.3 |
| [#14224] _delay_ms() not inlining if called more than once in a unit |
| [#14241] 'eeprom_is_ready' is not compiled with ATmega48 |
| [#14262] avr-libc documentation error about .init sections |
| [#14266] use __extension__ in avr-libc header files |
| [#14327] wdt_disable() missing a cli |
| [#14378] EEPROM library d'not support at86rf401 device |
| [#14380] configure/make work only in source directory |
| [#14433] Improve documentation of <avr/delay.h> |
| [#14486] some macros from boot.h doesn't compile correctly |
| [#14503] strnlen_P is wrong with classic AVRs |
| [#14798] several IO registers definition issue in header files |
| [#14852] fp pow function broken for negative x |
| |
| * Other changes: |
| |
| [patch #3592] speedup tanh function in libm |
| [patch #3750] Allow passing user data to stdio fdevopen() get and |
| put methods. (This is part of the API changes |
| mentioned above.) |
| [patch #3780] <assert.h> header |
| [patch #3781] add dummy fflush() to <stdio.h> |
| [patch #3782] modernize <stdint.h> |
| [patch #3912] Fix ctype.S linker error due to asm branches out |
| of range |
| [patch #3925] Dallas iButton 8-bit CRC |
| [patch #4087] C99 conformal headers stdint.h and inttypes.h |
| [patch #4505] Unified interrupt vector names in header files |
| [patch #4557] Adds to the fplib usage of MUL instruction |
| in group avr4; avr5 devices |
| [patch #4608] rpm spec file update |
| [patch #4622] unify doc file location in rpms |
| |
| - Update the build system to recent versions of autoconf/automake; |
| the old "doconf" and "domake" scripts are gone now, "reconf" has |
| been renamed to "bootstrap". |
| - Update the documentation system to doxygen >= 1.4.1. |
| - Major overhaul of the documentation, new layout of the HTML pages, |
| several clarifications and additions. |
| - Add support for the following new devices (depending on the ability |
| of the compiler/binutils to handle them): |
| . AT90CAN32/64 |
| . AT90PWM2(B)/3(B) |
| . ATmega329/3290/649/6490 |
| . ATtiny25/45/85 |
| . ATmega164/324/644 |
| . ATmega640/1280/1281 |
| - The library is now compiled with -Os for avr3 and avr5 MCUs (i.e. |
| for those with > 8 KB of ROM); used to be -O3 before. |
| |
| * New string functions. Contributed by Dmitry Xmelkov. |
| |
| ffs |
| ffsl |
| ffsll |
| _FFS (macro) |
| |
| * Optimized functions. |
| |
| misc/itoa |
| misc/ltoa |
| misc/utoa |
| misc/ultoa |
| stdlib/longjmp |
| string/memchr |
| string/memccpy |
| string/strchr |
| string/strrchr |
| string/strsep |
| string/strstr |
| |
| *** Changes since avr-libc-1.2.4: |
| |
| * Bugs fixed: |
| |
| [no-id] EEPROM handling not working for AT90CAN128 ATmega48 ATmega88 |
| ATmega165 ATmega168 ATmega169 ATmega325 ATmega3250 ATmega645 |
| ATmega6450 |
| [#12646] strtod returns error for valid input (patch#4137) |
| [#13341] Remove ADHSM bit from header files. |
| |
| * Other improvements: |
| |
| [patch#4189] Document replacement for sbi/cbi instructions |
| |
| * boot.h: implement boot_lock_fuse_bits_get() plus macros for the |
| respective addresses (low/high/ext fuse, lock bits) |
| |
| |
| *** Changes since avr-libc-1.2.3: |
| |
| * Bugs fixed: |
| |
| [no-id] Work around a bug in gas that made the weak symbol __stack |
| fixed inside gcrt1.S (since the assembler already inserted |
| its value). |
| [no-id] Modify the doxygen build system to cope with artefacts from |
| recent versions of doxygen and (pdfelatex-based) LaTeX. |
| [#12033] macros.inc need to be protected from multiple inclusion. |
| [#12040] overview: sbi in FAQ |
| [#12134] ADC register name definitions |
| [#12422] Add new bit definitions for LCDCCR register in iom169.h. |
| [#12448] Fix bit definition for SJW0 in iocan128.h |
| [#12785] Fix documenation for log10() function in math.h. |
| [#12955] Signal name misprints: SIG_COMPERATOR in iom169.h, |
| SIG_EPROM_READY in iotn26.h |
| [#12993] Signal "__EICR" redefined warning ATmega8 |
| [#13290] avr/io.h EEAR def is flawed for the Mega48 |
| [#13327] Fix bit definition for UCSZ02 in iom325.h, iom3250.h, |
| iom645.h, iom6450.h |
| [#13678] The _wdt_write(value) macro in wdt.h doesn't work with |
| the ATmega325.(also with ATmega3250, ATmega645, ATmega6450, |
| ATmega165). |
| |
| * demo.c extended for ATmega16 |
| |
| *** Changes since avr-libc-1.2.2: |
| |
| * Bugs fixed: |
| |
| [#11987] sscanf parsing problem : leading zero ignored in %u |
| |
| *** Changes since avr-libc-1.2.1: |
| |
| * Bugs fixed: |
| |
| [#11805] Fix call to __fp_cosinus in sin(). |
| [#11817] Replace SYSCLK with F_CPU in twitest example. |
| [#11868] realloc doesn't work correctly on block at end of freelist |
| when growing |
| [#11898] Change optimisation level for building printf libraries to -Os. |
| |
| |
| *** Changes since avr-libc-1.2.0: |
| |
| * Bugs fixed: |
| |
| [no-id] Prefix all internal global symbols in libm with __fp_ so |
| they do not collide with the application namespace. |
| [#4101] setjmp/longjmp destroy changes in global registers. |
| [#11479] Add missing pin definitions for iotn16.h. |
| [#11486] Put the port bit defintions back in for mega16. |
| [#11494] strtol() return wrong value in the underflow case |
| [#11505] Remove doxygen comment about the deprecated inp/outp items. |
| [#11510] Abstract the change enable bit in wdt.h for mega32. |
| [#11522] Rewrite wdt_disable() to match datasheet algorithm. |
| [#11684] realloc overwrites first to bytes of memory block when shrinking |
| [patch #3618] Optimization strtol(), a little (related to bug #11494). |
| [#11732] Update doc/examples/progmem.c to use the latest API. |
| |
| * Extend stdio and pmstring APIs: |
| |
| Implement patch #3516: printf: Handling of argument strings from |
| program memory |
| |
| The %S format can now be used to print strings that are located in |
| program-space memory (aka. ROM). |
| |
| As a prerequisite for this, the function strnlen_P() has been added |
| which is similar to strnlen() except that it takes a pointer to a |
| program-space string. |
| |
| *** Changes in avr-libc-1.2: |
| |
| * Bugs fixed: |
| |
| [no-id] Fix TICIE1 value in usb header files. |
| [no-id] Fix bug introduced in fix for bug #7802 (missing parens). |
| [no-id] Move ATtiny2313 and ATtiny13 from avr4 to avr2 (by now). |
| [#2143] malloc() routines chunk smaller than requested |
| [#5454] Inline functions results in undefined reference when optimize level 0 |
| is used. |
| [#5799] error(?) in iom162.h |
| [#2233] Documentation issues with inline asm |
| [#6352] Sleep mode for ATmega162, ATmega161, and ATmega8515 |
| [#7469] "Problem" by using the library function "boot_lock_bits_set" |
| [#7556] printf and friends improperly handle non-null terminated strings when |
| a %s argument has a precision. |
| [#7802] vfscanf problem with unsigned long (patch #2554) |
| [#7989] dtostrf() destroys string pointer registers? |
| [#8119] _wdt_write macro in wdt.h doesn't work with ATmega169 |
| [#8391] Fuse mask in boot.h wrong? |
| NOTE: boot_lock_bits_set() was broken. Please see the new |
| documentation for examples of how the new version works. |
| [#8452] some SFR and bit names in iom169.h are incorrect |
| NOTE: Where possible, the old names are retained to avoid breaking |
| existing code, but the OCR1A and OCR1B names where just plain wrong |
| so they have been changed and the incorrect names (OCRA1 and OCRB1) |
| are undefined. |
| [#8649] sfr_defs.h: missed _SFR_BYTE() in bit_is_set/clear |
| [#9345] Zero-Padding on vfprintf |
| [#10150] Update release versions compatible with avr-libc and instructions. |
| [#10489] Sleep mode for atmega48/88/168 family |
| [#10733] Fix bit identifer ADFR to ADATE in mega64. |
| [#10828] Fix licenses on files to have same BSD license. |
| [#11242] Add the EEARH register definition for the mega48. |
| [#11275] fdevopen() should document its use of malloc() |
| [#11315] Add USART* signal names to match datasheet for mega32 and mega16. |
| [#11405] Add USART* signal names to match datasheet for mega128. |
| [#11418] Add PRR register and bit definitions for mega169. |
| [#11425] sleep.h missing semicolon |
| |
| * Remove deprecated items: |
| + obsolete headers from the base include directory (moved to the avr/ |
| subdirectory long ago) |
| + deprecated macros and functions from |
| . <avr/eeprom.h> (eeprom_rb, eeprom_rw, eeprom_wb), |
| . <avr/io.h> (cbi, sbi, inb, outb, inw, outw, inp, outp, BV), |
| . <avr/pgmspace.h> (PRG_RDB). |
| + . <avr/timer.h> removed completely. |
| |
| * Moved header files: |
| |
| + <avr/ina90.h> moved to <compat/ina90.h> |
| + <avr/twi.h> moved to <compat/twi.h> |
| |
| * New devices supported: |
| |
| + ATmega165 |
| + ATmega325 |
| + ATmega3250 |
| + ATmega645 |
| + ATmega6450 |
| + ATmega48 |
| + ATmega88 |
| + ATmega168 |
| + ATtiny13 |
| + ATtiny2313 |
| + AT90CAN128 |
| |
| * Pin names for ports are now consistent for all devices. |
| |
| * dtostrf() now uses movw where possible |
| |
| * realloc() has been implemented. |
| |
| * Extend pgmspace API. |
| |
| The pgmspace API has had the following macros added to allow accessing of |
| unsigned 32-bit values: |
| |
| pgm_read_dword_near |
| pgm_read_dword_far |
| pgm_read_dword |
| |
| * Change boot API. |
| |
| The boot API internals have changed such that it is not compatible with the |
| 1.0.x API. |
| |
| These macros have been changed so that they no longer wait for SPM and EEPROM |
| operations to complete. It turns out that doing those checks all the time is |
| not needed and tends to bloat the code. Removing the checks allows you to |
| write more compact code (see the example in avr/boot.h). |
| |
| boot_page_fill |
| boot_page_erase |
| boot_page_write |
| boot_rww_enable |
| boot_lock_bits_set |
| |
| If you want the old behaviour (1.0.x compatible), use these new macros: |
| |
| boot_page_fill_safe |
| boot_page_erase_safe |
| boot_page_write_safe |
| boot_rww_enable_safe |
| boot_lock_bits_set_safe |
| |
| * Extend eeprom API. |
| |
| New macro: |
| eeprom_busy_wait |
| |
| * Extend crc16 API. |
| |
| New functions: |
| _crc_xmodem_update |
| _crc_ccitt_update |
| |
| * Extend stdio API. |
| |
| New functions: |
| vfprintf_P |
| vfscanf_P |
| vsprintf |
| vsprintf_P |
| vsnprintf |
| vsnprintf_P |
| |
| * Extend malloc API. |
| |
| Implement realloc(). |
| |
| * Extend delay API (<avr/delay.h>). |
| |
| Implement inline functions for specifying delays in microseconds, or |
| milliseconds directly (based on the macro F_CPU specifying the CPU |
| clock frequency). |
| |
| * Documentation changes: |
| |
| + Use newer Doxygen. |
| + Many fixes and added documentation. |
| + Unix-style man pages are generated now when doc generation has been |
| enabled in ./configure |
| |
| * Optimize slightly strtol and strtoul functions. |
| |
| * Unified copyright. |
| |
| All of the avr-libc files are now distributed under a single license. |
| All of the authors of the files agreed to this step. The new license |
| is a 3-clause simplified ``BSD-style'' license which is believed to be |
| fully compatible with the GPL on one hand, yet imposes as minimal |
| restrictions as possible for any kind of commercial use in |
| applications based on avr-libc. |
| |
| To build the documentation, doxygen-1.3.4 or newer is strongly recommended. |
| |
| *** Changes in avr-libc-1.0: |
| |
| * Move source to cvs repositiory at http://savannah.gnu.org/projects/avr-libc |
| |
| Anonymous cvs access to the source is now available. There is also a mailing |
| list set up for discussion of development of avr-libc. |
| |
| * License changes. |
| |
| All the files in the project now are covered by a modified BSD license. This |
| allows royalty free use of the library in commerical products. All of the |
| public domain files in the project have been switched to the new license and |
| copyright given to the contributors of the files. |
| |
| There were some files taken from GNU GPL'd projects which were removed from |
| avr-libc to simplify the licensing. The removed files only supplied alternate |
| implementations, so nothing was lost by their removal. |
| |
| * Requires latest binutils and gcc |
| |
| Marek did some fairly major work with binutils and gcc to make adding support |
| for new devices easier. His changes in those tools required changes to |
| avr-libc which make it incompatible with older versions of binutils and gcc. |
| Gcc versions >= 3.3 and binutils versions >= 2.13 are required. |
| |
| * New malloc implementation. |
| |
| Joerg Wunsch has supplied an improved malloc implementation which is less |
| prone to fragmentation. |
| |
| * Documentation! |
| |
| Joerg Wunsch and Ted Roth and have been working on using the doxygen program to |
| embed documentation comments into source code. Additionally, Harald Kipp's |
| inline asm cookbook and Rich Neswold's Avr Tools document have been merged into |
| the user manual. The goal is to have a single place for all the documentation |
| a user would need to get started developing for AVR microcontrollers using |
| the GNU development tool chain. |
| |
| The latest documentation is available online at |
| http://www.freesoftware.fsf.org/avr-libc/ |
| |
| * I/O registers accessible directly in C expressions |
| |
| You can now do this in your code: |
| PORTA |= 0x02; |
| |
| See the "Special Function Registers" documentation for details. This method is |
| preferred over the use of the deprecated inp(), inb(), inw(), outp(), outb() |
| and outw() functions. |
| |
| * New devices supported |
| |
| mega128 |
| mega169 |
| mega16 |
| mega32 |
| mega64 [untested] |
| mega8515 [untested] |
| mega8535 [untested] |
| tiny26 |
| 76c711 |
| 43usb320 |
| 43usb355 |
| 86rf401 |
| |
| * Improved trigonometrical functions: |
| |
| Reiner Patommel provided complete rewrites for asin(), atan() and atan2() |
| that feature a better (for some argument ranges even much better) |
| accuracy than the previous versions. Note that since acos() uses asin(), |
| it also benefits from this. |
| |
| * Incompatibilities with previous version. |
| |
| The arguments for outb()/outw() have been reversed. |
| (value,port) -> (port,value) |
| |
| * New pgmspace.h API. |
| |
| Changed function names and added new functions to read the Program Space |
| FLASH. Added new functions to read 16-bit (word) values. The new API should |
| also clear up problems with reading data from devices with > 64K of FLASH. |
| |
| The API now includes: |
| pgm_read_byte (maps to the *_near function below) |
| pgm_read_word (maps to the *_near function below) |
| pgm_read_byte_near |
| pgm_read_word_near |
| pgm_read_byte_far |
| pgm_read_word_far |
| |
| |
| * New bootloader support API. |
| |
| #include <avr/boot.h> |
| |
| This provides bootloader support functions to those processors that have |
| builtin bootloader support. |
| |
| * inb / outb / inw / outw / cbi / sbi macros are deprecated. |
| |
| * New string functions and optimized string functions. |
| |
| strlcpy (optimized) |
| strlcat (optimized) |
| strsep (new) |
| strtok_r (new) |
| strlcat_P (new) |
| strlcpy_P (new) |
| strncat_P (new) |
| |
| Contributed by Reiner Patommel with some work on strlcpy, strlcat by |
| Eric Weddington. |
| |
| * New eeprom functions by Artur Lipowski <LAL@pro.onet.pl> |
| |
| eeprom_write_word |
| eeprom_write_block |
| |
| |
| *** Changes up to avr-libc-20020203: |
| |
| See the ChangeLog file up to 2002-02-03 for details. |
| |