AnsweredAssumed Answered

About writing and reading EEPROM with I2C interface and interrupt priority

Question asked by 旭亮 吴 on May 4, 2017

Hello:

Recently I encountered a problem with writing and reading EEPROM with I2C interface, the code as following:

HW_init();

    

    LC024T_write(0xC8);

   

//Line A

if(make_sel)

{

    while(1)

    {    

     delay(1000);

    

     u8_read_i2c = LC024T_first_read();

    

     delay(1000);   

    }

}

else

{

delay(1000);    

    u8_read_i2c = LC024T_first_read();

}

    

        

//Line B

ResetADC();

delay(100);

Reset_LTC2986();   

   delay(250);

 

configure_global_parameters(0);

configure_global_parameters(1);

 

if  make_sel  set to 1, that means the code after Line B wont be compiled or executed, the writing and reading eeprom with I2C interface are correct under this circumstance. Imake_sel  set to 0, loading the ram.elf file fail. According to the description above, it seems that the code of writing and reading eeprom with I2C interface are incompatible to the code after Line B, which is related to SPI operation.(Since delete the code between Line A and Line B, ram.elf load correct and software execute correct). The attachment is my project files. Codewarrior version is 2.10 and MCU is MPC5605B.

 

 

The other problem about this project is interrupt priority issue. There are four serial ports in this project, the com1, com3, com4 send data in PIT3_isr, and all four ports receive data in their own receive interrupt function respectively(UART0UART3 correspond to COM1~COM4). My purpose is that the com2 receive ISRs priority should be higher than PIT3_isr, but the fact is that PIT3_isr’priority is higher than com2 receive ISRs priority even though I set priority 15 to com2(UART1_Receive_ISR), the ISR initialization code as following:

INTC_InstallINTCInterruptHandler(PIT3_isr, 127, 3);

    INTC_InstallINTCInterruptHandler(UART0_Receive_ISR, 79, 4);

    INTC_InstallINTCInterruptHandler(UART1_Receive_ISR, 99, 15);

    INTC_InstallINTCInterruptHandler(UART3_Receive_ISR, 122, 13);

The PIT3_isr’s interrupt priority is higher than com2s interrupt priority leads to the fact that the UART1_Receive_ISR function wont response the message comes from PC through serial port every time(70% message will be responsed). And that is unacceptable. 

Appreciate for helping, thanks! 

 

 

Original Attachment has been moved to: Project_1.zip

Outcomes