Conduzco sht11 sensor de temperatura-humedad de mcu, el diseño de referencia de MikroElektronika usa lo siguiente: Para hacer que el pin sda esté alto, el pin conectado a sda (que es pull-up) no se asigna a la lógica 1, sino que se hace una entrada para hacer sda alto.
Usé esto y funcionó, pregunto: ¿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
}