//PIC Stuff/Cerebot_32MX7_LED_Cube/ANIMATIONS.c |
---|
2,307 → 2,288 |
#include "ANIMATIONS.h" |
#include "CUBE.h" |
void Animation_Solid_Colors(uint8_t iterations, uint16_t delay_ms) { |
void Animation_Solid_Colors(uint16_t delay_ms) { |
Cube_Set_All(RED); |
Delay_MS(delay_ms); |
Cube_Set_All(GREEN); |
Delay_MS(delay_ms); |
Cube_Set_All(BLUE); |
Delay_MS(delay_ms); |
} |
void Animation_Layer_Alternate(uint16_t delay_ms) { |
uint8_t i; |
for (i = 0; i < iterations; i++) { |
Cube_Set_All(RED); |
Delay_MS(delay_ms); |
Cube_Set_All(GREEN); |
Delay_MS(delay_ms); |
Cube_Set_All(BLUE); |
Delay_MS(delay_ms); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,RED); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,GREEN); |
else |
Cube_Set_Layer(i,BLUE); |
} |
Delay_MS(delay_ms); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,GREEN); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,BLUE); |
else |
Cube_Set_Layer(i,RED); |
} |
Delay_MS(delay_ms); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,BLUE); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,RED); |
else |
Cube_Set_Layer(i,GREEN); |
} |
Delay_MS(delay_ms); |
} |
void Animation_Layer_Alternate(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,z; |
for (z = 0; z < iterations; z++) { |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,RED); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,GREEN); |
else |
Cube_Set_Layer(i,BLUE); |
void Animation_Pixel_Alternate(uint16_t delay_ms) { |
uint8_t i,j,k; |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
Cube_Clear(); |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,RED); |
else if (var % 3 == 1) |
Cube_Set_Pixel(i,j,k,GREEN); |
else |
Cube_Set_Pixel(i,j,k,BLUE); |
} |
} |
Delay_MS(delay_ms); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,GREEN); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,BLUE); |
else |
Cube_Set_Layer(i,RED); |
Cube_Clear(); |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,GREEN); |
else if (var % 3 == 1) |
Cube_Set_Pixel(i,j,k,BLUE); |
else |
Cube_Set_Pixel(i,j,k,RED); |
} |
} |
Delay_MS(delay_ms); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if (i % 3 == 0) |
Cube_Set_Layer(i,BLUE); |
else if (i % 3 == 1) |
Cube_Set_Layer(i,RED); |
else |
Cube_Set_Layer(i,GREEN); |
Cube_Clear(); |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,BLUE); |
else if (var % 3 == 1) |
Cube_Set_Pixel(i,j,k,RED); |
else |
Cube_Set_Pixel(i,j,k,GREEN); |
} |
} |
Delay_MS(delay_ms); |
} |
} |
void Animation_Pixel_Alternate(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,j,k,z; |
for (z = 0; z < iterations; z++) { |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
void Animation_Full_Color_Sweep(uint16_t delay_us) { |
int16_t i; |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(i,0,0); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(0x0FF,i,0); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(i,0x0FF,0); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(0,0x0FF,i); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(i,0x0FF,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(0x0FF,i,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(i,0,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(0,0,i); |
Delay_US(delay_us); |
} |
} |
void Animation_Row_Column_Sweep(uint16_t delay_ms) { |
uint8_t i,j,k,a; |
for (i = 0; i < 3; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
Cube_Clear(); |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,RED); |
else if (var % 3 == 1) |
Cube_Set_Pixel(i,j,k,GREEN); |
else |
Cube_Set_Pixel(i,j,k,BLUE); |
} |
} |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) |
if (i % 3 == 0) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,RED); |
else if (i % 3 == 1) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,GREEN); |
else |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,BLUE); |
Delay_MS(delay_ms); |
} |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
Cube_Clear(); |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,GREEN); |
else if (var % 3 == 1) |
Cube_Set_Pixel(i,j,k,BLUE); |
else |
Cube_Set_Pixel(i,j,k,RED); |
} |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) |
if (i % 3 == 0) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,RED); |
else if (i % 3 == 1) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,GREEN); |
else |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,BLUE); |
Delay_MS(delay_ms); |
} |
for (j = CUBE_LAYER_COUNT; j != 0; j--) { |
Cube_Clear(); |
if (i % 3 == 0) { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,RED); |
} else if (i % 3 == 1) { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,GREEN); |
} else { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,BLUE); |
} |
Delay_MS(delay_ms); |
Cube_Clear(); |
} |
} |
} |
void Animation_Pixel_Sweep(uint16_t delay_ms) { |
uint8_t i,j,k,a; |
for (a = 0; a < 3; a++) { |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
int32_t var = (j * 8) + k; |
if (var % 3 == 0) |
Cube_Set_Pixel(i,j,k,BLUE); |
else if (var % 3 == 1) |
Cube_Clear(); |
if (a % 3 == 0) { |
Cube_Set_Pixel(i,j,k,RED); |
else |
} else if (a % 3 == 1) { |
Cube_Set_Pixel(i,j,k,GREEN); |
} else { |
Cube_Set_Pixel(i,j,k,BLUE); |
} |
Delay_MS(delay_ms); |
} |
} |
Delay_MS(delay_ms); |
} |
} |
} |
void Animation_Full_Color_Sweep(uint8_t iterations, uint16_t delay_us) { |
int16_t i,z; |
for (z = 0; z < iterations; z++) { |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(i,0,0); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(0x0FF,i,0); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(i,0x0FF,0); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(0,0x0FF,i); |
Delay_US(delay_us); |
} |
for (i = 0; i < 0x0FF; i+=2) { |
Cube_Set_All(i,0x0FF,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(0x0FF,i,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(i,0,0x0FF); |
Delay_US(delay_us); |
} |
for (i = 0x0FF; i >= 0; i-=2) { |
Cube_Set_All(0,0,i); |
Delay_US(delay_us); |
} |
} |
} |
void Animation_Row_Column_Sweep(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,j,k,a,z; |
for (z = 0; z < iterations; z++) { |
for (i = 0; i < 3; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
Cube_Clear(); |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) |
if (i % 3 == 0) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,RED); |
else if (i % 3 == 1) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,GREEN); |
else |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,j,k,BLUE); |
Delay_MS(delay_ms); |
void Animation_Pseudo_Random_Colors(uint16_t delay_ms) { |
uint8_t i,j,k; |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
uint32_t a = rand(); |
if (a % 5 == 0) |
Cube_Set_Pixel(i,j,k,RED); |
else if (a % 5 == 1) |
Cube_Set_Pixel(i,j,k,GREEN); |
else if (a % 5 == 2) |
Cube_Set_Pixel(i,j,k,BLUE); |
else if (a % 5 == 3) |
Cube_Set_Pixel(i,j,k,PURPLE); |
else if (a % 5 == 4) |
Cube_Set_Pixel(i,j,k,YELLOW); |
else |
Cube_Set_Pixel(i,j,k,ORANGE); |
} |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
Cube_Clear(); |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) |
if (i % 3 == 0) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,RED); |
else if (i % 3 == 1) |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,GREEN); |
else |
for (a = 0; a < CUBE_LAYER_COUNT; a++) |
Cube_Set_Pixel(a,k,j,BLUE); |
Delay_MS(delay_ms); |
} |
for (j = CUBE_LAYER_COUNT; j != 0; j--) { |
Cube_Clear(); |
if (i % 3 == 0) { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,RED); |
} else if (i % 3 == 1) { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,GREEN); |
} else { |
for (k = 0; k < CUBE_LAYER_COUNT; k++) |
if (k == j) |
Cube_Set_Layer(k,BLUE); |
} |
Delay_MS(delay_ms); |
} |
} |
} |
Delay_MS(delay_ms); |
} |
void Animation_Pixel_Sweep(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,j,k,z,a; |
for (z = 0; z < iterations; z++) { |
for (a = 0; a < 3; a++) { |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
Cube_Clear(); |
if (a % 3 == 0) { |
Cube_Set_Pixel(i,j,k,RED); |
} else if (a % 3 == 1) { |
Cube_Set_Pixel(i,j,k,GREEN); |
} else { |
Cube_Set_Pixel(i,j,k,BLUE); |
} |
Delay_MS(delay_ms); |
} |
} |
void Animation_Random_Colors(uint16_t delay_ms) { |
uint8_t i,j,k; |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
Cube_Set_Pixel(i,j,k,rand()&0x0FF,rand()&0x0FF,rand()&0x0FF); |
} |
} |
} |
Delay_MS(delay_ms); |
} |
void Animation_Pseudo_Random_Colors(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,j,k,z; |
for (z = 0; z < iterations; z++) { |
void Animation_Cube_In_Cube(uint16_t delay_ms) { |
uint8_t x,i,j,k; |
for (x = 0; x < 5; x++) { |
Cube_Clear(); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
uint32_t a = rand(); |
if (a % 5 == 0) |
Cube_Set_Pixel(i,j,k,RED); |
else if (a % 5 == 1) |
if ((x == 0 || x == 4)&&(i == 0 || i == 7)) { |
Cube_Set_Layer(i,RED); |
} else if ((x == 1 || x == 4)&&(i == 1 || i == 6)) { |
for (j = 1; j < CUBE_ROW_COUNT-1; j++) |
for (k = 1; k < CUBE_COLUMN_COUNT-1; k++) |
Cube_Set_Pixel(i,j,k,YELLOW); |
} else if ((x == 2 || x == 4)&&(i == 2 || i == 5)) { |
for (j = 2; j < CUBE_ROW_COUNT-2; j++) |
for (k = 2; k < CUBE_COLUMN_COUNT-2; k++) |
Cube_Set_Pixel(i,j,k,GREEN); |
else if (a % 5 == 2) |
} else if ((x == 3 || x == 4)&&(i == 3 || i == 4)) { |
for (j = 3; j < CUBE_ROW_COUNT-3; j++) |
for (k = 3; k < CUBE_COLUMN_COUNT-3; k++) |
Cube_Set_Pixel(i,j,k,BLUE); |
else if (a % 5 == 3) |
Cube_Set_Pixel(i,j,k,PURPLE); |
else if (a % 5 == 4) |
Cube_Set_Pixel(i,j,k,YELLOW); |
else |
Cube_Set_Pixel(i,j,k,ORANGE); |
} |
} |
} |
Delay_MS(delay_ms); |
} |
} |
void Animation_Random_Colors(uint8_t iterations, uint16_t delay_ms) { |
uint8_t i,j,k,z; |
for (z = 0; z < iterations; z++) { |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
for (j = 0; j < CUBE_ROW_COUNT; j++) { |
for (k = 0; k < CUBE_COLUMN_COUNT; k++) { |
Cube_Set_Pixel(i,j,k,rand()&0x0FF,rand()&0x0FF,rand()&0x0FF); |
if ((x == 0 || x == 4)&&(i > 0 && i < 8)) { |
for (j = 0; j < 8; j++) { |
Cube_Set_Pixel(i,j,0,RED); |
Cube_Set_Pixel(i,j,7,RED); |
Cube_Set_Pixel(i,0,j,RED); |
Cube_Set_Pixel(i,7,j,RED); |
} |
} |
} |
Delay_MS(delay_ms); |
} |
} |
void Animation_Cube_In_Cube(uint8_t iterations, uint16_t delay_ms) { |
uint8_t z,x,i,j,k; |
for (z = 0; z < iterations; z++) { |
for (x = 0; x < 5; x++) { |
Cube_Clear(); |
for (i = 0; i < CUBE_LAYER_COUNT; i++) { |
if ((x == 0 || x == 4)&&(i == 0 || i == 7)) { |
Cube_Set_Layer(i,RED); |
} else if ((x == 1 || x == 4)&&(i == 1 || i == 6)) { |
for (j = 1; j < CUBE_ROW_COUNT-1; j++) |
for (k = 1; k < CUBE_COLUMN_COUNT-1; k++) |
Cube_Set_Pixel(i,j,k,YELLOW); |
} else if ((x == 2 || x == 4)&&(i == 2 || i == 5)) { |
for (j = 2; j < CUBE_ROW_COUNT-2; j++) |
for (k = 2; k < CUBE_COLUMN_COUNT-2; k++) |
Cube_Set_Pixel(i,j,k,GREEN); |
} else if ((x == 3 || x == 4)&&(i == 3 || i == 4)) { |
for (j = 3; j < CUBE_ROW_COUNT-3; j++) |
for (k = 3; k < CUBE_COLUMN_COUNT-3; k++) |
Cube_Set_Pixel(i,j,k,BLUE); |
if ((x == 1 || x == 4)&&(i > 1 && i < 7)) { |
for (j = 1; j < 7; j++) { |
Cube_Set_Pixel(i,j,1,YELLOW); |
Cube_Set_Pixel(i,j,6,YELLOW); |
Cube_Set_Pixel(i,1,j,YELLOW); |
Cube_Set_Pixel(i,6,j,YELLOW); |
} |
if ((x == 0 || x == 4)&&(i > 0 && i < 8)) { |
for (j = 0; j < 8; j++) { |
Cube_Set_Pixel(i,j,0,RED); |
Cube_Set_Pixel(i,j,7,RED); |
Cube_Set_Pixel(i,0,j,RED); |
Cube_Set_Pixel(i,7,j,RED); |
} |
} |
if ((x == 2 || x == 4)&&(i > 2 && i < 6)) { |
for (j = 2; j < 6; j++) { |
Cube_Set_Pixel(i,j,2,GREEN); |
Cube_Set_Pixel(i,j,5,GREEN); |
Cube_Set_Pixel(i,2,j,GREEN); |
Cube_Set_Pixel(i,5,j,GREEN); |
} |
if ((x == 1 || x == 4)&&(i > 1 && i < 7)) { |
for (j = 1; j < 7; j++) { |
Cube_Set_Pixel(i,j,1,YELLOW); |
Cube_Set_Pixel(i,j,6,YELLOW); |
Cube_Set_Pixel(i,1,j,YELLOW); |
Cube_Set_Pixel(i,6,j,YELLOW); |
} |
} |
if ((x == 2 || x == 4)&&(i > 2 && i < 6)) { |
for (j = 2; j < 6; j++) { |
Cube_Set_Pixel(i,j,2,GREEN); |
Cube_Set_Pixel(i,j,5,GREEN); |
Cube_Set_Pixel(i,2,j,GREEN); |
Cube_Set_Pixel(i,5,j,GREEN); |
} |
} |
} |
Delay_MS(delay_ms); |
} |
Delay_MS(delay_ms); |
} |
} |
void Animation_Double_Rotation(uint8_t iterations, uint16_t delay_ms) { |
void Animation_Double_Rotation(uint16_t delay_ms) { |
Cube_Clear(); |
uint8_t i,x,y,z; |
uint8_t x,y,z; |
for (z = 0; z < 3; z++) { |
switch (z % 3) { |
case 0: |
343,11 → 324,9 |
break; |
} |
for (i = 0; i < iterations; i++) { |
for (x = 0; x < 28; x++) { |
Delay_MS(delay_ms); |
Cube_Rotate(0); |
} |
for (x = 0; x < 28; x++) { |
Delay_MS(delay_ms); |
Cube_Rotate(0); |
} |
} |
} |
//PIC Stuff/Cerebot_32MX7_LED_Cube/ANIMATIONS.h |
---|
1,16 → 1,16 |
#ifndef ANIMATIONS_H |
#define ANIMATIONS_H |
void Animation_Solid_Colors(uint8_t iterations, uint16_t delay_ms); |
void Animation_Layer_Alternate(uint8_t iterations, uint16_t delay_ms); |
void Animation_Pixel_Alternate(uint8_t iterations, uint16_t delay_ms); |
void Animation_Full_Color_Sweep(uint8_t iterations, uint16_t delay_us); |
void Animation_Row_Column_Sweep(uint8_t iterations, uint16_t delay_ms); |
void Animation_Pixel_Sweep(uint8_t iterations, uint16_t delay_ms); |
void Animation_Pseudo_Random_Colors(uint8_t iterations,uint16_t delay_ms); |
void Animation_Random_Colors(uint8_t iterations, uint16_t delay_ms); |
void Animation_Cube_In_Cube(uint8_t iterations, uint16_t delay_ms); |
void Animation_Double_Rotation(uint8_t iterations, uint16_t delay_ms); |
void Animation_Solid_Colors(uint16_t delay_ms); |
void Animation_Layer_Alternate(uint16_t delay_ms); |
void Animation_Pixel_Alternate(uint16_t delay_ms); |
void Animation_Full_Color_Sweep(uint16_t delay_us); |
void Animation_Row_Column_Sweep(uint16_t delay_ms); |
void Animation_Pixel_Sweep(uint16_t delay_ms); |
void Animation_Pseudo_Random_Colors(uint16_t delay_ms); |
void Animation_Random_Colors(uint16_t delay_ms); |
void Animation_Cube_In_Cube(uint16_t delay_ms); |
void Animation_Double_Rotation(uint16_t delay_ms); |
#endif /* ANIMATIONS_H */ |
//PIC Stuff/Cerebot_32MX7_LED_Cube/CUBE.h |
---|
5,6 → 5,7 |
#define CUBE_ROW_COUNT 8 |
#define CUBE_COLUMN_COUNT 8 |
#define CUBE_LAYER_COUNT 8 |
#define CUBE_PIXELS 512 |
#define CUBE_ROTATIONS 7 |
#define GCS_REG_SIZE 36 |
//PIC Stuff/Cerebot_32MX7_LED_Cube/I2C1.c |
---|
111,7 → 111,7 |
void __ISR(_I2C_1_VECTOR, ipl5) __I2C_1_Interrupt_Handler(void) { |
// Bus collision event |
if (IFS0bits.I2C1BIF) { |
// This should be handled at some point |
// TODO: Handle bus collision events here |
IFS0CLR = 0x20000000; |
} |
// Slave event |
//PIC Stuff/Cerebot_32MX7_LED_Cube/README.txt |
---|
1,10 → 1,13 |
Here lies some random pieces of information that may make it easier to understand the code base |
KNOWN ISSUES: |
Cube is occasionally flickering to ~60Hz. Need to figure out why. |
PERIPHERAL USAGE: |
SPI1 - Used by the cube code to send data to the ube |
SPI4 - Unused |
I2C1 - Used by the controller code |
TIMER2 - Used by PWM2 |
TIMER4 - Used by the cube code for the overlay rotation interrupt |
TIMER5 - Used by the cube code for the update layer interrupt |
UART1 - Used by the cube code for reading in frame data |
15,8 → 18,8 |
SPI1 - Priority 5, Subpriority 1 |
SPI4 - Priority 6, Subpriority 2 |
I2C1 - Priority 5, Subpriority 1 |
TIMER4 - Priority 3, Subpriority 1 |
TIMER5 - Priority 3, Subpriority 1 |
TIMER5 - Priority 3, Subpriority 1 |
TIMER4 - Priority 1, Subpriority 1 |
UART1 - Priority 2, Subpriority 1 |
//PIC Stuff/Cerebot_32MX7_LED_Cube/TIMER4.c |
---|
3,36 → 3,31 |
static TIMER4_DATA *timer_data_ptr; |
void TIMER4_Init(TIMER4_DATA *data, void (*callback)(void), uint32_t time_us) { |
void TIMER4_Init(TIMER4_DATA *data, void (*callback_ms)(void), |
void (*callback_div)(void), uint32_t time_ms) { |
if (data != NULL) // if ptr is null, use existing data |
timer_data_ptr = data; |
timer_data_ptr->callback_function = callback; |
// The first callback function will be executed every ms |
timer_data_ptr->callback_function_1 = callback_ms; |
// The second callback function will be executed at the multiplier specified |
timer_data_ptr->callback_function_2 = callback_div; |
timer_data_ptr->divider = time_ms; |
timer_data_ptr->count = 0; |
INTDisableInterrupts(); |
T4CON = 0x0; |
// PR4 is 16 bits wide, so we need to determine what pre-scaler to use |
uint16_t time; |
if (time_us < 13107) { |
time = 5 * time_us; |
T4CONSET = 0x0040; // Prescaler at 1:16 |
} else if (time_us < 26214) { |
time = 2.5 * time_us; |
T4CONSET = 0x0050; // Prescaler at 1:32 |
} else if (time_us < 52428) { |
time = 1.25 * time_us; |
T4CONSET = 0x0060; // Prescaler at 1:64 |
} else { |
time = 0.3125 * time_us; // Minimum time_us of 209712 |
T4CONSET = 0x0070; // Prescaler at 1:256 |
} |
// Set timer to trigger every millisecond |
uint16_t time = 5000; |
T4CONSET = 0x0040; // Prescaler at 1:16 |
Nop(); |
TMR4 = 0x0; // Clear timer register |
PR4 = time; // Load period register |
IPC4SET = 0x0000000D; // Set priority level = 3, sub-priority level = 1 |
IPC4SET = 0x00000005; // Set priority level = 1, sub-priority level = 1 |
IFS0CLR = 0x00010000; // Clear timer interrupt flag |
IEC0SET = 0x00010000; // Enable timer interrupt |
49,7 → 44,16 |
void __ISR(_TIMER_4_VECTOR, ipl4) __TIMER_4_Interrupt_Handler(void) { |
// Call the saved callback function |
(*timer_data_ptr->callback_function)(); |
(*timer_data_ptr->callback_function_1)(); |
if (timer_data_ptr->divider != 0 && timer_data_ptr->callback_function_2 != NULL) { |
if (timer_data_ptr->count == timer_data_ptr->divider) { |
(*timer_data_ptr->callback_function_2)(); |
timer_data_ptr->count = 0; |
} else { |
timer_data_ptr->count++; |
} |
} |
IFS0CLR = 0x00010000; // Clear the timer interrupt flag |
} |
//PIC Stuff/Cerebot_32MX7_LED_Cube/TIMER4.h |
---|
2,10 → 2,14 |
#define TIMER4_H |
typedef struct { |
void (*callback_function)(void); |
void (*callback_function_1)(void); |
void (*callback_function_2)(void); |
uint32_t divider; |
uint32_t count; |
} TIMER4_DATA; |
void TIMER4_Init(TIMER4_DATA *data, void (*callback)(void), uint32_t time_us); |
void TIMER4_Init(TIMER4_DATA *data, void (*callback_ms)(void), |
void (*callback_div)(void), uint32_t time_ms); |
void TIMER4_Start(void); |
void TIMER4_Stop(void); |
//PIC Stuff/Cerebot_32MX7_LED_Cube/TIMER5.c |
---|
24,7 → 24,7 |
} else if (time_us < 52428) { |
time = 1.25 * time_us; |
T5CONSET = 0x0060; // Prescaler at 1:64 |
} else { // Minimum time_us of 209712 |
} else { // Maximum time_us of 209712 |
time = 0.3125 * time_us; |
T5CONSET = 0x0070; // Prescaler at 1:256 |
} |
//PIC Stuff/Cerebot_32MX7_LED_Cube/defines.h |
---|
33,7 → 33,27 |
#define LED4_TRIS TRISGbits.TRISG15 |
#define LED4_LAT LATGbits.LATG15 |
// Reset conditions |
#define RESET_POR 0x01 // Power on reset |
#define RESET_BOR 0x02 // Brown out reset |
#define RESET_SWR 0x03 // Software reset |
#define RESET_WDT 0x04 // Watchdog timer reset |
#define RESET_PIN 0x05 // MCLR pin reset |
#define RESET_CFG 0x06 // Config mismatch reset |
// Board 'modes' (idle/games/etc) |
#define BOARD_MODE_IDLE 0x01 |
#define BOARD_MODE_SNAKE 0x02 |
#define BOARD_MODE_TRON 0x03 |
typedef struct { |
uint8_t cube_mode; |
} BOARD_STATE; |
void Delay_MS(uint32_t delay_ms); |
void Delay_US(uint32_t delay_us); |
uint8_t Get_Reset_Condition(void); |
void Reset_Board(void); |
void Idle_Animation_Sequence(void); |
#endif /* DEFINES_H */ |
//PIC Stuff/Cerebot_32MX7_LED_Cube/main.c |
---|
20,7 → 20,7 |
#pragma config FVBUSONIO = OFF // USB VBUS ON Selection |
#pragma config FUSBIDIO = OFF // USB USID Selection |
/* Other Peripheral Device Settings */ |
#pragma config FWDTEN = ON // Watchdog Timer Enable |
#pragma config FWDTEN = OFF // Watchdog Timer Enable |
#pragma config WDTPS = PS1048576 // Watchdog Timer Postscaler (1048.576s) |
#pragma config FSRSSEL = PRIORITY_7 // SRS Interrupt Priority |
#pragma config FCANIO = OFF // CAN I/O Pin Select (default/alternate) |
45,6 → 45,8 |
#include "CUBE.h" |
#include "BTN.h" |
#include "ANIMATIONS.h" |
#include "CONTROLLERS.h" |
#include "SNAKE.h" |
void BTN1_Interrupt(void); |
void BTN2_Interrupt(void); |
66,10 → 68,47 |
while ((uint32_t)(ReadCoreTimer() - startTime) < delay) {}; |
} |
int32_t main() { |
uint8_t Get_Reset_Condition(void) { |
uint8_t ret = 0; |
if (RCONbits.POR && RCONbits.BOR) |
ret = RESET_POR; |
else if (RCONbits.BOR) |
ret = RESET_BOR; |
else if (RCONbits.EXTR) |
ret = RESET_PIN; |
else if (RCONbits.SWR) |
ret = RESET_SWR; |
else if (RCONbits.CMR) |
ret = RESET_CFG; |
else if (RCONbits.WDTO) |
ret = RESET_WDT; |
// Clear the RCON register |
RCON = 0x0; |
return ret; |
} |
void Reset_Board(void) { |
// Executes a software reset |
INTDisableInterrupts(); |
SYSKEY = 0x00000000; // Write invalid key to force lock |
SYSKEY = 0xAA996655; // Write key1 to SYSKEY |
SYSKEY = 0x556699AA; // Write key2 to SYSKEY |
/* OSCCON is now unlocked */ |
// Set SWRST bit to arm reset |
RSWRSTSET = 1; |
// Read RSWRST register to trigger reset |
uint32_t dummy; |
dummy = RSWRST; |
// Prevent any unwanted code execution until reset occurs |
while(1); |
} |
void main() { |
// WARNING!! THIS BOARD WILL RESET EVERY 1048.576s DUE TO THE WDT!! |
/* -------------------- BEGIN INITIALIZATION --------------------- */ |
/* Configure the target for maximum performance at 80 MHz. */ |
// Configure the target for maximum performance at 80 MHz. |
// Note: This overrides the peripheral clock to 80Mhz regardless of config |
SYSTEMConfigPerformance(CPU_CLOCK_HZ); |
79,6 → 118,11 |
// Set all analog I/O pins to digital |
AD1PCFGSET = 0xFFFF; |
// Enable the watchdog timer with windowed mode disabled |
// WDT prescaler set to 1048576 (1048.576s) (see config bits) |
WDTCON = 0x00008000; |
// Configure onboard LEDs |
LED1_TRIS = 0; |
LED2_TRIS = 0; |
LED3_TRIS = 0; |
88,6 → 132,9 |
LED3_LAT = 0; |
LED4_LAT = 0; |
// Initialize a persistent operational state machine |
BOARD_STATE op_state __attribute__((persistent)); |
// Initialize the SPI1 module |
SPI1_DATA spi_1_data; |
SPI1_Init(&spi_1_data, NULL); |
96,6 → 143,7 |
SPI4_DATA spi_4_data; |
SPI4_Init(&spi_4_data); |
// Initialize the I2C1 module |
I2C1_DATA i2c_1_data; |
I2C1_Init(&i2c_1_data, I2C1_400KHZ, 0x20); |
105,7 → 153,6 |
// Initializs the PWM2 output to 20MHz |
PWM2_Init(); |
PWM2_Start(); |
// Initialize the cube variables |
CUBE_DATA cube_data; |
115,18 → 162,62 |
// 2083 = 60Hz, 500 = 250Hz, 250 = 500Hz |
TIMER5_DATA timer_5_data; |
TIMER5_Init(&timer_5_data, &Cube_Timer_Interrupt, 500); |
TIMER5_Start(); |
// Start the overlay rotation interrupt |
// Start the controller polling and overlay rotation interrupt |
TIMER4_DATA timer_4_data; |
TIMER4_Init(&timer_4_data, &Cube_Text_Interrupt, 90000); |
TIMER4_Init(&timer_4_data, &Controller_Update, NULL, 0); |
// Process button inputs |
BTN_DATA btn_data; |
BTN_Init(&btn_data, &BTN1_Interrupt, &BTN2_Interrupt, &BTN3_Interrupt); |
BTN_Init(&btn_data, &BTN1_Interrupt, &BTN2_Interrupt, NULL); |
// Begin display |
CONTROLLER_DATA ctrl_data; |
Controller_Init(&ctrl_data, &op_state, &Controller_Set_Leds); |
// Determine what to do at this point. We either choose to idle (on POR) |
// or go into a mode specified prior to the software reset event |
uint8_t last_reset = Get_Reset_Condition(); |
switch (last_reset) { |
// If our last reset was a POR/BOR/PIN/WDT/CFG, go into idle mode |
case RESET_POR: |
case RESET_BOR: |
case RESET_PIN: |
case RESET_WDT: |
case RESET_CFG: |
op_state.cube_mode = BOARD_MODE_IDLE; |
break; |
} |
PWM2_Start(); |
TIMER5_Start(); |
TIMER4_Start(); |
/* -------------------- END OF INITIALIZATION -------------------- */ |
/* ------------------------ BEGIN DISPLAY ------------------------ */ |
switch (op_state.cube_mode) { |
case BOARD_MODE_SNAKE: |
LED3_LAT = 1; |
LED4_LAT = 0; |
SNAKE_DATA snake_data; |
Snake_Init(&snake_data); |
while(1); |
break; |
case BOARD_MODE_TRON: |
LED3_LAT = 0; |
LED4_LAT = 1; |
while(1); |
break; |
case BOARD_MODE_IDLE: |
default: |
Idle_Animation_Sequence(); |
break; |
} |
} |
void Idle_Animation_Sequence(void) { |
// Cube_Set_All(RED); |
// Delay_MS(2000); |
// Cube_Set_All(GREEN); |
133,8 → 224,18 |
// Delay_MS(2000); |
// Cube_Set_All(BLUE); |
// Delay_MS(2000); |
// Animation_Pseudo_Random_Colors(10,300); |
Animation_Pseudo_Random_Colors(200); |
Animation_Pseudo_Random_Colors(200); |
Animation_Pseudo_Random_Colors(200); |
Animation_Pseudo_Random_Colors(200); |
Animation_Pseudo_Random_Colors(200); |
Animation_Pseudo_Random_Colors(200); |
// Start the scrolling text |
TIMER4_Stop(); |
TIMER4_Init(NULL, &Controller_Update, &Cube_Text_Interrupt, 100); |
TIMER4_Start(); |
// int8_t start_text[] = "Cube Initialized\r\n"; |
// UART1_Write(start_text, 18); |
141,63 → 242,25 |
// Set the overlay text |
uint8_t text_string[] = "Welcome to the AMP Lab "; |
Cube_Text_Init(text_string, 27, 0xFF, 0xFF, 0xFF); |
TIMER4_Start(); |
// Loop through some preset animations |
uint8_t buffer1[2]; |
uint8_t buffer2[2]; |
uint8_t result, length; |
while(1) { |
I2C1_Master_Restart(0x24, 0xA, 1); |
do { |
result = I2C1_Get_Status(); |
} while (!result); |
if (result == I2C1_RECV_OK) { |
LED1_LAT = 1; |
length = I2C1_Read_Buffer(buffer1); |
buffer1[1] = ~buffer1[0]; |
buffer1[0] = 0xB; |
} else { |
LED1_LAT = 0; |
} |
// Animation_Solid_Colors(300); |
// Animation_Layer_Alternate(300); |
// Animation_Pixel_Alternate(200); |
// Animation_Full_Color_Sweep(1000); |
Animation_Row_Column_Sweep(40); |
Animation_Row_Column_Sweep(40); |
Animation_Row_Column_Sweep(40); |
Animation_Cube_In_Cube(300); |
Animation_Cube_In_Cube(300); |
Animation_Cube_In_Cube(300); |
Animation_Double_Rotation(40); |
Animation_Double_Rotation(40); |
Animation_Double_Rotation(40); |
// Animation_Pseudo_Random_Colors(300); |
// Animation_Random_Colors(300); |
I2C1_Master_Restart(0x25, 0xA, 1); |
do { |
result = I2C1_Get_Status(); |
} while (!result); |
if (result == I2C1_RECV_OK) { |
LED2_LAT = 1; |
length = I2C1_Read_Buffer(buffer2); |
buffer2[1] = ~buffer2[0]; |
buffer2[0] = 0xB; |
} else { |
LED2_LAT = 0; |
} |
I2C1_Master_Send(0x24, buffer1, 2); |
do { |
result = I2C1_Get_Status(); |
} while (!result); |
I2C1_Master_Send(0x25, buffer2, 2); |
do { |
result = I2C1_Get_Status(); |
} while (!result); |
Delay_MS(1); |
// Animation_Solid_Colors(2,300); |
// Animation_Layer_Alternate(2,300); |
// Animation_Pixel_Alternate(1,200); |
// Animation_Full_Color_Sweep(2,1000); |
// Animation_Row_Column_Sweep(2,40); |
// Animation_Cube_In_Cube(4,300); |
// Animation_Double_Rotation(2,40); |
// Animation_Pseudo_Random_Colors(10,300); |
// Animation_Random_Colors(10,300); |
// ClearWDT(); // Clear the WDT if we dont want the board to reset |
} |
} |
261,27 → 324,27 |
TIMER5_Start(); |
} |
// Function call on button 3 press to change text scroll speed |
void BTN3_Interrupt(void) { |
static uint8_t state; |
state = (state == 4) ? 0 : state + 1; |
TIMER4_Stop(); |
switch (state) { |
case 0: |
TIMER4_Init(NULL, &Cube_Text_Interrupt, 209712); |
break; |
case 1: |
TIMER4_Init(NULL, &Cube_Text_Interrupt, 180000); |
break; |
case 2: |
TIMER4_Init(NULL, &Cube_Text_Interrupt, 150000); |
break; |
case 3: |
TIMER4_Init(NULL, &Cube_Text_Interrupt, 120000); |
break; |
case 4: |
TIMER4_Init(NULL, &Cube_Text_Interrupt, 90000); |
break; |
} |
TIMER4_Start(); |
} |
//// Function call on button 3 press to change text scroll speed |
//void BTN3_Interrupt(void) { |
// static uint8_t state; |
// state = (state == 4) ? 0 : state + 1; |
// TIMER4_Stop(); |
// switch (state) { |
// case 0: |
// TIMER4_Init(NULL, &Cube_Text_Interrupt, 209712); |
// break; |
// case 1: |
// TIMER4_Init(NULL, &Cube_Text_Interrupt, 180000); |
// break; |
// case 2: |
// TIMER4_Init(NULL, &Cube_Text_Interrupt, 150000); |
// break; |
// case 3: |
// TIMER4_Init(NULL, &Cube_Text_Interrupt, 120000); |
// break; |
// case 4: |
// TIMER4_Init(NULL, &Cube_Text_Interrupt, 90000); |
// break; |
// } |
// TIMER4_Start(); |
//} |
//PIC Stuff/Cerebot_32MX7_LED_Cube/nbproject/Makefile-default.mk |
---|
45,17 → 45,17 |
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} |
# Source Files Quoted if spaced |
SOURCEFILES_QUOTED_IF_SPACED=main.c SPI1.c TIMER5.c CUBE.c PWM2.c BTN.c TIMER4.c UART1.c SPI4.c ANIMATIONS.c I2C1.c |
SOURCEFILES_QUOTED_IF_SPACED=main.c SPI1.c TIMER5.c CUBE.c PWM2.c BTN.c TIMER4.c UART1.c SPI4.c ANIMATIONS.c I2C1.c CONTROLLERS.c SNAKE.c |
# Object Files Quoted if spaced |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/SPI1.o ${OBJECTDIR}/TIMER5.o ${OBJECTDIR}/CUBE.o ${OBJECTDIR}/PWM2.o ${OBJECTDIR}/BTN.o ${OBJECTDIR}/TIMER4.o ${OBJECTDIR}/UART1.o ${OBJECTDIR}/SPI4.o ${OBJECTDIR}/ANIMATIONS.o ${OBJECTDIR}/I2C1.o |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/SPI1.o.d ${OBJECTDIR}/TIMER5.o.d ${OBJECTDIR}/CUBE.o.d ${OBJECTDIR}/PWM2.o.d ${OBJECTDIR}/BTN.o.d ${OBJECTDIR}/TIMER4.o.d ${OBJECTDIR}/UART1.o.d ${OBJECTDIR}/SPI4.o.d ${OBJECTDIR}/ANIMATIONS.o.d ${OBJECTDIR}/I2C1.o.d |
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/SPI1.o ${OBJECTDIR}/TIMER5.o ${OBJECTDIR}/CUBE.o ${OBJECTDIR}/PWM2.o ${OBJECTDIR}/BTN.o ${OBJECTDIR}/TIMER4.o ${OBJECTDIR}/UART1.o ${OBJECTDIR}/SPI4.o ${OBJECTDIR}/ANIMATIONS.o ${OBJECTDIR}/I2C1.o ${OBJECTDIR}/CONTROLLERS.o ${OBJECTDIR}/SNAKE.o |
POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/SPI1.o.d ${OBJECTDIR}/TIMER5.o.d ${OBJECTDIR}/CUBE.o.d ${OBJECTDIR}/PWM2.o.d ${OBJECTDIR}/BTN.o.d ${OBJECTDIR}/TIMER4.o.d ${OBJECTDIR}/UART1.o.d ${OBJECTDIR}/SPI4.o.d ${OBJECTDIR}/ANIMATIONS.o.d ${OBJECTDIR}/I2C1.o.d ${OBJECTDIR}/CONTROLLERS.o.d ${OBJECTDIR}/SNAKE.o.d |
# Object Files |
OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/SPI1.o ${OBJECTDIR}/TIMER5.o ${OBJECTDIR}/CUBE.o ${OBJECTDIR}/PWM2.o ${OBJECTDIR}/BTN.o ${OBJECTDIR}/TIMER4.o ${OBJECTDIR}/UART1.o ${OBJECTDIR}/SPI4.o ${OBJECTDIR}/ANIMATIONS.o ${OBJECTDIR}/I2C1.o |
OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/SPI1.o ${OBJECTDIR}/TIMER5.o ${OBJECTDIR}/CUBE.o ${OBJECTDIR}/PWM2.o ${OBJECTDIR}/BTN.o ${OBJECTDIR}/TIMER4.o ${OBJECTDIR}/UART1.o ${OBJECTDIR}/SPI4.o ${OBJECTDIR}/ANIMATIONS.o ${OBJECTDIR}/I2C1.o ${OBJECTDIR}/CONTROLLERS.o ${OBJECTDIR}/SNAKE.o |
# Source Files |
SOURCEFILES=main.c SPI1.c TIMER5.c CUBE.c PWM2.c BTN.c TIMER4.c UART1.c SPI4.c ANIMATIONS.c I2C1.c |
SOURCEFILES=main.c SPI1.c TIMER5.c CUBE.c PWM2.c BTN.c TIMER4.c UART1.c SPI4.c ANIMATIONS.c I2C1.c CONTROLLERS.c SNAKE.c |
CFLAGS= |
157,6 → 157,18 |
@${RM} ${OBJECTDIR}/I2C1.o |
@${FIXDEPS} "${OBJECTDIR}/I2C1.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/I2C1.o.d" -o ${OBJECTDIR}/I2C1.o I2C1.c |
${OBJECTDIR}/CONTROLLERS.o: CONTROLLERS.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/CONTROLLERS.o.d |
@${RM} ${OBJECTDIR}/CONTROLLERS.o |
@${FIXDEPS} "${OBJECTDIR}/CONTROLLERS.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/CONTROLLERS.o.d" -o ${OBJECTDIR}/CONTROLLERS.o CONTROLLERS.c |
${OBJECTDIR}/SNAKE.o: SNAKE.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/SNAKE.o.d |
@${RM} ${OBJECTDIR}/SNAKE.o |
@${FIXDEPS} "${OBJECTDIR}/SNAKE.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/SNAKE.o.d" -o ${OBJECTDIR}/SNAKE.o SNAKE.c |
else |
${OBJECTDIR}/main.o: main.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
224,6 → 236,18 |
@${RM} ${OBJECTDIR}/I2C1.o |
@${FIXDEPS} "${OBJECTDIR}/I2C1.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/I2C1.o.d" -o ${OBJECTDIR}/I2C1.o I2C1.c |
${OBJECTDIR}/CONTROLLERS.o: CONTROLLERS.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/CONTROLLERS.o.d |
@${RM} ${OBJECTDIR}/CONTROLLERS.o |
@${FIXDEPS} "${OBJECTDIR}/CONTROLLERS.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/CONTROLLERS.o.d" -o ${OBJECTDIR}/CONTROLLERS.o CONTROLLERS.c |
${OBJECTDIR}/SNAKE.o: SNAKE.c nbproject/Makefile-${CND_CONF}.mk |
@${MKDIR} ${OBJECTDIR} |
@${RM} ${OBJECTDIR}/SNAKE.o.d |
@${RM} ${OBJECTDIR}/SNAKE.o |
@${FIXDEPS} "${OBJECTDIR}/SNAKE.o.d" $(SILENT) -rsi ${MP_CC_DIR}../ -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -O1 -funroll-loops -MMD -MF "${OBJECTDIR}/SNAKE.o.d" -o ${OBJECTDIR}/SNAKE.o SNAKE.c |
endif |
# ------------------------------------------------------------------------------------ |
//PIC Stuff/Cerebot_32MX7_LED_Cube/nbproject/Makefile-genesis.properties |
---|
1,5 → 1,5 |
# |
#Wed Dec 11 18:33:39 EST 2013 |
#Thu Dec 12 00:30:32 EST 2013 |
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a7430524a414be59f5ce2a8f8797db6d |
default.languagetoolchain.dir=C\:\\Program Files (x86)\\Microchip\\xc32\\v1.21\\bin |
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331 |
//PIC Stuff/Cerebot_32MX7_LED_Cube/nbproject/configurations.xml |
---|
16,6 → 16,8 |
<itemPath>SPI4.h</itemPath> |
<itemPath>ANIMATIONS.h</itemPath> |
<itemPath>I2C1.h</itemPath> |
<itemPath>CONTROLLERS.h</itemPath> |
<itemPath>SNAKE.h</itemPath> |
</logicalFolder> |
<logicalFolder name="LinkerScript" |
displayName="Linker Files" |
35,6 → 37,8 |
<itemPath>SPI4.c</itemPath> |
<itemPath>ANIMATIONS.c</itemPath> |
<itemPath>I2C1.c</itemPath> |
<itemPath>CONTROLLERS.c</itemPath> |
<itemPath>SNAKE.c</itemPath> |
</logicalFolder> |
<logicalFolder name="ExternalFiles" |
displayName="Important Files" |