This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
blogspace:xmegaの入出力レジスタ周り [2014/03/03 16:47] hirosi [XMEGAの入出力レジスタ周り] |
blogspace:xmegaの入出力レジスタ周り [2014/03/03 21:06] hirosi |
||
---|---|---|---|
Line 11: | Line 11: | ||
|:::|:::|PORTA.OUT = 0x0B| | |:::|:::|PORTA.OUT = 0x0B| | ||
|:::|:::|PORTA_OUT = 0x0B| | |:::|:::|PORTA_OUT = 0x0B| | ||
- | |ポートの特定bitの反転|PORTA = 0x0F ^ PORTA|PORTA.OUTTGL = 0x0F| | + | |ポートの特定bitの反転|PORTA = 0x0F ^ PORTA|PORTA.OUTTGL = 0x0F| |
\\ | \\ | ||
こう見てみると例えばPORTA.OUT = 0xFF と PORTA.OUTSET = 0xFF は意味同じやんけって思うけど、\\ | こう見てみると例えばPORTA.OUT = 0xFF と PORTA.OUTSET = 0xFF は意味同じやんけって思うけど、\\ | ||
実際は微妙に違うらしく、\\ | 実際は微妙に違うらしく、\\ | ||
PORTx.OUTSETの方は「レジスタの1が立ってる場所を1に設定」って意味で\\ | PORTx.OUTSETの方は「レジスタの1が立ってる場所を1に設定」って意味で\\ | ||
- | PORTx.OUTの方は単純に「出力ポートレジスタに値を代入」って意味っぽい。\\ | + | 1を立てる事はできるけど、0を立てる事は出来ない。\\ |
+ | PORTx.OUTの方は単純に「出力ポートレジスタに値を代入」って意味で\\ | ||
+ | こっちは普通に0を立てることもできる。\\ | ||
+ | \\ | ||
だから\\ | だから\\ | ||
while(1) | while(1) | ||
Line 28: | Line 31: | ||
} | } | ||
このwhileループでは動作が全く違う。(分かりにくい例でごめんね J('ー` )し)\\ | このwhileループでは動作が全く違う。(分かりにくい例でごめんね J('ー` )し)\\ | ||
+ | もうちょっと例を出すと、\\ | ||
+ | sbi(PORTA,1); と PORTA.OUTSET = 1; が同じで\\ | ||
+ | PORTA = 1; とは違うよねってそんな感じ。\\ | ||
+ | \\ | ||
ぶっちゃけTinyやMegaで値の代入に慣れきってるとOUTSETのありがたみが分からない・・・\\ | ぶっちゃけTinyやMegaで値の代入に慣れきってるとOUTSETのありがたみが分からない・・・\\ |