Ткните носом, пожалуйста, если есть рабочий код
Пример взят из кодбандла филипса, настроил слейв адрес как у 24С32 - не дает ACK после отправки старта, адреса и R/W хостом
Адрес, который пишется в I2C0ADR есть 0xA2, то есть семейство 0x0A, адрес 001 и General Poll отключен
Прерывание не хочет срабатывать. Все, вроде, включено... такое ощущение, что либо адрес не совпадает, либо прерывание не включено...
Но либы один-в-один, что в кейле, что в иаре
Вызывается с (IntNum==30), (Polarity==ACTIVE_HIGH), (Priority==0x0F)
Код
void EnableIntReq_FIQ( U32 IntNum, U32 Polarity, U32 Priority )
{
U32 regVal;
U32 *vect_addr;
vect_addr = (U32 *)(VIC_BASE_ADDR + VECT_INT_REQ_INDEX + IntNum*4);
regVal = *vect_addr;
/* Enable WR, TARGET, and PRIORITY bits, enable INT request and set priority */
/* if Priority > 16, it'll be wrapped to (priority % 0x0F). */
regVal |= ((1<<26)|(1<<27)|(1<<28)|(1<<16)|(Priority&0xF));
if ( Polarity == ACTIVE_HIGH )
{
regVal |= (1<<25);
regVal &= ~(1<<17);
}
else
{
regVal |= (1<<25)|(1<<17);
}
/* target is FIQ */
regVal &= ~(1<<8);
*vect_addr = regVal;
return;
}
что там за грабли могут быть? PLL=240MHz
Код
IVNSS_CLK_CONF = CLK_SEL_PLL | AUTOBLK | DIV2; /* BASE_IVNSS_CLK */
обработчик устанавливается на IRQ, код точно есть в проекте, все включено...

И кейловцы, паразиты, не дают либу TARMP9.DLL для просмотра периферии в ARM9 ядре