uint16_t rdReg16(uint8_t reg){ PORTG|=1<<5; uint16_t dat; twiStart(); twiAddr(camAddr_WR,TW_MT_SLA_ACK); twiWriteByte(reg,TW_MT_DATA_ACK); TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send stop _delay_ms(1); twiStart(); twiAddr(camAddr_RD,TW_MR_SLA_ACK); dat=twiRd(0)<<8; dat|=twiRd(1); TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send stop _delay_ms(1); PORTG&=~(1<<5); return dat; }
uint8_t rdReg(uint8_t reg){ uint8_t dat; twiStart(); twiWriteByte(OV7670_I2C_ADDRESS<<1,TW_MT_SLA_ACK); twiWriteByte(reg,TW_MT_DATA_ACK); TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send stop _delay_ms(1); twiStart(); twiWriteByte((OV7670_I2C_ADDRESS<<1)|1,TW_MR_SLA_ACK); dat=twiRd(1); TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send stop _delay_ms(1); return dat; }