#include // #include // #include #include #include // #include // #include // #include /* extern uint8_t usartTxBuffer[APP_USART_TX_BUFFER_SIZE]; extern HAL_UsartDescriptor_t appUsartDescriptor; extern AppState_t appState; extern unsigned int counter_top_tour; extern int security_ils;*/ unsigned int top_tour = 0; unsigned int timer3_overflow = 0; int nb_top = 0; long last_seen_laser = 0; void init_timer3(void) { //Fpwm = f_IO / (prescaler * (1 + TOP)) = 7200 Hz. */ OCR3A = 0; //Motor speed = 0 /* Fast PWM 10bits with TOP=0x03FF */ TCCR3A |= (1< old_time) // { // diff_time = current_time-old_time; // } // else // { // diff_time = (65535 - old_time) + current_time; // } diff_time = current_time - old_time; /* Check if it's not a glitch, ie at least 1 timer3 overflow occured */ /* If it's not a glitch and it's a rising edge, it's the reflector */ // if((TCCR3B&0x40) && ((timer3_overflow - timer3_overflow_old) > 6)) // { // nb_top++; // sprintf(usartTxBuffer,"nb top=%d\r\n\0",nb_top); // WRITE_USART(&appUsartDescriptor,usartTxBuffer,strlen(usartTxBuffer)); // timer3_overflow_old = timer3_overflow; // old_time = current_time; // } /* Invert the edge capture of the interrupt */ if((TCCR3B&0x40)) { TCCR3B &= 0b10111111; } else { TCCR3B |= (1< 5) // { // security_ils = 1; // counter_security_ils = 0; // } // else // { // counter_security_ils++; // } // } } }