Close

TIM2 routine

A project log for Moto_oiler

Trying to build my own chain lubrication system with blackjack&etc.

zaksignuzaksignu 02/20/2019 at 06:570 Comments

TIM2 fires every 500ms. It has :

Simple explanation of TIM2 cycle - at the random moment  with flow_state = 0. There is 4 possible states :

{
//routine to define input variables
          ADC_measure();
          status_determ();
// on flow_state = 1 we just open mosfets, else find out where curr_tick comes - idle_tick or work_tick
switch (flow_state) 
{
  case 1:
         PB_ODR_bit.ODR0 = 0; 
         PD_ODR_bit.ODR0 = 0;
         curr_tick = 0; 
         idle_state = 1;
  case 0:
        if (idle_state == 1) {  
          PB_ODR_bit.ODR0 = 1; 
          PD_ODR_bit.ODR0 = 1;
                             } 
        if (idle_state == 0) {  
                  if (curr_tick >= work_tick)  
                        {
                        PB_ODR_bit.ODR0 = 1; 
                        PD_ODR_bit.ODR0 = 1; 
                        curr_tick = 0; 
                        idle_state = 1; 
                        }
                  else 
                        {
                        curr_tick++ ;
                        };
                              }
         else  { 
                    if (curr_tick >=idle_tick) 
                               {
                                idle_state = 0; 
                                curr_tick = 0; 
                                PB_ODR_bit.ODR0 = 0; 
                                PD_ODR_bit.ODR0 = 0; 
                               }
                    else      
                               {
                               curr_tick++;
                               }
               };
}  

};

Discussions