90,14 → 90,14 |
} |
|
// Initialize a persistent operational state machine |
static BOARD_STATE op_state __attribute__((persistent)); |
volatile static uint8_t op_state __attribute__((persistent)); |
|
uint8_t Get_Board_State(void) { |
return op_state.cube_mode; |
return op_state; |
} |
|
void Reset_Board(uint8_t next_state) { |
op_state.cube_mode = next_state; |
op_state = next_state; |
|
// Executes a software reset |
INTDisableInterrupts(); |
143,10 → 143,6 |
LED3_LAT = 0; |
LED4_LAT = 0; |
|
// Initialize the Ethernet module |
ETH_DATA eth_data; |
ETH_Init(ð_data, NULL, &Cube_Ethernet_Frame_In); |
|
// Initialize the SPI1 module |
SPI1_DATA spi_1_data; |
SPI1_Init(&spi_1_data, NULL); |
159,9 → 155,9 |
I2C1_DATA i2c_1_data; |
I2C1_Init(&i2c_1_data, I2C1_400KHZ, 0x20); |
|
// Initialize the UART1 module |
UART1_DATA uart_data; |
UART1_Init(&uart_data, &Cube_Data_In); |
// // Initialize the UART1 module |
// UART1_DATA uart_data; |
// UART1_Init(&uart_data, &Cube_Data_In); |
|
// Initializs the PWM2 output to 20MHz |
PWM2_Init(); |
178,6 → 174,7 |
// Start the controller polling and overlay rotation interrupt |
TIMER4_DATA timer_4_data; |
TIMER4_Init(&timer_4_data, &Controller_Update, NULL, 0); |
// TIMER4_Init(&timer_4_data, NULL, NULL, 0); |
|
// Process button inputs |
BTN_DATA btn_data; |
186,6 → 183,10 |
// Initialize controllers |
CONTROLLER_DATA ctrl_data; |
Controller_Init(&ctrl_data, NULL); |
|
// Initialize the Ethernet module |
ETH_DATA eth_data; |
ETH_Init(ð_data, NULL, &Cube_Ethernet_Frame_In); |
|
SNAKE_DATA snake_data; |
TRON_DATA tron_data; |
196,7 → 197,7 |
if (last_reset == RESET_POR || last_reset == RESET_BOR || |
last_reset == RESET_PIN || last_reset == RESET_WDT || |
last_reset == RESET_CFG) { |
op_state.cube_mode = BOARD_MODE_IDLE; |
op_state = BOARD_MODE_IDLE; |
} |
|
PWM2_Start(); |
206,7 → 207,10 |
/* -------------------- END OF INITIALIZATION -------------------- */ |
/* ------------------------ BEGIN DISPLAY ------------------------ */ |
|
switch (op_state.cube_mode) { |
switch (op_state) { |
case BOARD_MODE_IDLE: |
Idle_Animation_Sequence(); |
break; |
case BOARD_MODE_SNAKE:; |
Controller_Init(&ctrl_data, &Snake_Update_Direction); |
Snake_Init(&snake_data); |
218,14 → 222,13 |
Tron_Main(); |
break; |
case BOARD_MODE_ETHERNET: |
TIMER4_Stop(); |
while(1); |
break; |
case BOARD_MODE_IDLE: |
default: |
Idle_Animation_Sequence(); |
break; |
} |
|
while(1); |
|
} |
|
void Idle_Animation_Sequence(void) { |