VslavX 0 6 октября, 2008 Опубликовано 6 октября, 2008 · Жалоба Имеется плата на основе LPC2378, пины P0.29 (USB_D+) и P0.30 (USB_D-) предполагается использовать как обычные GPIO выходы. Даташит, усер мануал и ег'ата глаголют что препятствий к этому вроде как нет. Но вот такой простой код: lock = hal_lock_interrupt(); PIN_SEL[1] &= ~0xFFF00000; FIO0_MASK = 0; FIO0_DIR |= 0x44000000; FIO0_SET = 0x44000000; PIN_SEL[1] &= ~0xFFF00000; nop(); FIO0_CLR = 0x44000000; hal_unlock_interrupt(lock); не работает. На выходе P0.26 осциллограф импульсы видит, а на выходе P0.30 - нет. Также данный фрагмент был запущен на плате с LPC2368 - точно с таким же результатом, P0.30 как выход не заработал. Может быть там "открытый коллектор" (по типу P0.28/29) - я еще не пробовал, и мне OK по схеме не подходит. По форуму поискал - такой проблемы не нашел. Кто-нибудь с таким уже сталкивался? Или я что-то в документации пропустил? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gopher 0 6 октября, 2008 Опубликовано 6 октября, 2008 · Жалоба я так настраиваю: FIO0DIR |= 1UL << 29; // P0.29 FIO0DIR |= 1UL << 30; // P0.29 IODIR0 |= 1UL << 29; // P0.29 IODIR0 |= 1UL << 30; // P0.29 user.manual.lpc23xx.pdf, GPIO port Direction register IODIR and FIODIR(IO[0/1]DIR - 0xE002 80[0/1]8 and FIO[0/1/2/3/4]DIR - 0x3FFF C0[0/2/4/6/8]0) Remark: GPIO pins P0.29 and P0.30 are shared with the USB D+/− pins and must have the same direction. If either P0DIR bits 29 or 30 are configured LOW in the IO0DIR or FIO0DIR registers, both, P0.29 and P0.30, are inputs. If both, P0DIR bit 29 and bit 30 are HIGH, both, P0.29 and P0.30, are outputs. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 6 октября, 2008 Опубликовано 6 октября, 2008 · Жалоба Remark: GPIO pins P0.29 and P0.30 are shared with the USB D+/− pins and must have the same direction. If either P0DIR bits 29 or 30 are configured LOW in the IO0DIR or FIO0DIR registers, both, P0.29 and P0.30, are inputs. If both, P0DIR bit 29 and bit 30 are HIGH, both, P0.29 and P0.30, are outputs. Да, спасибо, это именно оно. У меня USB_D+ - вход, в USB_D- - выход, придется как-то выкручиваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться