Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 273 → Rev 275

/PIC Stuff/PICX_16F1829_Controller/main.c
75,6 → 75,7
}
 
BTN_STATUS btns;
LED_VALUES leds = {0x00};
 
int main(void) {
uint8_t buffer[32];
104,7 → 105,7
i2c_slave_addr = Read_Address();
 
// Delay a bit to allow I2C lines to stabilize
__delay_ms(1);
__delay_ms(10);
 
// Initialize I2C1 in slave mode
I2C1_DATA i2c1_data;
114,7 → 115,7
// Initialize I2C2 in master mode
I2C2_DATA i2c2_data;
I2C2_Init(&i2c2_data);
I2C2_Configure_Master(I2C_400KHZ);
I2C2_Configure_Master(I2C_1MHZ);
 
// Initialize interrupts
Interrupt_Init();
123,19 → 124,14
MCP23009_Init(&btns);
MCP23009_Query();
 
LED_VALUES leds = {0x00};
TLC59116_Init();
// TLC59116_Write_All(&leds);
 
if (op_state == OP_STATE_IDLE) {
IO_IOC_Enable();
// IO_IOC_Enable();
Idle_Animation();
} else if (op_state == OP_STATE_ACTIVE) {
while (1) {
__delay_ms(1);
// Read value of buttons
MCP23009_Query();
 
// Check if an I2C message was received
result = I2C1_Get_Status();
if (result) {
142,17 → 138,47
length = I2C1_Read_Buffer(buffer);
if (length == 1 && buffer[0] == CMD_RESET) {
Reset_Board(OP_STATE_IDLE);
} else if (length == 1 && buffer[0] == CMD_ACTIVE) {
Reset_Board(OP_STATE_ACTIVE);
} else if (length == 17 && buffer[0] == CMD_SET_LEDS) {
for (i = 0; i < 16; i++) {
leds.w[i] = buffer[i+1];
leds.w[i] = buffer[i + 1];
}
TLC59116_Write_All(&leds);
}
}
 
I2C2_Master_Restart(MCP23009_ADDR, MCP23009_GPIOA, 1);
do {
result = I2C2_Get_Status();
} while (!result);
length = I2C2_Read_Buffer(buffer);
btns.w = buffer[0];
}
}
}
 
void Check_I2C(void) {
uint8_t buffer[32];
uint8_t result, length, i;
 
// Check if an I2C message was received
result = I2C1_Get_Status();
if (result) {
length = I2C1_Read_Buffer(buffer);
if (length == 1 && buffer[0] == CMD_RESET) {
Reset_Board(OP_STATE_IDLE);
} else if (length == 1 && buffer[0] == CMD_ACTIVE) {
Reset_Board(OP_STATE_ACTIVE);
} else if (length == 17 && buffer[0] == CMD_SET_LEDS) {
for (i = 0; i < 16; i++) {
leds.w[i] = buffer[i + 1];
}
TLC59116_Write_All(&leds);
}
}
}
 
void Idle_Animation(void) {
LED_VALUES leds = {0};
uint8_t led_direction_bar[8] = {1,0,0,0,0,0,0,0};
168,6 → 194,9
while (1) {
 
// Check to see if a new message was received
Check_I2C();
 
// Update the LEDs in the middle section
for (i = 0; i < 8; i++) {
// Change the LED brightness depending on its direction
240,5 → 269,4
// Delay a bit to slow down the animation
__delay_ms(1);
}
 
}