Exemple #1
0
/*  receives a character from I2C rountine.
 *
 *  @return value: character received
 *
 */
static unsigned char i2c_receive_byte(void)
{
    int j=0;
    int i;
    unsigned char regvalue;

    local_irq_disable();
    for (i=0; i<8; i++)
    {
        DELAY(1);
        i2c_clr(SCL);
        DELAY(1);
        i2c_set(SCL);
        
        regvalue = HW_REG(GPIO_0_DIR);
        regvalue &= (~SDA);
        HW_REG(GPIO_0_DIR) = regvalue;
        DELAY(1);
        
        if (i2c_data_read())
            j+=(1<<(7-i));

        DELAY(1);
        i2c_clr(SCL);
    }
    local_irq_enable();
    DELAY(1);
   // i2c_clr(SDA);
   // DELAY(1);

    return j;
}
Exemple #2
0
/*  receives an acknowledge from I2C rountine.
 *
 *  @return value: 0--Ack received; 1--Nack received
 *          
 */
static int i2c_receive_ack(void)
{
    int nack;
    unsigned char regvalue;
    
    DELAY(1);
    
    regvalue = HW_REG(GPIO_0_DIR);
    regvalue &= (~SDA);
    HW_REG(GPIO_0_DIR) = regvalue;
    
    DELAY(1);
    i2c_clr(SCL);
    DELAY(1);
    i2c_set(SCL);
    DELAY(1);
    
    

    nack = i2c_data_read();

    DELAY(1);
    i2c_clr(SCL);
    DELAY(1);
  //  i2c_set(SDA);
  //  DELAY(1);

    if (nack == 0)
        return 1; 

    return 0;
}
Exemple #3
0
static int i2c_receive_ack(int Grp)
{
    int nack;
    unsigned char regvalue;

    DELAY(1);
    
    regvalue  = HW_REG(GPIO_I2C_DIR[Grp]);
    regvalue &= (~GPIO_I2C_BIT[Grp][PINI2C_SDA]);
    HW_REG(GPIO_I2C_DIR[Grp]) = regvalue;

    DELAY(1);
    i2c_clr(Grp, PINI2C_SCL);

    DELAY(1);
    i2c_set(Grp, PINI2C_SCL);

    DELAY(1);
    nack = i2c_data_read(Grp);
    
    DELAY(1);       
    i2c_clr(Grp, PINI2C_SCL);

    DELAY(1);

    return !nack;
}
Exemple #4
0
static unsigned char i2c_receive_byte(int Grp)
{
    int j = 0;
    int i;
    unsigned char regvalue;

    local_irq_disable();

    for (i = 0; i < 8; i ++) {
        DELAY(1);
        i2c_clr(Grp, PINI2C_SCL);

        DELAY(2);
        i2c_set(Grp, PINI2C_SCL);

        regvalue  = HW_REG(GPIO_I2C_DIR[Grp]);
        regvalue &= (~GPIO_I2C_BIT[Grp][PINI2C_SDA]);
        HW_REG(GPIO_I2C_DIR[Grp]) = regvalue;

        DELAY(1);
        if (i2c_data_read(Grp)) {
            j+=(1<<(7-i));
        }

        DELAY(1);
        i2c_clr(Grp, PINI2C_SCL);
    }

    local_irq_enable();

    DELAY(1);

    return j;
}
Exemple #5
0
static void i2c_send_byte(int Grp, unsigned char c)
{
    int i;

    local_irq_disable();

    for (i = 0; i < 8; i ++) {
        DELAY(1);
        i2c_clr(Grp, PINI2C_SCL);

        DELAY(1);
        if (c & (1<<(7-i)))
            i2c_set(Grp, PINI2C_SDA);
        else
            i2c_clr(Grp, PINI2C_SDA);

        DELAY(1);
        i2c_set(Grp, PINI2C_SCL);

        DELAY(1);
        i2c_clr(Grp, PINI2C_SCL);
    }

    local_irq_enable();

    DELAY(1);
}
Exemple #6
0
static void i2c_send_ack(void)
{
    DELAY(1);
    i2c_clr(SCL);
    DELAY(1);
    i2c_set(SDA);
    DELAY(1);
    i2c_set(SCL);
    DELAY(1);
    i2c_clr(SCL);
    DELAY(1);
    i2c_clr(SDA);
    DELAY(1);
}
Exemple #7
0
/*
 * sends a stop bit via I2C rountine.
 *
 */
static void i2c_stop_bit(void)
{
        /* clock the ack */
        DELAY(1);
        i2c_set(SCL);
        DELAY(1); 
        i2c_clr(SCL);  

        /* actual stop bit */
        DELAY(1);
        i2c_clr(SDA);
        DELAY(1);
        i2c_set(SCL);
        DELAY(1);
        i2c_set(SDA);
        DELAY(1);
}
Exemple #8
0
/*
 * sends a start bit via I2C rountine.
 *
 */
static void i2c_start_bit(void)
{
        DELAY(1);
        i2c_set(SDA | SCL);
        DELAY(1);
        i2c_clr(SDA);
        DELAY(1);
}
Exemple #9
0
static void i2c_send_ack(int Grp)
{
    DELAY(1);
    i2c_clr(Grp, PINI2C_SCL);

    DELAY(1);
    i2c_set(Grp, PINI2C_SDA);

    DELAY(1);
    i2c_set(Grp, PINI2C_SCL);

    DELAY(1);
    i2c_clr(Grp, PINI2C_SCL);

    DELAY(1);
    i2c_clr(Grp, PINI2C_SDA);

    DELAY(1);
}
Exemple #10
0
static void i2c_start_bit(int Grp)
{
    DELAY(1);
    i2c_set(Grp, PINI2C_DAT);

    DELAY(1);
    i2c_clr(Grp, PINI2C_SDA);

    DELAY(2);
}
Exemple #11
0
static void i2c_stop_bit(int Grp)
{
    /* clock the ack */
    DELAY(1);    
    i2c_set(Grp, PINI2C_SCL);

    DELAY(1); 
    i2c_clr(Grp, PINI2C_SCL);

    /* actual stop bit */
    DELAY(1);
    i2c_clr(Grp, PINI2C_SDA);

    DELAY(1);
    i2c_set(Grp, PINI2C_SCL);

    DELAY(1);
    i2c_set(Grp, PINI2C_SDA);

    DELAY(1);
}
Exemple #12
0
/*
 * sends a character over I2C rountine.
 *
 * @param  c: character to send
 *
 */
static void i2c_send_byte(unsigned char c)
{
    int i;
    local_irq_disable();
    for (i=0; i<8; i++)
    {
        DELAY(1);
        i2c_clr(SCL);
        DELAY(1);

        if (c & (1<<(7-i)))
            i2c_set(SDA);
        else
            i2c_clr(SDA);

        DELAY(1);
        i2c_set(SCL);
        DELAY(1);
        i2c_clr(SCL);
    }
    DELAY(1);
   // i2c_set(SDA);
    local_irq_enable();
}