Skip to content

Releases: Rahix/avr-device

Version 0.8.0

30 Nov 16:56
v0.8.0

Choose a tag to compare

Changed

  • BREAKING: Changed the architecture of avr-device such that code is now generated at build time (#157 by @LuigiPiucco). This allows us to scale better and also makes the code-generation much simpler in general. No external dependencies need to be installed anymore when working on this crate.
  • BREAKING: Upgraded to svd2rust version 0.36.1 (#157 by @LuigiPiucco). This leads to mostly one major change in the register API:
    • Registers are now accessed through functions instead of struct members.
      In practice, this means you will have to do the following changes throughout your codebase:
    -dp.PORTD.portd.write(|w| w.pd3().clear_bit());
    +dp.PORTD.portd().write(|w| w.pd3().clear_bit());
    
    -dp.TC0.tccr0b.write(|w| w.cs0().prescale_1024());
    +dp.TC0.tccr0b().write(|w| w.cs0().prescale_1024());
  • BREAKING: Renamed the critical-section-impl to just critical-section and enabled it by default. This was done because the Periperals::take() method is now gated on critical-section (#195).
  • Switched to the rust version of svdtools (#174 by @tones111).
  • Better register definitions for peripherals of the ATmega128RFA1 (#173 by @NikBel3476).

Added

  • Support for AT90CAN128, AT90CAN64, and AT90CAN32 (#206 by @alios).
  • Support for AVR128DB28 (#207 by @tomtor).
  • Support for ATtiny204, ATtiny804, and ATtiny1604 (#182 @nonik0).
  • Support for ATtiny1606 (#183 by @hammerlink).
  • Support for ATtiny261A, ATtiny461A, and ATtiny861A (#179 by @mbuesch).
  • Support for ATtiny417, ATtiny817, ATtiny1617, and ATtiny3217 (#184 by @G33KatWork).
  • Support for ATtiny1626 (#185 by @ckoehne). The VPORTA.DIR register is currently unavailable due to a compiler limitation. See pull request for details.
  • Added asm::get_stack_size() function which returns the current size of the stack (#189 by @LuigiPiucco). This function depends on the rt feature.
  • Added asm::nop2(), asm::nop3(), asm::nop4(), and asm::nop5() functions that delay for precisely 2 to 5 cycles (#228 by @mbuesch). These are useful for precise timing in bit-banging.

Version 0.7.0

05 Jan 02:20
v0.7.0

Choose a tag to compare

Added

Changed

  • BREAKING Upgraded to atdf2svd version 0.5.0 (#170). This is a breaking change because some registers now have fields instead of safe .bits() access. Chech the pull-request for details.
  • BREAKING Renamed in to input in ATtiny-xmega PORT registers (#171 by @innermatrix).

Fixed

Version 0.6.0

20 Sep 01:23
v0.6.0

Choose a tag to compare

Added

Changed

  • Upgraded to atdf2svd version 0.4.0 (#154).
  • The split peripherals of ATmega4808, ATtiny402, ATtiny404 are now represented (#154 and atdf2svd#48).

Fixed

  • Patched the ADC registers of ATtiny84A (#151).

Version 0.5.4

28 Jan 19:29
v0.5.4

Choose a tag to compare

Added

Fixed

  • Added missing pin fields in DDR,PIN,PORT registers for ATtiny167, ATtiny84, ATtiny2313, and ATtiny2313A (#148, #149).
  • Added missing fields for PF7 pin on ATmega32U4 (#150).

Version 0.5.3

17 Nov 00:26
v0.5.3
d843728

Choose a tag to compare

Added

Changed

  • Patched EEPROM registers for ATmega164PA (#139 by @tronje).
  • Added fields to the PCMSK register on ATtiny85 (#131 by @mgrunwald).

Version 0.5.2

24 Aug 19:31
v0.5.2
067d4e4

Choose a tag to compare

Added

Version 0.5.1

08 Apr 22:37
v0.5.1
416da33

Choose a tag to compare

Added

Version 0.5.0

05 Jan 16:18
v0.5.0
984e7bf

Choose a tag to compare

Added

Changed

  • Patched registers for ATmega8 (#112 by @Rutherther).
  • Upgraded to svd2rust 0.28. This changes the register API slightly, please check upstream docs for details (#118).

And finally some misc documentation fixes and improvements in #110 by @mbuesch. Thanks everyone for the help!

Version 0.4.0

08 Sep 17:43
v0.4.0
0e19ff0

Choose a tag to compare

Added

  • Support for ATmega164PA (#101 by @tronje).
  • Added a new, safer, API for manually managing interrupts (#104 by @mbuesch).

Changed

  • Fixed timer registers for ATtiny167 (#102 by @dalpil).
  • Improved codegen of the interrupt management functions (#104 by @mbuesch).
  • Updated to bare-metal version 1.0.0. This changes the interrupt::free() function slightly. Please check the docs for details (#108 by @mbuesch).

Removed

  • Support for very old rustc versions which need llvm_asm!() (#106, #109 by @mbuesch).

Version 0.3.4

23 Jun 19:01
v0.3.4
829131b

Choose a tag to compare

Added

Changed

  • Fixed timer registers for ATmega1280 (#99 by @dalpil).