Hola Cesareus01, como estás.
El problema de que alguien del foro te ayude, es que es necesario tener el sensor, para ayudarte a ver algo del código. Caso contrario, programar en el aire no sirve.
Yo lo que te recomiendo es que veas la librería para Arduino, que tiene directivas de I2C similares a CCS y portes el código.
Por ejemplo:
Teniendo en cuenta la siguiente librería:
https://github.com/Seeed-Studio/Seeed_SHT35/blob/master/Seeed_SHT35.cpp
typedef int s32;
typedef long unsigned int u32;
typedef short s16;
typedef unsigned short u16;
typedef char s8;
typedef unsigned char u8;
typedef enum {
NO_ERROR = 0,
ERROR_PARAM = -1,
ERROR_COMM = -2,
ERROR_OTHERS = -128,
} err_t;
err_t SHT_IIC_OPRTS::send_command(u16 cmd) {
s32 ret = 0;
Wire.beginTransmission(_IIC_ADDR);
Wire.write((cmd >> 8) & 0xFF);
Wire.write(cmd & 0xFF);
ret = Wire.endTransmission();
if (!ret) {
return NO_ERROR;
} else {
return ERROR_COMM;
}
}
Esa sería la primer función que analizaría.
Primero en la declaración de variables y el arreglo de respuestas, hay que ver de manera preliminar, el tipo de datos de Arduino.
Donde..
typedef int s32;
typedef long unsigned int u32;
typedef short s16;
typedef unsigned short u16;
typedef char s8;
typedef unsigned char u8;
Podría quedar para CCS, como...
typedef signed int32 s32;
typedef unsigned int32 u32;
typedef signed int16 s16;
typedef unsigned int16 u16;
typedef signed int8 s8;
typedef unsigned int8 u8;
Luego para el arreglo de respuestas quedaría igual.
En la etapa de la función, hay que tener en cuenta que está declarada como método de una clase, pero se resuelve de la siguiente manera.
err_t SHT_IIC_OPRTS_send_command(u16 cmd) {
s32 ret = 0; // Indica que la respuesta tiene signo y es de 32 bits, esto me parece erróneo, pero lo podrías probar.
i2c_start(); // Inicializa la comunicación.
i2c_write(_IIC_ADDR); // Envía la dirección I2C del dispositivo.
i2c_write((cmd >> 8) & 0xFF); // MSB del comando.
i2c_write(cmd & 0xFF); // LSB del comando.
ret = i2c_read(0); // Lee la respuesta del dispositivo.
i2c_stop(); // Para la comunicación I2C.
if (!ret) {
return NO_ERROR;
} else {
return ERROR_COMM;
}
}
Tené en cuenta que lo que te expuse es por mi experiencia, tendrías que probarlo y empezar a portar el código. No es algo que te va a llevar un montón de tiempo. A lo sumo en un fin de semana lo sacas andando.
Saludos !