заметил баги:
эти 2 строчки из configure:
Код
isp_read_register_16(ISP_REG_INTERRUPT_CONFIGURATION, &tmp);
isp_write_register_16(ISP_REG_INTERRUPT_CONFIGURATION, tmp |
(1 << ISP_INTC_DATA_DEBUG_MODE_OUT_POS) |
(1 << ISP_INTC_DATA_DEBUG_MODE_IN_POS) |
(1 << ISP_INTC_CONTROL_0_DEBUG_MODE_POS));
заменить на:
Код
isp_write_register_16(ISP_REG_INTERRUPT_CONFIGURATION,
ISP_INTC_ACTIVE_HIGH_INTERRUPT_MASK |
ISP_INTC_PULSED_INTERRUPT_MASK |
(1 << ISP_INTC_DATA_DEBUG_MODE_OUT_POS) |
(1 << ISP_INTC_DATA_DEBUG_MODE_IN_POS) |
(1 << ISP_INTC_CONTROL_0_DEBUG_MODE_POS));
и убрать строку из usb_init:
isp_write_register_16(ISP_REG_TEST_MODE, ISP_TSTM_FORCE_FULL_SPEED_MASK);
если по control pipe вопросы будут - обращайтесь
Не могу запустить DMA на bulk. Настраиваю его таким образом:
Код
isp_write_register_16(ISP_REG_DMA_ENDPOINT, USB_ENDPOINT2_IN_INDEX);
isp_write_register_32(ISP_REG_DMA_TRANSFER_COUNTER, count);
isp_write_register_16(ISP_REG_DMA_COMMAND, ISP_DCMD_GDMA_READ_COMMAND);
Сигнал DREQ выставляется, после чего выставляется DACK. Идет один цикл считывания слова. Отсылается только одно слово и все. В чем может быть загвоздка?