3: 2010-10-12 (火) 20:00:55 eid7gud |
4: 2010-10-14 (木) 19:39:36 eid7gud |
| 反射型フォトインタラプタの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) |
| また、いつでも付け替えられるようにしておくとより便利です。 | | また、いつでも付け替えられるようにしておくとより便利です。 |
| | | |
- | **Modeを変更する [#ycd5aec4] | + | **PIO Configを変更する [#ycd5aec4] |
| | | |
- | Modeの設定は、運用時のプログラム内では設定しないことをお勧めします。 | + | PIO Configの設定は、運用時のプログラム内では設定しないことをお勧めします。 |
- | Modeを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 | + | PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 |
| | | |
| 制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 | | 制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 |
| 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); |
| 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; |
| } | | } |
| ---- | | ---- |
| | | |
- | 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進数で書くと |