Ejemplo n.º 1
0
uint8_t PortI2C::write(uint8_t data) const {
    sclLo();
    for (uint8_t mask = 0x80; mask != 0; mask >>= 1) {
        sdaOut(data & mask);
        sclHi();
        sclLo();
    }
    sdaOut(1);
    sclHi();
    uint8_t ack = ! sdaIn();
    sclLo();
    return ack;
}
Ejemplo n.º 2
0
uint8_t i2c_write(uint8_t data)  {
    sclLo();
    for (uint8_t mask = 0x80; mask != 0; mask >>= 1) {
        sdaOut(data & mask);
        sclHi();
        sclLo();
    }
    sdaOut(1);
    sclHi();
    uint8_t ack = ! sdaIn();
    sclLo();
    return ack;
}
Ejemplo n.º 3
0
PortI2C::PortI2C (uint8_t num, uint8_t rate)
    : Port (num), uswait (rate)
{
    sdaOut(1);
    mode2(OUTPUT);
    sclHi();
}
Ejemplo n.º 4
0
uint8_t PortI2C::read(uint8_t last) const {
    uint8_t data = 0;
    for (uint8_t mask = 0x80; mask != 0; mask >>= 1) {
        sclHi();
        if (sdaIn())
            data |= mask;
        sclLo();
    }
    sdaOut(last);
    sclHi();
    sclLo();
    if (last)
        stop();
    sdaOut(1);
    return data;
}
Ejemplo n.º 5
0
uint8_t i2c_read(uint8_t last)  {
    uint8_t data = 0;
    for (uint8_t mask = 0x80; mask != 0; mask >>= 1) {
        sclHi();
        if (sdaIn())
            data |= mask;
        sclLo();
    }
    sdaOut(last);
    sclHi();
    sclLo();
    if (last)
        i2c_stop();
    sdaOut(1);
    return data;
}
static void i2cBitTx(uint8_t instance, char bit){

    if(bit) sdaHi(instance);
    else sdaLo(instance);
    i2cDelay(instance);
    sclHi(instance);
    i2cDelay(instance);
    sclLo(instance);
}
static void i2cStop(uint8_t instance){

    i2cDelay(instance);
    sdaLo(instance);
    i2cDelay(instance);
    sclHi(instance);
    i2cDelay(instance);
    sdaHi(instance);
}
static void i2cStart(uint8_t instance){

    sdaHi(instance);
    sclHi(instance);
    i2cDelay(instance);
    sdaLo(instance);
    i2cDelay(instance);
    sclLo(instance);
    i2cDelay(instance);
}
Ejemplo n.º 9
0
void SHT1x::startCommand() {
	// Command start sequence
	sdaHi();
	sclLo();

	delayTimer.uDelay(COM_DELAY);
	sclHi();
	delayTimer.uDelay(COM_DELAY);

	sdaLo();
	delayTimer.uDelay(COM_DELAY);
	sclLo();
	delayTimer.uDelay(COM_DELAY);
	sclHi();
	delayTimer.uDelay(COM_DELAY);

	sdaHi();
	delayTimer.uDelay(COM_DELAY);
	sclLo();
}
static char i2cBitRx(uint8_t instance){

    char ret;

    sdaHi(instance);
    i2cDelay(instance);
    sclHi(instance);
    i2cDelay(instance);
    ret = sdaRd(instance);
    sclLo(instance);

    return ret;
}
uint8_t i2cInit(uint8_t instance, uint32_t clock){
    uint8_t i;

    if(instance >= I2C_NUM_INSTANCES) return I2C_ERR_INVAL;

    gpioSetFun(pins[instance][0], GPIO_FUNC_GPIO);
    gpioSetFun(pins[instance][1], GPIO_FUNC_GPIO);
    gpioSetPullup(pins[instance][0], 1);
    gpioSetPullup(pins[instance][1], 1);
    gpioSetDir(pins[instance][0], 0);
    gpioSetDir(pins[instance][1], 0);
    gpioSetVal(pins[instance][0], 0);
    gpioSetVal(pins[instance][1], 0);
    sdaHi(instance);
    sclHi(instance);
    delayTicks[instance] = (TICKS_PER_MS * 1000) / (8 * clock * 2);
    i2cDelay(instance);
    i2cDelay(instance);
    for (i = 0; i < 100; i++)       // Try to reset the bus
        i2cBitTx(instance, 1);
    i2cStop(instance);

#if !I2C_BITBANG
    PMC_EnablePeripheral(instance ? ID_TWI1 : ID_TWI0);
    gpioSetFun(pins[instance][0], GPIO_FUNC_A);
    gpioSetFun(pins[instance][1], GPIO_FUNC_A);
    TWI_ConfigureMaster(instance ? TWI1 : TWI0, clock, BOARD_MCK);

#if I2C_INT_PDC
    NVIC_EnableIRQ(instance ? TWI1_IRQn : TWI0_IRQn);
    if (instance)
        TWI1->TWI_IDR = 0x00F77;
    else
        TWI0->TWI_IDR = 0x00F77;
#endif

#endif


    return I2C_ALL_OK;
}
Ejemplo n.º 12
0
void PortI2C::stop() const {
    sdaOut(0);
    sclHi();
    sdaOut(1);
}
Ejemplo n.º 13
0
uint8_t PortI2C::start(uint8_t addr) const {
    sclLo();
    sclHi();
    sdaOut(0);
    return write(addr);
}
Ejemplo n.º 14
0
void SHT1x::sclPulse() {
	sclHi();
	delayTimer.uDelay(COM_DELAY);
	sclLo();
}
Ejemplo n.º 15
0
void i2c_stop() {
    sdaOut(0);
    sclHi();
    sdaOut(1);
}
Ejemplo n.º 16
0
void i2c_init () {
    sdaOut(1);
    bitWrite(SDA_RD,SDA_PIN,1);
    bitWrite(SCL_RD,SCL_PIN,1);
    sclHi();
}