SAMD10 BOD33 Fuses

1 post / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello,

 

for a custom board with SAMD10A13 I'm developing a project with AtmelStart and I cannot find any configuration of fuse settings in the Atmel start modules.

Direct linking of the user words seems also not to work.

So I tried to set the fuses after first startup during runtime according the spec.:

- Check security bit

- Wait for NVMCTRL_INTFLAG_READY Flag

- readback current fuse setting

- if setting is different from desired setting (reserved bits masked out)

- save reserved bits

- buffer new fusebits (bitwise OR with ~reserved fusebits)

- deactivate NVM cache

- write NVM address register

- erase user page

- write address register

- Page Buffer Clear

- write address register

- write buffer by writing to NVM Adresses

- wait for NVMCTRL_INTFLAG_READY Flag

- write user page (NVMCTRL_CTRLA_CMD_WAP)

- watchdog reset in order to changes take effect

 

This is working well for the EEPROM-Size setting and the BOD33_Action setting (to interrupt) , but unfortunately not for the BOD_EN flag.

The programming values (two  unint_32 words) and the correponding masks for the reserved bits I have doublechecked.

Everytime reading back the fuse via the debugger the values via the NVM module I get correct values for all the fuses despite the BOD_EN flag.

 

Programming this fuse via the programming tool in AtmelStudio7 (with Atmel ICE) is also confusing:

- resetting BOD_EN fuse in the programming tool

- press program buttun

- press read button

-> flag BOD_EN is reset

- press program button again

- press read button

-> flag BOD_EN is set

 

When the manual programming gives feedback that the BOD_EN is reset, I also get the correct value in debug mode in my runtime routine.

 

Does anyone know about constraints for setting / resetting especially this fuse?

 

Many thanks in advance for your help

 

BS