nrf51 で SWDIO がピンリセットとして認識される
SWD経由で書き込んでちゃんと動いて、電源入れ直すと動かなくなってハマった…。VINとGNDのみの配線なら動いてるので、一つ一つ確認するとSWDIOのピンがGND(かLOW)の時に起動せず、HIGHかオープンな時に起動することが解った。
nrf はSWD書き込み直後の起動はdebug mode といわれるモードで起動するらしく、この場合はSWDIOがresetとならない。
- SWDIO/nRESET pin "debug mode" - Nordic Developer Zone
- BLE Nano (nRF51822) でどうしても 1mA 以上電流食うぞというとき | tech - 氾濫原
- のエントリーの下の方参考
なので書き込み直後は動くが、再度電源を入れ直すとSWDIOがLOWに落ちているため、延々と起動しない、ということになる。ちゃんと動かすためには、SWDIOで書き込んでいないときはHIGHにし、書き込み時には繋がないといった回路が必要。
とりあえず開発時でリセットピンを使わない時には
NRF_POWER->RESET = 0;
にセットしておくことで、リセット機能を無効化して起動してる。