avr - Interfacing PCA9955 I2C LED driver -


i want interface atmega128 pca9955 led driver using twi communication mode. twi ok pca9955 doesn't acknowledge it. trying light led 14 without using pwm. code here. have connected ad0, ad1 , ad2 pins of pca9955 ground address device address 0x02. can tell me did miss here regarding pca9955 led driver ?

void master_twi_init(void) {     twsr = 0x03;     twbr = 124; // scl frequency 1000hz (approximately)  }  void device_init(void) {     stdout = &uart0_str;     uart0_init();     master_twi_init(); }  int main(void){     device_init();     _delay_ms(5);     twi_tx_byte(0x05, 0b00010000); // set led 14 bright     while(1){;} }  void twi_tx_byte(uint8_t addr, uint8_t data) {     twcr = (1<<twint)|(1<<twsta)|(0<<twsto)|(1<<twen);      while (!(twcr & (1<<twint)));     if ((twsr & 0xf8) != 0x08){printf("start error.\r\n");}          _delay_ms(100);      twdr = 0xc0;      //for addresses connected ground     twcr = (1<<twint)|(1<<twen);     while(!(twcr & (1<<twint)));     if ((twsr & 0xf8) != 0x18){printf("device ack err.\r\n");}     _delay_ms(100);      twdr = addr;     twcr = (1<<twint)|(1<<twen);         while(!(twcr & (1<<twint)));     if ((twsr & 0xf8) != 0x28){printf("address ack err.\r\n");}     _delay_ms(100);      twdr = data;     twcr = (1<<twint)|(1<<twen);     while(!(twcr & (1<<twint)));     if ((twsr & 0xf8) != 0x28){printf("data ack err.\r\n");}     _delay_ms(100);      twcr = (1<<twint)|(1<<twen)|(1<<twsto); } 

the output is.

device ack err. address ack err. data ack err. 

the thing okay 'start' of i2c.

this circuit. enter image description here

according datasheet, 9955 has 4 address pins. need pull a3 low or high, too.

but then, address not 0x02. in fig.3 in section 7.1.1, address shown be

1 1 0 a3 a2 a1 a0 r/w 

so if ground pins, device address should 0xc0 or 0xc1, depending on whether reading or writing it.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -