nrf51 で SWDIO がピンリセットとして認識される

SWD経由で書き込んでちゃんと動いて、電源入れ直すと動かなくなってハマった…。VINとGNDのみの配線なら動いてるので、一つ一つ確認するとSWDIOのピンがGND(かLOW)の時に起動せず、HIGHかオープンな時に起動することが解った。

nrf はSWD書き込み直後の起動はdebug mode といわれるモードで起動するらしく、この場合はSWDIOがresetとならない。

なので書き込み直後は動くが、再度電源を入れ直すとSWDIOがLOWに落ちているため、延々と起動しない、ということになる。ちゃんと動かすためには、SWDIOで書き込んでいないときはHIGHにし、書き込み時には繋がないといった回路が必要。

とりあえず開発時でリセットピンを使わない時には

NRF_POWER->RESET = 0;

にセットしておくことで、リセット機能を無効化して起動してる。