This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Re-Post on INT

Guys sorry for my poor format for the same issue previously....

Hey Linq,

A good news infact for your valuable support , today I was able to comunicate with I2C , almost 90% is done . Can you help me out for these issues listed below ..

the state where i get data ,i.e

case 0x50 ( Data Recieved with ACK) :

Master_Buff[Read_Index] = I2DAT ;

Read_Index++;

if(Read_Index != MAX_READ)
{
   I21CONSET = 0x04 (ACK bit)
}

else
{

Read_Index = 0;
I21CONSET = 0x10 (stop)

}

When I track Master_Buff 's value and use it within the Interrupt using UARTBYte out under CASE 0x50 , i get the correct data .

When I track Master_Buff''s value outside the IRQ and use it in my main , i am not getting the data .

To be noted that Master_Buff is a global variable , Then where should be the problem ???

Thanks for your support !

Looking forward,
Samjith

Parents
  • Hello linq ,

    Like you told I have declared the global variable as "volatile" and followed setting up the NACK bit before setting the stop bit like this ,

    
    case 0x50:
    
    MasterBuff[Index] = I21DAT ;
    
    if(Index != READ_SIZE)
    {
    
     I21CONSET = SET_ACK_BIT;
     Index++;
    
    }
    
    else
    {
      Index = 0;
      I21CONCLR = SEND_NACK_BIT;
      I21CONCLR = STOP_BIT;
      I21CONCLR = CLEAR_INTERRUPT_BIT;
    
    }
    

    but still I am not able to get the desired result .

    Looking forward,

    Sam

Reply
  • Hello linq ,

    Like you told I have declared the global variable as "volatile" and followed setting up the NACK bit before setting the stop bit like this ,

    
    case 0x50:
    
    MasterBuff[Index] = I21DAT ;
    
    if(Index != READ_SIZE)
    {
    
     I21CONSET = SET_ACK_BIT;
     Index++;
    
    }
    
    else
    {
      Index = 0;
      I21CONCLR = SEND_NACK_BIT;
      I21CONCLR = STOP_BIT;
      I21CONCLR = CLEAR_INTERRUPT_BIT;
    
    }
    

    but still I am not able to get the desired result .

    Looking forward,

    Sam

Children