Conduzco sht11 sensor de temperatura-humedad del mcu, el diseño de referencia de MikroElektronika utiliza lo siguiente: Para hacer el pin sda alto, el pin conectado a sda (que es pull-up) no se da a la lógica 1 en su lugar, se hace la entrada para hacer sda alta.
He utilizado esto y ha funcionado, pregunto si es mejor y por qué.
/***************************************************************
* Generates a transmission start
* _____ ________
* DATA: |_______|
* ___ ___
* SCK : ___| |___| |______
***************************************************************/
void Transmission_Start() {
SDA_Direction = 1; // define SDA as input
SCL = 1; // SCL high
Delay_1us(); // 1us delay
SDA_Direction = 0; // define SDA as output
SDA = 0; // SDA low
Delay_1us(); // 1us delay
SCL = 0; // SCL low
Delay_1us(); // 1us delay
SCL = 1; // SCL high
Delay_1us(); // 1us delay
SDA_Direction = 1; // define SDA as input
Delay_1us(); // 1us delay
SCL = 0; // SCL low
}