コード例 #1
0
ファイル: I2C.c プロジェクト: cydvicious/rone
void I2CSendArray(uint8 addressArg, uint8 subAddressArg, uint8* dataPtrArg, uint8 length) {
	volatile uint32 i;
	
	// Wait until the I2C bus is not busy
	for(i = 0; (UCB0STAT & UCBBUSY) && (i < I2C_MAX_WHILE_DELAY) ; i++) {}
	if(i == I2C_MAX_WHILE_DELAY) {
		i = 0;
		I2CReset();
		return;
	}
	
	address = addressArg;
	subAddress = subAddressArg;		// The address of the register to write to			
	dataPtr = dataPtrArg;
	
	byteCtr = length;				// Setup the number of bytes to read				
	interuptCount = 0;
	receiveMode = FALSE;
	
	// Set the slave address, start the I2C handler in transmitter mode,
	// and send a start condition. This will initate the
	// I2C transmission.
	UCB0I2CSA = addressArg;					// Slave Address
	UCB0CTL1 |= (UCTR | UCTXSTT);			// Put I2C into TX mode and send the start, this starts the transmission
	
	// wait until the entire xfer is finished and the line is no longer busy
	for(i = 0; (UCB0STAT & UCBBUSY) && (i < I2C_MAX_WHILE_DELAY) ; i++) {}
	if(i == I2C_MAX_WHILE_DELAY) {
		i = 0;
		I2CReset();
		return;
	}
}
コード例 #2
0
ファイル: drv_tw88.c プロジェクト: Si4463Project/RadioCode
void putOSDchar(uint8_t y, char c, uint8_t color){
  while (TW88Write(0x96,y)==0) { // RAM Address window position type of thing char index or something
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0x97,c)==0) { // char index in ROM
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0x98,color)==0) { // color attribute
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
}
コード例 #3
0
ファイル: drv_tw88.c プロジェクト: Si4463Project/RadioCode
void putOSDfailsafe(uint8_t on, uint8_t setup) {
  
  while (TW88Write(0x9E,0x03)==0) { // select window 3
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
  if(on)
  {
    while (TW88Write(0x9F,0x01)==0) { // OSD enable
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
  } else {
    while (TW88Write(0x9F,0x00)==0) { // OSD disable
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
  }
  
  if(setup) {
    while (TW88Write(0xA1,0xFF)==0) { // OSD H start
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
  //  while (TW88Write(0xA0,0x00)==0) { // OSD H+V start high bits
  //      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  //  }
    while (TW88Write(0xA2,0x80)==0) {  // OSD V STart
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    while (TW88Write(0xA3,0x09)==0) {  // OSD H Len
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    while (TW88Write(0xA4,0x01)==0) {  // OSD V Len
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    while (TW88Write(0xA9,0xF0)==0) {  // window zoom x4
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    while (TW88Write(0xAC,0x08)==0) {  // window transparency 08
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    while (TW88Write(0xAA,0x5B)==0) {  // window memory start location
        I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    }
    
    char failstr[] = "LINK LOST";
    
    for(int i=0; i<(sizeof(failstr)-1);i++) {
      putOSDchar(0x5B+i,failstr[i], 0x04);
    }
  }
}
コード例 #4
0
ファイル: I2C.c プロジェクト: cydvicious/rone
void I2CReceiveArray(uint8 addressArg, uint8 subAddressArg, uint8* dataPtrArg, uint8 length) {
	volatile uint32 i;
	
	//Don't handle 1 byte or less recieves
	//TODO need to special case single byte receive.  Or not.
	if (length <= 1) {
		return;
	}
	
	// Ensure I2C bus is not busy
	for(i = 0; (UCB0STAT & UCBBUSY) && (i < I2C_MAX_WHILE_DELAY) ; i++) {}
	if(i == I2C_MAX_WHILE_DELAY) {
		i = 0;
		I2CReset();
		return;
	}
	
	address = addressArg;
	subAddress = subAddressArg;
	dataPtr = dataPtrArg;
	
	byteCtr = length;
	interuptCount = 0;
	receiveMode = TRUE;
	
	// Set the slave address, start the I2C handler in transmitter mode 
	// (The interupt will switch this to reciver mode after sending the
	// sub address), and send a start condition. This will initate the
	// I2C recive transmission.
	UCB0I2CSA = address;					// Slave Address
	UCB0CTL1 |= (UCTR | UCTXSTT);			// I2C TX, start condition
	
	// Wait until the tranmission is done and the I2C bus is not busy
	for(i = 0; (UCB0STAT & UCBBUSY) && (i < I2C_MAX_WHILE_DELAY) ; i++) {}
	if(i == I2C_MAX_WHILE_DELAY) {
		i = 0;
		I2CReset();
		return;
	}				
}
コード例 #5
0
ファイル: tw88.c プロジェクト: Si4463Project/ControllerBoard
void ReadAllTW88Regs(void)
{
	
	for (uint8_t x=0;x<=254;x++) {
		//	if (x==2) continue;
			while (TW88Read(x, &TW88Registers[x])==0) {
				  I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
			}
	}
	
	
	
}
コード例 #6
0
ファイル: pcf8591.c プロジェクト: Derpybunneh/cpctelera
unsigned char ReadPCF8591(char address, char channel) {
  
  unsigned char id=PCF8591_ID+(address<<1);
  
  while (!I2CReset()) {
    //fprintf (stderr, "I2C bus busy, retrying.\n");
  }
  
  // set output enable, no autoincrement
  i2cTransmitBuffer[0]=(channel&0x03)+0x40;

  // read 2 bytes, since the first one is the old value
  if (I2CSendReceive(id, 1, 2))
    return 0;

  return i2cReceiveBuffer[1];
}
コード例 #7
0
ファイル: tw88.c プロジェクト: Si4463Project/ControllerBoard
uint8_t TW88_AddOSD_Win(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
{
	/// OSD
	while (TW88Write(0x94,0x0C)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	
	while (TW88Write(0x9E,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x9C,0x03)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0xA1,x)==0) { // OSD H start
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xA2,y)==0) {  // OSD V STart
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xA3,w)==0) {  // OSD H Len
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0xA4,h)==0) {  // OSD V Len
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xA5,0x86)==0) {  // OSD Window border
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	

	while (TW88Write(0x94,0x00)==0) {  //enable OSD RAM access
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	

	for (uint8_t idx=0; idx<64;idx++) {
		


		while (TW88Write(0x9C,0x0F)==0) { //font color
				I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
		}		
		while (TW88Write(0x96,idx)==0) {  //RAM Address window position type of thing char index or something
				I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
		}	
		
		while (TW88Write(0x97,0x40+idx)==0) {  //char index
				I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
		}				
		while (TW88Write(0x98,0x07)==0) {
				I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
		}
			
	}		

	
	while (TW88Write(0x9F,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	return 1;

}
コード例 #8
0
ファイル: tw88.c プロジェクト: Si4463Project/ControllerBoard
uint8_t TW88_Init(void)
{
	//first thing to do would be to make sure that we are on first page
	while (TW88Write(0xff,0x00)==0) {
			//now we detected an error ... we shall resend ?
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
		
	
	while (TW88Write(0x1C, 0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x02,0x40)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x04,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x06,0x03)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x07,0x02)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x08,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x09,0xF0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
			
	}
	while (TW88Write(0x0A,0x19)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x0B,0xD0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x0C,0xDC)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x0D,0x15)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x10,0x00)==0) {   //brightness
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x11,0x50)==0) { // contrast
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x12,0x70)==0) { //sharpness
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x13,0x9E)==0) { //chroma U
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x14,0x90)==0) {  //chroma V
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x15,0x00)==0) {  //hue 
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x17,0x33)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x18,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x1C,0x0F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x1D,0x7F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x1E,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x1F,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x20,0x50)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
		while (TW88Write(0x21,0x42)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x22,0xF0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x23,0xD8)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x24,0xBC)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x25,0xB8)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x26,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x27,0x2a)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x28,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x29,0x15)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2A,0x78)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x2B,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2C,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2D,0x14)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2E,0xA5)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
				
		while (TW88Write(0x2F,0xE0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x33,0x85)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x34,0x1A)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x35,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x38,0x8E)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x40,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x41,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x42,0x04)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x43,0x22)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x44,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x45,0x54)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x46,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x47,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x48,0xCF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x49,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x4A,0x13)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x4B,0x13)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x4C,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4D,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4E,0x64)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4F,0x1E)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x50,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x60,0xE0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x61,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x62,0x7C)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x63,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x64,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x65,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x66,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x67,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x68,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x69,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x6A,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x6B,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x6C,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
		while (TW88Write(0x6D,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x6E,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x70,0x60)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x71,0x60)==0) { 
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x72,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x73,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x74,0x60)==0) { ///brightness
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x75,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x76,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x77,0x03)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x78,0x3B)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x7C,0x1C)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x7D,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x7E,0xF6)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x7F,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x80,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x81,0x1D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x82,0x03)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x83,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x84,0x67)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x85,0x94)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x86,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x87,0xFF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x88,0xCA)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x89,0x02)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xB0,0x40)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xB1,0x02)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB2,0xDB)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB3,0x14)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB4,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB5,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB6,0x33)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xBB,0x12)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	while (TW88Write(0xB7,0x0D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xB8,0x04)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xB9,0x08)==0) {//back porch value
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xBA,0xE0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	

	while (TW88Write(0xBC,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xBD,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0xBE,0xC2)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	
	while (TW88Write(0xBF,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	while (TW88Write(0xC0,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xC1,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	

	while (TW88Write(0xC2,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC3,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC4,0x99)==0) { // PWM setup and duty cycle default 0x40 
		// 0xBF - 50% duty cycle - 0x99 - 20% duty cycle
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC8,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC9,0xED)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xCA,0xE7)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD2,0xFF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD3,0x07)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD4,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD5,0x3F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xD6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xD7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD8,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDA,0x3D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDB,0xC3)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xDC,0xFC)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xDD,0x70)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDE,0x6F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0xDF,0x6F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xE0,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF0,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF4,0x16)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF8,0xA0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF9,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xFA,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xFB,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xFC,0x48)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xFD,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xFE,0x51)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xFF,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xC0,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}


	while (TW88Write(0xFF,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
		
	return 1;
}
コード例 #9
0
ファイル: main.c プロジェクト: ctraabe/NaviCtrl
//------------------------------------------------------------------------------
int main(void)
{
  VICConfig();
  TimingInit();
  LEDInit();
  UART1Init();
  UART2Init();
  I2CInit();
  SPISlaveInit();

  Wait(100);
  UART1Printf("University of Tokyo NaviCtrl firmware V2");

  ReadEEPROM();
  UBloxInit();
  LSM303DLInit();
  FlightCtrlCommsInit();
  SDCardInit();
  NavigationInit();

  ExternalButtonInit();

  // Enable the "new data" interrupt.
  VIC_Config(EXTIT0_ITLine, VIC_IRQ, IRQ_PRIORITY_NEW_DATA);
  VIC_ITCmd(EXTIT0_ITLine, ENABLE);

  // Enable the 50Hz Interrupt.
  VIC_Config(EXTIT3_ITLine, VIC_IRQ, IRQ_PRIORITY_50HZ);
  VIC_ITCmd(EXTIT3_ITLine, ENABLE);

  // Main loop.
  uint32_t led_timer = GetTimestamp();
  for (;;)
  {
#ifndef VISION
    // Check for new data from the magnetometer.
    ProcessIncomingLSM303DL();

    // Skip the rest of the main loop if mag calibration is ongoing.
    if (MagCalibration(mag_calibration_)) continue;

    // Check for new data on the GPS UART port.
    ProcessIncomingUBlox();
#endif

    // Check for new data from the FlightCtrl.
    if (NewDataFromFlightCtrl())
    {
      ClearNewDataFromFlightCtrlFlag();

#ifdef VISION
      KalmanAccelerometerUpdate();
#endif

      UpdateNavigation();

      PrepareFlightCtrlDataExchange();

#ifndef VISION
      RequestLSM303DL();
#endif

      // Check if new data has come while processing the data. This indicates
      // that processing did not complete fast enough.
      if (NewDataFromFlightCtrl())
      {
        overrun_counter_++;
      }
    }

#ifndef VISION
    CheckUBXFreshness();
    CheckLSM303DLFreshness();

    // Normally the magnetometer is read every time new data comes from the
    // FlightCtrl. The following statement is a backup that ensures the
    // magnetometer is updated even if there is no connection to the FlightCtrl
    // and also deals with read errors.
    if (LSM303DLDataStale())
    {
      if (MillisSinceTimestamp(LSM303DLLastRequestTimestamp()) > 20)
        RequestLSM303DL();
      if (LSM303DLErrorBits() & LSM303DL_ERROR_BIT_I2C_BUSY)
        I2CReset();
    }
#else
    CheckVisionFreshness();
#endif

    // Check for incoming data on the "update & debug" UART port.
    ProcessIncomingUART1();

    // Check for incoming data on the "FligthCtrl" UART port.
    ProcessIncomingUART2();

    ProcessLogging();

    if (TimestampInPast(led_timer))
    {
      GreenLEDToggle();

      while (TimestampInPast(led_timer)) led_timer += 100;

      // Debug output for GPS and magnetomter. Remove after testing is completed

      // UART1Printf("%+5.2f,%+5.2f,%+5.2f",
      //   MagneticVector()[0],
      //   MagneticVector()[1],
      //   MagneticVector()[2]);

      // UART1Printf("%i,%i,%i",
      //   MagnetometerVector()[0],
      //   MagnetometerVector()[1],
      //   MagnetometerVector()[2]);

      // UART1Printf("%i,%i,%i",
      //   MagnetometerBiasVector()[0],
      //   MagnetometerBiasVector()[1],
      //   MagnetometerBiasVector()[2]);

      // UART1Printf("%f", CurrentHeading());

      // UART1Printf("%f,%f,%f",
      //   (float)(UBXPosLLH()->longitude * 1e-7),
      //   (float)(UBXPosLLH()->latitude * 1e-7),
      //   (float)(UBXPosLLH()->height_above_ellipsoid * 1e-3));

      UART1PrintfSafe("%+5.2f,%+5.2f,%+5.2f,%+5.2f",
        PositionVector()[0],
        PositionVector()[1],
        PositionVector()[2],
        CurrentHeading());
    }
  }
}
コード例 #10
0
ファイル: drv_tw88.c プロジェクト: Si4463Project/RadioCode
void setupOSD() {
  
  //start with RSSI osd window
  while (TW88Write(0x9E,0x00)==0) { // select window 0
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA1,0x00)==0) { // OSD H start
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA2,0x00)==0) {  // OSD V STart
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA3,0x3F)==0) {  // OSD H Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA4,0x01)==0) {  // OSD V Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
  while (TW88Write(0x9F,0x01)==0) { // OSD enable
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
  char hrssi[] = "Host RSSI:     dBm";
  char rrssi[] = "Remote RSSI:     dBm";
  
  for (int i=0; i<64;i++) {
    putOSDchar(i,' ', 0x07);
  }
  
  for(int i=0; i<(sizeof(hrssi)-1);i++) {
    putOSDchar(0+i,hrssi[i], 0x07);
  }
  for(int i=0; i<(sizeof(rrssi)-1);i++) {
    putOSDchar(35+i,rrssi[i], 0x07);
  }
  
  // next is left control button window: ail, ele, rud
  
  while (TW88Write(0x9E,0x01)==0) { // select window 1
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
    while (TW88Write(0xA1,0x00)==0) { // OSD H start
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA2,0x80)==0) {  // OSD V STart
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA3,0x05)==0) {  // OSD H Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA4,0x05)==0) {  // OSD V Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA9,0xA0)==0) {  // window zoom x3
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xAC,0x08)==0) {  // window transparency 08
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0x9F,0x01)==0) { // OSD enable
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xAA,0x40)==0) {  // window memory start location 40
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
  //clear osd windows chars
  char space = ' ';
  for (int i=0; i<(0x05 * 0x05)+1; i++)
  {
    putOSDchar(0x40+i, space, 0x07);
  }
  putOSDchar(0x42, 0x1D, 0x07); // up arrow
  putOSDchar(0x45, 0x1B, 0x07); // left arrow
  putOSDchar(0x49, 0x1C, 0x07); // right arrow
  putOSDchar(0x4C, 0x1E, 0x07); // down arrow
  putOSDchar(0x54, 0x1B, 0x07); // rudder left
  putOSDchar(0x58, 0x1C, 0x07); // rudder right
  putOSDchar(0x47, 'X', 0x07); // middle dot
  
  //Now for throttle button
  while (TW88Write(0x9E,0x02)==0) { // select window 2
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA1,0xA0)==0) { // OSD H start
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA0,0x12)==0) { // OSD H+V start high bits
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA2,0x0)==0) {  // OSD V STart
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA3,0x01)==0) {  // OSD H Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA4,0x02)==0) {  // OSD V Len
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xA9,0xF0)==0) {  // window zoom x4
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xAC,0x08)==0) {  // window transparency 08
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0x9F,0x01)==0) { // OSD enable
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  while (TW88Write(0xAA,0x40+(0x05*0x05))==0) {  // window memory start location 40
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  putOSDchar(0x59, 0x1D, 0x07); // throttle up
  putOSDchar(0x5A, 0x1E, 0x04); // throttle down
}
コード例 #11
0
ファイル: drv_tw88.c プロジェクト: Si4463Project/RadioCode
uint8_t TW88_Init(void)
{
  //i2c init
  GPIO_InitTypeDef GPIO_InitStructure;
  I2C_InitTypeDef I2C_InitStructure;
  
  //init now the TW88 chip on I2C 1
	
	//I2C init ...on PB6 And PB7
	
	/* Configure the I2C clock source. The clock is derived from the SYSCLK */
  RCC_I2CCLKConfig(RCC_I2C1CLK_HSI);													

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB , ENABLE);
	

	

	
	//init our serial port on UART2
//	SerialPort_Init(115200,1);
	
	
//	printf("\n\r ***** COEN490/ELEC490 Capstone Project Team 14 Welcome! ***** \n\r");
	
	
	I2C_DeInit(I2C1);
	I2C_StructInit(&I2C_InitStructure);
	I2C_InitStructure.I2C_Mode=I2C_Mode_I2C;
	I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
	I2C_InitStructure.I2C_DigitalFilter = 0x00;
	I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
	I2C_InitStructure.I2C_OwnAddress1 = 0x00;
	I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
	//I2C_InitStructure.I2C_Timing = 0x50330309; //0xB0420F13;    ///0x00902025; // 0xc062121f
	I2C_InitStructure.I2C_Timing = 0x00310309; 
	I2C_Init(I2C1,&I2C_InitStructure);
	I2C_Cmd(I2C1,ENABLE);

  GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_4);  // SCL
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_4);	// SDA


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;


  GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_6);	
  GPIO_Init(GPIOB, &GPIO_InitStructure);		

	GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_7);
	GPIO_Init(GPIOB, &GPIO_InitStructure);	

	
	delay(500);	
  
  
  
  
  
  
  
	//first thing to do would be to make sure that we are on first page
	while (TW88Write(0xff,0x00)==0) {
			//now we detected an error ... we shall resend ?
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
    delay(50);
	}
  
  while (TW88Write(0x06,0x80)==0) { // force reset
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
	while (TW88Write(0x1C, 0x0F)==0) { // 0F
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x02,0x40)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x04,0x00)==0) { //00
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x06,0x03)==0) { // 03
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x07,0x02)==0) { // 02
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x08,0x00)==0) { // 00
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x09,0xF0)==0) { // F0
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
			
	}
	while (TW88Write(0x0A,0x19)==0) { // 19
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x0B,0xD0)==0) { // D0
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x0C,0xDC)==0) { // DC
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x0D,0x15)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x10,0x40)==0) { // brightness 00
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x11,0x80)==0) { // contrast 50
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x12,0x71)==0) { //sharpness 71
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x13,0x9E)==0) { //chroma U 9E
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x14,0x9E)==0) {  //chroma V 9E
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x15,0x00)==0) {  //hue 
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x17,0x33)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x18,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x1C,0x0F)==0) { // Standard Selection 0x08=NTSC 0x0F=all
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x1D,0x7F)==0) { // 7F
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x1E,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x1F,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x20,0x50)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
		while (TW88Write(0x21,0x42)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x22,0xF0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x23,0xD8)==0) { // D8
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x24,0xBC)==0) { // BC
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x25,0xB8)==0) { // B8
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x26,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x27,0x2a)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x28,0x00)==0) { // 00
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x29,0x15)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2A,0x78)==0) { // 78
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x2B,0x44)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2C,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2D,0x14)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x2E,0xA5)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
				
		while (TW88Write(0x2F,0x00)==0) { // E0
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x33,0x85)==0) { // 85
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x34,0x1A)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x35,0x40)==0) { // 00 CLAMPING CONTROL ENABLE
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x38,0x80)==0) { // 8E
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x40,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x41,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x42,0x04)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x43,0x22)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x44,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x45,0x54)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x46,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x47,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x48,0xCF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x49,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x4A,0x13)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x4B,0x13)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x4C,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4D,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4E,0x64)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x4F,0x1E)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x50,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x60,0xE0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x61,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x62,0x7C)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x63,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x64,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x65,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x66,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x67,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x68,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x69,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x6A,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0x6B,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x6C,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
		while (TW88Write(0x6D,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x6E,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0x70,0x60)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x71,0x60)==0) { 
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x72,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x73,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x74,0x60)==0) { ///brightness
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x75,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0x76,0x80)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x77,0x03)==0) { // 03
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x78,0x3B)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x7C,0x1C)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0x7D,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x7E,0xF6)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x7F,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x80,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x81,0x1D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x82,0x03)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x83,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x84,0x67)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x85,0x94)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x86,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0x87,0xFF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x88,0xCA)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0x89,0x02)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xB0,0x40)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xB1,0x02)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB2,0xDB)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB3,0x14)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB4,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB5,0x20)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xB6,0x33)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xBB,0x12)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	while (TW88Write(0xB7,0x0D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xB8,0x04)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xB9,0x08)==0) {//back porch value
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xBA,0xE0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	

	while (TW88Write(0xBC,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xBD,0x08)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	while (TW88Write(0xBE,0xC2)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	
	while (TW88Write(0xBF,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}		
	
	while (TW88Write(0xC0,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xC1,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	

	while (TW88Write(0xC2,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC3,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC4,0x99)==0) { // PWM setup and duty cycle default 0x40 
		// 0xBF - 50% duty cycle - 0x99 - 20% duty cycle
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC8,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xC9,0xED)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xCA,0xE7)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD2,0xFF)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD3,0x07)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD4,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD5,0x3F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xD6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xD7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xD8,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDA,0x3D)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDB,0xC3)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xDC,0xFC)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xDD,0x70)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xDE,0x6F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	
	while (TW88Write(0xDF,0x6F)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xE0,0x10)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF0,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF4,0x16)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF6,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF7,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF8,0xA0)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xF9,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xFA,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xFB,0x00)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
	while (TW88Write(0xFC,0x48)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xFD,0x30)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xFE,0x51)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	
	while (TW88Write(0xFF,0x01)==0) { // 2nd page
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
	while (TW88Write(0xC0,0x01)==0) {
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}
  
	while (TW88Write(0xCC,0x00)==0) { // 00
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}

	while (TW88Write(0xFF,0x00)==0) { // go back to 1st page
			I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
	}	
  
  while (TW88Write(0x06,0x80)==0) { // force reset
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  delay(10);
  
    while (TW88Write(0x06,0x01)==0) { // rewrite this reg
      I2CReset(I2C1,GPIOB,GPIO_Pin_6,GPIO_Pin_7);
  }
  
		
	return 1;
}