I2C不与PCA9685一起使用

我正在使用Atmega168我试图在我的PCA9685伺服驱动程序中使用I2C。

我正在使用这个I2C库: https : //github.com/g4lvanix/I2C-master-lib

我正在尝试使用PCA9685(地址:0x41)启动I2C连接。

由于某种原因,I2C库反弹错误,因为没有发送应答位。 这有什么不对? 我的SDA和SCL引脚连接到10k上拉电阻,它们正确连接到PCA9685。 但它仍然没有用。 它可能是我的PCA9685芯片吗? 我也知道地址是0x41,因为我手动桥接了一个地址连接以分配该地址。

这是我的代码:

#include  #include  #include  #include  #include "i2c.h" #define SERVO_MIN 1000 #define SERVO_MAX 2000 #define SERVO_MID 1500 #define PCA9685_ADDR 0x40 #define PCA9685_MODE1 0x0 #define LED0_ON_L 0x6 #define LED0_ON_H 0x7 #define LED0_OFF_L 0x8 #define LED0_OFF_H 0x9 #define LED PB0 #define LED_DDR DDRB #define LED_PORT PORTB #define DELAYTIME 200 #define setBit(sfr, bit) (_SFR_BYTE(sfr) |= (1 << bit)) #define clearBit(sfr, bit) (_SFR_BYTE(sfr) &= ~(1 << bit)) #define toggleBit(sfr, bit) (_SFR_BYTE(sfr) ^= (1 << bit)) void setupController(); void setServo(uint8_t id, uint8_t start, uint8_t stop); int main(void) { setBit(LED_DDR, LED); clock_prescale_set(clock_div_1); i2c_init(); uint8_t err = i2c_start(0x41); while(err == 1) { setBit(LED_PORT, LED); uint8_t err = i2c_start(0x41); } clearBit(LED_PORT, LED); while(1) { } return 0; } 

先感谢您!