void EXTI15_10_IRQHandler(void) { /* Make sure that interrupt flag is set */ if (EXTI_GetITStatus(EXTI_Line11) != RESET) { /* Do your stuff when PB12 is changed */ finiteStateMachine(11); /* Clear interrupt flag */ EXTI_ClearITPendingBit(EXTI_Line11); } }
/* Handle PB12 interrupt */ void EXTI9_5_IRQHandler(void) { /* Make sure that interrupt flag is set */ if (EXTI_GetITStatus(EXTI_Line8) != RESET) { /* Do your stuff when PC9 is changed */ finiteStateMachine(8); /* Clear interrupt flag */ EXTI_ClearITPendingBit(EXTI_Line8); } if (EXTI_GetITStatus(EXTI_Line9) != RESET) { /* Do your stuff when PC9 is changed */ finiteStateMachine(9); /* Clear interrupt flag */ EXTI_ClearITPendingBit(EXTI_Line9); } if (EXTI_GetITStatus(EXTI_Line5) != RESET) { /* Do your stuff when PC9 is changed */ finiteStateMachine(5); /* Clear interrupt flag */ EXTI_ClearITPendingBit(EXTI_Line5); } }
/** * @brief main loop for AVR chip * */ int main(void) { // ==== do initializations!! === initRBELib(); // allows printf + more to work debugUSARTInit(OUR_BAUD_RATE); // intialize USART communications printf("Starting...\n\r"); // so we know if we freeze in setup initSPI(); // initialize SPI communications initArm(); // initialize the arm' stopConveyor(); // initialize servo positions openGripper(); // ==== end initializations ==== printf("I am alive... Looking for blocks to pickup.\n\r"); // ===== main loop ==== while (1) { finiteStateMachine(); // run FSM to determine what arm needs to do serviceArm(); // allow arm to react to changes and service PID if needed } return 0; }