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;
}
Ejemplo n.º 6
0
uint8_t i2c_start(uint8_t addr) {
//    sclLo();
    hold();
//    sclHi();
    sdaOut(0);
    return i2c_write(addr);
}
Ejemplo n.º 7
0
void PortI2C::stop() const {
    sdaOut(0);
    sclHi();
    sdaOut(1);
}
Ejemplo n.º 8
0
uint8_t PortI2C::start(uint8_t addr) const {
    sclLo();
    sclHi();
    sdaOut(0);
    return write(addr);
}
Ejemplo n.º 9
0
void i2c_stop() {
    sdaOut(0);
    sclHi();
    sdaOut(1);
}
Ejemplo n.º 10
0
void i2c_init () {
    sdaOut(1);
    bitWrite(SDA_RD,SDA_PIN,1);
    bitWrite(SCL_RD,SCL_PIN,1);
    sclHi();
}