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 | } |