ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
11620
libine (16.07.2004 11:41, просмотров: 927)
Трудности с I2C в LPC2106. Не могу заставить работать subj. Имею макет, на котором порты P0.2 (SCL) и P0.3(SDA) подтянуты к +3.3V резисторами 10КОм. Содержимое I2STAT не покидает значения по умолчанию (после RESET), равное 0xF8; прерывание при установке бита STA в I2C Control Set Register (I2CONSET) не возникает. Ниже приведён код, возникший после нескольких часов борьбы с железом. При выполнении строки 16 фрагмента, согласно документации, должно было бы возникнуть прерывание, а содержимое регистра статуса S1STA должно было бы измениться на 0x8. Однако, ничего этого не происходит. int main(void){ volatile int stat; //temporary variable //I2C Init PINSEL0 |= (SCL_SEL | SDA_SEL); //select I2C Functions I2CONCLR = 0xFF; I2CONSET = I2EN; //enable I2C //VIC Init VICVectAddr11 = (unsigned int)I2C_ISR; //Set the address of ISR for slot 11 VICVectCntl11 = (IRQ_slot_enabled_bit | VIC_ch_num_I2C); //Use slot 11 for I2C VICIntSelect &= ~VIC_ch_mask_I2C; //Set up as IRQ (not FIQ) VICIntEnable |= VIC_ch_mask_I2C; //Enable I2C interrupt __ARMLIB_enableIRQ(); //Global Enable Interrupts //Send Data stat = I2STAT; //test; read I2STAT == 0xF8 stat = I2CONSET; //test; read I2CONSET == 0 I2CONSET = (STA | I2EN); //transmit START condition stat = I2STAT; //test; read I2STAT == 0xF8 stat = I2CONSET; //test; read I2CONSET == 0 for(;;); } Зарание спасибо.