GPIO

LPC1769を試していて、地味に便利だなと思ったのがGPIO。
方向(DDR)/値(PIN)のほかに、セットとクリアがある。
1を書き込んだところがセット/クリアされるので、Read-while-writeを行わなくてもOK。
AVRは命令で1ビット単位で同じことができるが、C言語からは使いにくいのと、使えるアドレス範囲が限られているので、こっちの方がいいと思った。


改めてマニュアルを読んだらAVRはPINレジスタに書き込むと1がある場所が反転する機能があるらしい。
使ったことがなかった。
xMegaでは、ARMと似たようなセット/クリアレジスタが追加されたらしい。
ビット単位処理が多いマイコンではメリットはでかそう。


NXPだけかと思ってみたらSTのマイコンも似たような構成になっていた。
Cortexは抽象化レイヤーがARMによって用意されてるので、それに合わせて作っているのかもしれない。