Я хочу попробовать восстановить мои батареи с хакерским кодом Smbus через Arduino. Сначала было несколько проблем. Я пытался исправить их, и я исправляю. теперь у меня проблема с библиотекой

i2c\test_i2cmaster.co: в функции main': C:\Users\ugur\Documents\Arduino\libraries\i2c/test_i2cmaster.c:22: multiple definition of основного' i2c\main.co: C:\Users\ugur\Documents\Arduino\ library \ i2c/main.c: 88: здесь сначала определен i2c\ twimaster.co: в функции i2c_init': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:31: multiple definition of i2c_init 'i2c\ i2cmaster.Итак :(. Text +0x10): сначала определено здесь i2c\ twimaster.co: в функции i2c_start': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:42: multiple definition of i2c_start' i2c\ i2cmaster.Итак :(. Text +0x1a): сначала определено здесь i2c\ twimaster.co: в функции i2c_start_wait': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:78: multiple definition of i2c_start_wait' i2c\ i2cmaster.Итак :(. Text +0x36): сначала определено здесь i2c\ twimaster.co: в функции i2c_rep_start': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:130: multiple definition of i2c_rep_start' i2c\ i2cmaster.Итак :(. Text +0x22): сначала определено здесь i2c\ twimaster.co: в функции i2c_stop': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:141: multiple definition of i2c_stop' i2c\ i2cmaster.Итак :(. Text +0x4a): сначала определено здесь i2c\ twimaster.co: в функции i2c_write': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:161: multiple definition of i2c_write' i2c\ i2cmaster.Итак :(. Text +0x5a): сначала определено здесь i2c\ twimaster.co: в функции i2c_readAck': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:182: multiple definition of i2c_readAck' i2c\ i2cmaster.Итак :(. Text +0x96): сначала определено здесь i2c\ twimaster.co: в функции i2c_readNak': C:\Users\ugur\Documents\Arduino\libraries\i2c/twimaster.c:197: multiple definition of i2c_readNak' i2c\ i2cmaster.Итак :(. Text +0x92): сначала определено здесь

библиотека есть;

ifndef F_CPU

определить F_CPU 16000000UL

ENDIF

включают

включают

определение F_SCL 100000UL // частота SCL

определить Prescaler 1

определить TWBR_val ((((F_CPU / F_SCL) / Prescaler) - 16) / 2)

void I2C_init(void){TWBR = TWBR_val; }

uint8_t I2C_start(адрес uint8_t){// сбросить управляющий регистр TWI TWCR = 0; // передать условие START TWCR = (1 <

// check if the start condition was successfully transmitted
if((TWSR & 0xF8) != TW_START){ return 1; }

// load slave address into data register
TWDR = address;
// start transmission of address
TWCR = (1<<TWINT) | (1<<TWEN);
// wait for end of transmission
while( !(TWCR & (1<<TWINT)) );

// check if the device has acknowledged the READ / WRITE mode
uint8_t twst = TW_STATUS & 0xF8;
if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;

return 0;

}

void I2C_write(данные uint8_t){// загрузка данных в регистр данных TWDR = data; // начать передачу данных TWCR = (1 <

if( (TWSR & 0xF8) != TW_MT_DATA_ACK ){ return 1; }

return 0;

}

uint8_t I2C_read_ack(void){

// start TWI module and acknowledge data after reception
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA); 
// wait for end of transmission
while( !(TWCR & (1<<TWINT)) );
// return received data from TWDR
return TWDR;

}

uint8_t I2C_read_nack(void){

// start receiving without acknowledging reception
TWCR = (1<<TWINT) | (1<<TWEN);
// wait for end of transmission
while( !(TWCR & (1<<TWINT)) );
// return received data from TWDR
return TWDR;

}

void I2C_stop(void){// условие STOP передачи TWCR = (1 <

как я могу это исправить? я новичок в Arduino и C / C ++

1 ответ1

0

В любом случае использовать другую библиотеку i2c? Основная программа это

http://forum.arduino.cc/index.php?PHPSESSID=d7pkki3cs71cv85c0jfrl034k5&action=dlattach;topic=62955.0;attach=3389

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .