示例#1
0
void LED_readPage( uint8_t len, uint8_t page )
{
	// Software shutdown must be enabled to read registers
	LED_writeReg( 0x0A, 0x00, 0x0B );

	// Page Setup
	uint8_t pageSetup[] = { 0xE8, 0xFD, page };

	// Setup page
	while ( I2C_Send( pageSetup, sizeof( pageSetup ), 0 ) == 0 )
		delay(1);

	// Register Setup
	uint8_t regSetup[] = { 0xE8, 0x00 };

	// Read each register in the page
	for ( uint8_t reg = 0; reg < len; reg++ )
	{
		// Update register to read
		regSetup[1] = reg;

		// Configure register
		while ( I2C_Send( regSetup, sizeof( regSetup ), 0 ) == 0 )
			delay(1);

		// Register Read Command
		uint8_t regReadCmd[] = { 0xE9 };

		// Request single register byte
		while ( I2C_Send( regReadCmd, sizeof( regReadCmd ), 1 ) == 0 )
			delay(1);
		dbug_print("NEXT");
	}

	// Disable software shutdown
	LED_writeReg( 0x0A, 0x01, 0x0B );
}
示例#2
0
文件: IO2.cpp 项目: OLIMEX/OLINUXINO
uint8_t IO2::digitalRead(uint8_t pin)
{

	int fd;
	unsigned char buff[1] = {GET_PORT}, data, result;

	I2C_Open(&fd, address);
	I2C_Send(&fd, buff, 1);
	I2C_Close(&fd);

	I2C_Open(&fd, address);
	I2C_Read(&fd, &data, 1);
	I2C_Close(&fd);
	return !!(data & pin);
}
示例#3
0
void LED_zeroPages( uint8_t startPage, uint8_t numPages, uint8_t pageLen )
{
	// Page Setup
	uint8_t pageSetup[] = { 0xE8, 0xFD, 0x00 };

	// Max length of a page + chip id + reg start
	uint8_t fullPage[ 0xB3 + 2 ] = { 0 };
	fullPage[0] = 0xE8; // Set chip id, starting reg is already 0x00

	// Iterate through given pages, zero'ing out the given register regions
	for ( uint8_t page = startPage; page < startPage + numPages; page++ )
	{
		// Set page
		pageSetup[2] = page;

		// Setup page
		while ( I2C_Send( pageSetup, sizeof( pageSetup ), 0 ) == 0 )
			delay(1);

		// Zero out page
		while ( I2C_Send( fullPage, pageLen + 2, 0 ) == 0 )
			delay(1);
	}
}
示例#4
0
文件: testi2c.c 项目: cukier/I2C
void main(void)
{
	OPTION=0xFF;
	GIE=0;

 while(1)
 {
  pause(1);
  I2CBUFF[1]++;
  I2CBUFF[2]--;
  I2CBUFF[3]++;
  I2CBUFF[4]--;
  I2CBUFF[0]=0;
  I2C_Send(0x74,I2CBUFF,5);
 }
}
示例#5
0
文件: IO2.c 项目: 1ntroVert/OLINUXINO
/* Read GPIO Analog Inputs */
void ReadADC(unsigned char value)
{
	int fd;
	unsigned char buff[5];
	unsigned char data[5];
	
	
	switch(value)
	{
	case 255:
	ReadADC(0);
	ReadADC(1);
	ReadADC(2);
	ReadADC(3);
	ReadADC(5);
	break;	
	case 0:	
	case 1:
	case 2:
	case 3:
	case 5:	
	
	buff[0]=0x10+value;
	data[0]=0x00;
	
	
	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x21);
	
	/* Write register */
	I2C_Send(&fd, buff,1 );
	
	/* Read the ADC */
	
	I2C_Read(&fd, data, 2);
	/* Convert to Volts. Vref = 3.3V, ADC is 10 bits */
	float volts = data[0] * 0.003222656 + data[1]*0.825;
	printf("ADC%u: %1.3fV\n",value, volts);

	/* Close I2C-BUS */
	I2C_Close(&fd);
	break;
	default:
	
	printf("ADC%u not found\n",value);
}
}
示例#6
0
void Sync_RTC(void){
	
	time_t ltime;
	struct tm *rtc_tm;
	
	ltime = time(NULL);
	rtc_tm = localtime(&ltime);
	
	int fd;
	unsigned char buff[10];
	unsigned char data[10];
	buff[0] = 0x02;
	
	
	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x51);
	
	/* Write register */
	I2C_Send(&fd, buff, 1) ;
	
	/* Read the RTC */
	I2C_Read(&fd, data, 7);
	
	/* Close I2C-BUS */
	I2C_Close(&fd);
	
	data[0] &= 0x7F;
	data[1] &= 0x7F;
	data[2] &= 0x3F;
	data[3] &= 0x3F;
	data[4] &= 0x07;
	data[5] &= 0x1F;
	data[6] &= 0xFF;
	
	rtc_tm -> tm_sec = BCDtoInt(data[0]);
	rtc_tm -> tm_min = BCDtoInt(data[1]);
	rtc_tm -> tm_hour = BCDtoInt(data[2]);
	rtc_tm -> tm_mday = BCDtoInt(data[3]);
	rtc_tm -> tm_wday = BCDtoInt(data[4]);
	rtc_tm -> tm_mon = BCDtoInt(data[5]);
	rtc_tm -> tm_year = BCDtoInt(data[6]);
	
	const struct timeval tv = {mktime(rtc_tm), 0};
    settimeofday(&tv, 0);
	}
示例#7
0
文件: IO2.cpp 项目: OLIMEX/OLINUXINO
uint16_t IO2::analogRead(uint8_t pin)
{

	int fd;
	uint16_t result;
	unsigned char buff[1] = {pin}, data[2];

	I2C_Open(&fd, address);
	I2C_Send(&fd, buff, 1);
	I2C_Close(&fd);

	I2C_Open(&fd, address);
	I2C_Read(&fd, data, 2);
	I2C_Close(&fd);
  
	result = (data[1] << 8) | data[0];
	return result;
}
示例#8
0
文件: IO2.c 项目: 1ntroVert/OLINUXINO
/* Set GPIO Outputs */
void Set_LAT(unsigned char value){
	int fd;
	unsigned char buff[5];
	
	
	buff[0]=0x02;
	buff[1]=value;
	

	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x21);
	
	/* Write register */
	I2C_Send(&fd, buff,2 );

	/* Close I2C-BUS */
	I2C_Close(&fd);
	
}
示例#9
0
void Read_RTC(void){
	
	int fd;
	unsigned char buff[10];
	unsigned char data[10];
	
	buff[0] = 0x02;
	
	
	
	
	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x51);
	
	/* Write register */
	I2C_Send(&fd, buff, 1) ;
	
	/* Read the RTC */
	I2C_Read(&fd, data, 7);
	
	/* Close I2C-BUS */
	I2C_Close(&fd);
	
	data[0] &= 0x7F;
	data[1] &= 0x7F;
	data[2] &= 0x3F;
	data[3] &= 0x3F;
	data[4] &= 0x07;
	data[5] &= 0x1F;
	data[6] &= 0xFF;	
	
	printf("Sec: %d\n",BCDtoInt(data[0]));
	printf("Min: %d\n",BCDtoInt(data[1]));
	printf("Hour: %d\n",BCDtoInt(data[2]));
	printf("MDays: %d\n",BCDtoInt(data[3]));
	printf("WDays: %d\n",BCDtoInt(data[4]));
	printf("Month: %d\n",BCDtoInt(data[5]));
	printf("Year: %d\n",BCDtoInt(data[6]));
	
}
示例#10
0
文件: IO2.c 项目: 1ntroVert/OLINUXINO
/* Switch Relay On */
void RelayOn(unsigned char value){
	int fd;
	unsigned char buff[5];
	
	
	buff[0]=0x41;
	buff[1]=value;
	
	/* value:
	 * 1 - switch relay 1 on
	 * 2 - switch relay 2 on
	 * 3 - switch both relays on
	 * /

	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x21);
	
	/* Write register */
	I2C_Send(&fd, buff,2 );

	/* Close I2C-BUS */
	I2C_Close(&fd);
	
}
示例#11
0
文件: IO2.c 项目: 1ntroVert/OLINUXINO
/* Set New I2C device address */
void Set_Address(unsigned char value){
	int fd;
	unsigned char buff[5];

	
	
	buff[0]=0xF0;
	buff[1]=value;
	
	/* value:
	 * New Address to be setted
	 * /
	

	/* Open I2C-BUS */	
	I2C_Open(&fd, 0x21);
	
	/* Write register */
	I2C_Send(&fd, buff,2 );

	/* Close I2C-BUS */
	I2C_Close(&fd);
	
}
示例#12
0
unsigned char I2C_LoginSector0(unsigned char *buf,unsigned char bufsize)
{ return(I2C_Send(IIC_ComLoginSector0,sizeof(IIC_ComLoginSector0),buf,bufsize));}
示例#13
0
unsigned char I2C_ComReadUltralightPage5(unsigned char * buf, unsigned char bufsize)
{ return(I2C_Send(IIC_ComReadUltralightPage5,sizeof(IIC_ComReadUltralightPage5),buf,bufsize));}
示例#14
0
unsigned char I2C_ComRedLedOff(unsigned char * buf, unsigned char bufsize)
{ return(I2C_Send(IIC_ComRedLedOff,sizeof(IIC_ComRedLedOff),buf,bufsize));}
示例#15
0
unsigned char I2C_ComCopyValue(unsigned char * buf, unsigned char bufsize)
{ return(I2C_Send(IIC_ComCopyValue,sizeof(IIC_ComCopyValue),buf,bufsize));}
示例#16
0
unsigned char I2C_ComReadPurse1(unsigned char * buf, unsigned char bufsize)
{ return(I2C_Send(IIC_ComReadPurse1,sizeof(IIC_ComReadPurse1),buf,bufsize));}
示例#17
0
unsigned char I2C_ReadBlock1(unsigned char *buf,unsigned char bufsize)
{ return(I2C_Send(IIC_ComReadBlock1,sizeof(IIC_ComReadBlock1),buf,bufsize));}
示例#18
0
unsigned char I2C_SelectCard(unsigned char *buf,unsigned char bufsize)
{ return(I2C_Send(IIC_ComSelectCard,sizeof(IIC_ComSelectCard),buf,bufsize));}