2      Copyright (C) Dean Camera, 2010. 
   4   dean [at] fourwalledcubicle [dot] com 
   5       www.fourwalledcubicle.com 
  10 bool TWI_StartTransmission(uint8_t SlaveAddress
, uint8_t TimeoutMS
) 
  14                 bool     BusCaptured 
= false; 
  15                 uint16_t TimeoutRemaining
; 
  17                 TWCR 
= ((1 << TWINT
) | (1 << TWSTA
) | (1 << TWEN
));      
  19                 TimeoutRemaining 
= (TimeoutMS 
* 100); 
  20                 while (TimeoutRemaining
-- && !(BusCaptured
)) 
  22                         if (TWCR 
& (1 << TWINT
)) 
  24                                 switch (TWSR 
& TW_STATUS_MASK
) 
  31                                                 TWCR 
= ((1 << TWINT
) | (1 << TWSTA
) | (1 << TWEN
));      
  49                 TWCR 
= ((1 << TWINT
) | (1 << TWEN
)); 
  51                 TimeoutRemaining 
= (TimeoutMS 
* 100); 
  52                 while (TimeoutRemaining
--) 
  54                         if (TWCR 
& (1 << TWINT
)) 
  60                 if (!(TimeoutRemaining
)) 
  63                 switch (TWSR 
& TW_STATUS_MASK
) 
  69                                 TWCR 
= ((1 << TWINT
) | (1 << TWSTO
) | (1 << TWEN
));