3: 2010-10-12 (火) 20:00:55 eid7gud | 4: 2010-10-14 (木) 19:39:36 eid7gud | ||
---|---|---|---|
Line 41: | Line 41: | ||
反射型フォトインタラプタのGNDとDynamxielConverterのCN2のPin10:GNDを接続します。 | 反射型フォトインタラプタのGNDとDynamxielConverterのCN2のPin10:GNDを接続します。 | ||
- | 反射型フォトインタラプタのOUTとDynamxielConverterのCN2のPin2:P1を接続します。勿論P2~P8でも構いません。 | + | 反射型フォトインタラプタのOUTとDynamxielConverterのCN2のPin2:PIO0を接続します。勿論PIO1~PIO7でも構いません。 |
#ref(figure2.png) | #ref(figure2.png) | ||
Line 63: | Line 63: | ||
また、いつでも付け替えられるようにしておくとより便利です。 | また、いつでも付け替えられるようにしておくとより便利です。 | ||
- | **Modeを変更する [#ycd5aec4] | + | **PIO Configを変更する [#ycd5aec4] |
- | Modeの設定は、運用時のプログラム内では設定しないことをお勧めします。 | + | PIO Configの設定は、運用時のプログラム内では設定しないことをお勧めします。 |
- | Modeを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 | + | PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 |
制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 | 制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 | ||
Line 85: | Line 85: | ||
void main (void) { | void main (void) { | ||
uint8_t ReadData; // アドレス42の値 | uint8_t ReadData; // アドレス42の値 | ||
- | bool P1; // アドレス42のビット0の値 | + | bool PIO0; // アドレス42のビット0の値 |
fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | ||
Line 91: | Line 91: | ||
while (1) { | while (1) { | ||
fd_DXReadByteData (1, 42, &ReadData); | fd_DXReadByteData (1, 42, &ReadData); | ||
- | P1 = (ReadData & (1 << 0) ) >> 0; | + | PIO0 = (ReadData & (1 << 0) ) >> 0; |
- | fd_printf ("%d : %d\r", ReadData, P1); | + | fd_printf ("%d : %d\r", ReadData, PIO0); |
KEY_QUIT; | KEY_QUIT; | ||
} | } | ||
Line 104: | Line 104: | ||
---- | ---- | ||
- | P1 = (ReadData & (1 << 0) ) >> 0; | + | PIO0 = (ReadData & (1 << 0) ) >> 0; |
Digital In(アドレス42)のデータからビット0の値だけを取り出しています。本来は | Digital In(アドレス42)のデータからビット0の値だけを取り出しています。本来は | ||
- | P1 = ReadData & 1; | + | PIO0 = ReadData & 1; |
- | だけで良いのですが、P2~P8の値を取得する場合を想定しこのように表記しています。 | + | だけで良いのですが、PIO1~PIO7の値を取得する場合を想定しこのように表記しています。 |
- | それではP3に反射型フォトインタラプタを接続した場合を考えてみます。 | + | それではPIO2に反射型フォトインタラプタを接続した場合を考えてみます。 |
- | P3 = (ReadData & (1 << 2) ) >> 2; | + | PIO2 = (ReadData & (1 << 2) ) >> 2; |
- | P3の値はReadDataのビット2です。ReadDataからビット2の値だけを取り出すには論理積(&)とビットシフト(<<又は>>)を使います。 | + | PIO2の値はReadDataのビット2です。ReadDataからビット2の値だけを取り出すには論理積(&)とビットシフト(<<又は>>)を使います。 |
(1 << 2)は1を左に2ビットシフトさせた値です。2進数で書くと | (1 << 2)は1を左に2ビットシフトさせた値です。2進数で書くと |