Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 199 → Rev 200

/PIC Stuff/Cerebot_32MX7_LED_Cube/CUBE.c
14,7 → 14,7
Nop();
}
 
void Cube_Init(CUBE_DATA *data) {
void Cube_Init(CUBE_DATA *data, char BC) {
cube_data_ptr = data;
current_layer = 0;
 
44,30 → 44,8
Cube_Delay();
SFT_R = 1;
 
int i,j;
// Write configuration data to the DC/BC/FC/UD registers
unsigned char DCS[GCS_LAYER_SIZE] = {0};
for (i = 0; i < 8; i++) {
int offset = i * GCS_REG_SIZE;
 
for (j = 0; j < 21; j++) {
DCS[offset + j] = 0xFF; // Dot correction
}
// Warning: do not set BC > 0x8F
DCS[offset + 21] = 0x1F; // Global red brightness
DCS[offset + 22] = 0x1F; // Global green brightness
DCS[offset + 23] = 0x1F; // Global blue brightness
 
// DC low range, auto repeat, no timing reset, 8 bit counter mode
DCS[offset + 24] = 0x68; // 0110 1000
}
 
Cube_Write_DCS(BC);
Cube_Clear();
GSLAT = 1;
SPI1_Write(DCS, GCS_LAYER_SIZE, &Cube_DCS_Write_Callback);
Delay_MS(8); // Delay until the entire DCS write is finished
}
 
void Cube_Timer_Interrupt(void) {
113,6 → 91,35
current_layer = (current_layer == CUBE_LAYER_COUNT-1) ? 0 : current_layer + 1;
}
 
void Cube_Write_DCS(char BC) {
if (BC > CUBE_MAX_BRIGHTNESS)
BC = CUBE_MAX_BRIGHTNESS;
 
XBLNK = 0;
int i,j;
// Write configuration data to the DC/BC/FC/UD registers
unsigned char DCS[GCS_LAYER_SIZE] = {0};
for (i = 0; i < 8; i++) {
int offset = i * GCS_REG_SIZE;
 
for (j = 0; j < 21; j++) {
DCS[offset + j] = 0xFF; // Dot correction
}
 
// Warning: do not set BC > 0x6F
DCS[offset + 21] = BC; // Global red brightness
DCS[offset + 22] = BC; // Global green brightness
DCS[offset + 23] = BC; // Global blue brightness
 
// DC low range, auto repeat, no timing reset, 8 bit counter mode
DCS[offset + 24] = 0x68; // 0110 1000
}
GSLAT = 1;
SPI1_Write(DCS, GCS_LAYER_SIZE, &Cube_DCS_Write_Callback);
Delay_MS(8); // Delay until the entire DCS write is finished
}
 
void Cube_Clear(void) {
int i,j;
for (i = 0; i < CUBE_LAYER_COUNT; i++)