Subversion Repositories NaviCtrl

Rev

Rev 241 | Rev 248 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 241 Rev 242
Line 377... Line 377...
377
u8 I2C_Transmission(u8 SlaveAddr, I2C_pRxHandler_t pRxHandler, u8 RxBytes)
377
u8 I2C_Transmission(u8 SlaveAddr, I2C_pRxHandler_t pRxHandler, u8 RxBytes)
378
{
378
{
379
        u8 retval = 0;
379
        u8 retval = 0;
Line 380... Line 380...
380
 
380
 
381
        if(I2C_State == I2C_STATE_IDLE)
381
        if(I2C_State == I2C_STATE_IDLE)
382
        {
382
        {      
383
                I2C_RxBufferSize = RxBytes;
383
                I2C_RxBufferSize = RxBytes;
384
                // set direction to master transmitter
384
                // set direction to master transmitter
385
                if( (I2C_TxBufferSize > 0) && (I2C_TxBufferSize < I2C_TXBUFFER_LEN) ) I2C_Direction = I2C_MODE_TRANSMITTER;
385
                if( (I2C_TxBufferSize > 0) && (I2C_TxBufferSize < I2C_TXBUFFER_LEN) ) I2C_Direction = I2C_MODE_TRANSMITTER;
386
                else if (( I2C_RxBufferSize > 0 ) && (I2C_RxBufferSize < I2C_RXBUFFER_LEN) ) I2C_Direction = I2C_MODE_RECEIVER;
386
                else if (( I2C_RxBufferSize > 0 ) && (I2C_RxBufferSize < I2C_RXBUFFER_LEN) ) I2C_Direction = I2C_MODE_RECEIVER;
387
                else // nothing to send or receive
387
                else // nothing to send or receive
388
                {
388
                {
389
                        I2C_TxBufferSize = 0;
389
                        I2C_TxBufferSize = 0;
390
                        I2C_RxBufferSize = 0;
-
 
391
                        // enable I2C IRQ again
-
 
392
                        VIC_ITCmd(I2C1_ITLine, ENABLE);
390
                        I2C_RxBufferSize = 0;
393
                        return(retval);
391
                        return(retval);
394
                }
392
                }
395
                // update slave address and rx data handler     funbction pointer
393
                // update slave address and rx data handler     funbction pointer
396
                I2C_SlaveAddress = SlaveAddr;
394
                I2C_SlaveAddress = SlaveAddr;
397
                I2C_pRxHandler = pRxHandler;
395
                I2C_pRxHandler = pRxHandler;
398
                // test on busy flag and clear it
396
                // test on busy flag and clear it
-
 
397
                I2C_CheckEvent( I2C1, I2C_FLAG_BUSY );
-
 
398
                // enable I2C IRQ
399
                I2C_CheckEvent( I2C1, I2C_FLAG_BUSY );
399
                VIC_ITCmd(I2C1_ITLine, ENABLE);
400
                // initiate start condition on the bus
400
                // initiate start condition on the bus
401
                I2C_GenerateStart(I2C1, ENABLE);
401
                I2C_GenerateStart(I2C1, ENABLE);
402
                retval = 1;
402
                retval = 1;
403
         }
403
         }