make led1642gw.c more generic
This commit is contained in:
parent
8bc7c6a4af
commit
e330e259a1
33
led1642gw.c
33
led1642gw.c
@ -29,7 +29,7 @@
|
|||||||
* the data registers of the LED1642 ICs.
|
* the data registers of the LED1642 ICs.
|
||||||
*/
|
*/
|
||||||
static uint16_t ledbuffer[NUM_LED_CHANNELS];
|
static uint16_t ledbuffer[NUM_LED_CHANNELS];
|
||||||
|
static uint16_t config_reg[3];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write 16 bits of \data, with LE set high
|
* Write 16 bits of \data, with LE set high
|
||||||
@ -75,6 +75,7 @@ static void write_data_latch(uint16_t data)
|
|||||||
write_data(data, 4);
|
write_data(data, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write data to BRIGHTNESS GLOBAL LATCH register.
|
* Write data to BRIGHTNESS GLOBAL LATCH register.
|
||||||
* that means setting LE high for 5 or 6 clock cycles
|
* that means setting LE high for 5 or 6 clock cycles
|
||||||
@ -84,6 +85,7 @@ static void write_global_latch(uint16_t data)
|
|||||||
write_data(data, 6);
|
write_data(data, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function shifts data through the 16bit shift
|
* This function shifts data through the 16bit shift
|
||||||
* register of the LED1642GW, without writing the data
|
* register of the LED1642GW, without writing the data
|
||||||
@ -97,6 +99,20 @@ static void write_no_command(uint16_t data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write data to CONFIG register.
|
||||||
|
* that means setting LE high for 7 clock cycles
|
||||||
|
*/
|
||||||
|
void led1642gw_flush_config(void)
|
||||||
|
{
|
||||||
|
uint8_t ic;
|
||||||
|
for (ic=0; ic<(NUM_LED1642GW_ICs-1); ic++) {
|
||||||
|
write_no_command(config_reg[ic]);
|
||||||
|
}
|
||||||
|
write_data(config_reg[ic], 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn all channels on, so the data in the DATA LATCH
|
* Turn all channels on, so the data in the DATA LATCH
|
||||||
* register affects the LEDs attached to the IC.
|
* register affects the LEDs attached to the IC.
|
||||||
@ -104,8 +120,10 @@ static void write_no_command(uint16_t data)
|
|||||||
void led1642gw_turn_all_on(void)
|
void led1642gw_turn_all_on(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
write_data(0xffff, 2);
|
uint8_t ic;
|
||||||
write_data(0xffff, 2);
|
for (ic=0; ic<(NUM_LED1642GW_ICs-1); ic++) {
|
||||||
|
write_no_command(0xffff);
|
||||||
|
}
|
||||||
write_data(0xffff, 2);
|
write_data(0xffff, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,9 +133,10 @@ void led1642gw_turn_all_on(void)
|
|||||||
*/
|
*/
|
||||||
void led1642gw_turn_all_off(void)
|
void led1642gw_turn_all_off(void)
|
||||||
{
|
{
|
||||||
|
uint8_t ic;
|
||||||
write_data(0x0000, 2);
|
for (ic=0; ic<(NUM_LED1642GW_ICs-1); ic++) {
|
||||||
write_data(0x0000, 2);
|
write_no_command(0x0000);
|
||||||
|
}
|
||||||
write_data(0x0000, 2);
|
write_data(0x0000, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,6 +156,7 @@ void led1642gw_init(void)
|
|||||||
DDR_SDI |= (1<<PIN_SDI);
|
DDR_SDI |= (1<<PIN_SDI);
|
||||||
DDR_LE |= (1<<PIN_LE);
|
DDR_LE |= (1<<PIN_LE);
|
||||||
memset(ledbuffer, 0x00, sizeof(ledbuffer));
|
memset(ledbuffer, 0x00, sizeof(ledbuffer));
|
||||||
|
memset(config_reg, 0x00, sizeof(config_reg));
|
||||||
led1642gw_flush();
|
led1642gw_flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,3 +216,4 @@ void led1642gw_clear(void)
|
|||||||
memset(ledbuffer, 0x00, sizeof(ledbuffer));
|
memset(ledbuffer, 0x00, sizeof(ledbuffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user