User Tools

Site Tools


blogspace:xmegaの入出力レジスタ周り

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
blogspace:xmegaの入出力レジスタ周り [2014/03/03 16:47]
hirosi [XMEGAの入出力レジスタ周り]
blogspace:xmegaの入出力レジスタ周り [2014/03/03 21:59]
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を立てることもできる\\ 
 +\\
 だから\\ だから\\
 +  PORTA.OUT = 1;
   while(1)   while(1)
   {   {
Line 23: Line 27:
   }   }
 このwhileループと\\ このwhileループと\\
 +  PORTA.OUT = 1;
   while(1)   while(1)
   {   {
Line 28: Line 33:
   }   }
 このwhileループでは動作が全く違う。(分かりにくい例でごめんね  J('​ー` )し)\\ このwhileループでは動作が全く違う。(分かりにくい例でごめんね  J('​ー` )し)\\
 +もうちょっと例を出すと、\\
 +sbi(PORTA,​1);​  と  PORTA.OUTSET = 1;​  が同じで\\
 +PORTA = 1;​ とは違うよねってそんな感じ。\\
 +\\
 ぶっちゃけTinyやMegaで値の代入に慣れきってるとOUTSETのありがたみが分からない・・・\\ ぶっちゃけTinyやMegaで値の代入に慣れきってるとOUTSETのありがたみが分からない・・・\\
blogspace/xmegaの入出力レジスタ周り.txt · Last modified: 2014/03/03 21:59 by hirosi