реклама на сайте
подробности

 
 
> ISP1763A, корректная инициализация
klaks
сообщение Jun 2 2011, 13:22
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 21-06-07
Пользователь №: 28 615



Делаю так:
Код
uint16_t tmp;
uint32_t id;

GICR_INT0 = 0;
MCUCR |= (1 << ISC01) | (1 << ISC00);
// Сброс микросхемы
PORTD_Bit4 = 0;
__delay_cycles((unsigned long) (FREQUENCY * 1.1E-2));
PORTD_Bit4 = 1;
isp_write_register_32(ISP_REG_CHIP_ID, &id);
__delay_cycles((unsigned long) (FREQUENCY * 1.1E-2));
// Инициализация интерфейса
tmp = ISP_HMC_EDGE_TRIGGERED_INTERRUPT_MASK |
    ISP_HMC_ACTIVE_HIGH_INTERRUPT_MASK | ISP_HMC_ACTIVE_HIGH_DREQ_MASK |
    ISP_HMC_ACTIVE_HIGH_DACK_MASK | ISP_HMC_COMMON_DMA_MASK |
    ISP_HMC_COMMON_INT_MASK | ISP_HMC_DEVICE_DMA_MASK;
isp_write_register_16(ISP_REG_HW_MODE_CONTROL, tmp);
tmp |= ISP_HMC_INTERFACE_LOCK_MASK;
isp_write_register_16(ISP_REG_HW_MODE_CONTROL, tmp);
isp_write_register_16(ISP_REG_UNLOCK_DEVICE, ISP_UNLOCK_DEVICE_CODE);
isp_write_register_16(ISP_REG_MODE, ISP_MODE_SOFT_RESET_MASK);
isp_write_register_16(ISP_REG_MODE, 0);
// Основная инициализация
isp_write_register_16(ISP_REG_OTG_CONTROL_CLEAR, 0xFFFF);
isp_write_register_16(ISP_REG_OTG_CONTROL_SET, ISP_OTGC_HC2_DISABLE_MASK |
    ISP_OTGC_DP_PULLUP_MASK | ISP_OTGC_SOFT_SELECT_HC_DC_MASK);
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));
isp_write_register_16(ISP_REG_INTERRUPT_PULSE_WIDTH, 0x0F);
isp_write_register_32(ISP_REG_INTERRUPT_ENABLE, ISP_INTE_BUS_RESET_MASK |
    ISP_INTE_HIGH_SPEED_MASK | ISP_INTE_VBUS_MASK);
isp_write_register_16(ISP_REG_ADDRESS, ISP_ADDR_DEVICE_ENABLE_MASK);
// Включение прерывания
GICR_INT0 = 1;
isp_write_register_16(ISP_REG_MODE, ISP_MODE_CLOCK_ALWAYS_ON_MASK |
    ISP_MODE_GLOBAL_INTERRUPT_ENABLE_MASK | ISP_MODE_CLOCK_ALWAYS_ON_MASK);
isp_read_register_16(ISP_REG_HW_MODE_CONTROL, &tmp);
tmp |= ISP_HMC_GLOBAL_INTERRUPT_ENABLE_MASK;
isp_write_register_16(ISP_REG_HW_MODE_CONTROL, tmp);


Но бит VBUSSTAT в регистре MODE не работает. То есть, что есть на пине VBUS напряжение, что нет - ничего не меняется. Ставил бит OTG_DISABLE как сказано в даташите, но VBUS по прежнему не детектируется. Плюс ко всему энумерация не начинается, если OTG_DISABLE установлен.

Знающие люди, подскажите пожалуйста правильную последовательность инициализации периферийного контроллера.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016