Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.09 KB | None | 0 0
  1. static void encoder_task(void *pvParameters);
  2. static void encoder_task(void *pvParameters)
  3. {
  4.     uint8_t state=0;
  5.     //maszyna stanow pokretla zalezna od pinow Encoder_left i Encoder_right
  6.    
  7.     uint8_t state_sw=0;
  8.     //state_sw=0 --- przycisk zwolniony
  9.     //state_sw=1 --- przycisk wcisniety
  10.  
  11.     uint8_t obrot=0;
  12.     //obrot=0  ---  obrot w lewo
  13.     //obrot=1  ---  obrot w prawo
  14.    
  15.     // {tymczasowo} przyciski SW na plytce
  16.     // 0 -> przycisk zwolniony
  17.     // 1 -> przycisk wcisniety
  18.     uint8_t state_sw1=0;
  19.     uint8_t state_sw2=0;
  20.  
  21.     for( ;; )
  22.     {      
  23.          vTaskDelay(1);
  24.        
  25.         //////////////////////////////////
  26.         // obsluga przycisku enkodera
  27.         //////////////////////////////////     
  28.         if (HAL_GPIO_ReadPin(ENCODER_SW_Port,ENCODER_SW)==0)
  29.         {
  30.             vTaskDelay(60/portTICK_RATE_MS);
  31.             if (HAL_GPIO_ReadPin(ENCODER_SW_Port,ENCODER_SW)==0)
  32.             {
  33.                 if (state_sw==0)
  34.                 {
  35.                     state_sw=1;
  36.                     xSemaphoreGive(encoder_sw);
  37.                 }              
  38.             }                      
  39.         }
  40.         else
  41.             state_sw=0;
  42.         ///////////////////////////////////////////////////////
  43.        
  44.        
  45. //      //////////////////////////////////////////////////////
  46. //      //{tymczasowo} oblsuga przyciskow SW3 SW4 na plytce
  47. //      /////////////////////////////////////////////////////
  48. //      if (HAL_GPIO_ReadPin(SW_PORT,SW1_pin)==0)
  49. //      {
  50. //          vTaskDelay(60/portTICK_RATE_MS);
  51. //          if (HAL_GPIO_ReadPin(SW_PORT,SW1_pin)==0)
  52. //          {
  53. //              if (state_sw1==0)
  54. //              {
  55. //                  state_sw1=1;
  56. //                  obrot=0;
  57. //                  HAL_GPIO_TogglePin(LED_1_GPIO_Port, LED_1_Pin);
  58. //                  xQueueSendToBack(obrot_queue,(void*)&obrot,( TickType_t ) 0);
  59. //              }              
  60. //          }                      
  61. //      }
  62. //      else
  63. //          state_sw1=0;
  64. //      ///////////////////////////////////////////
  65. //      if (HAL_GPIO_ReadPin(SW_PORT,SW2_pin)==0)
  66. //      {
  67. //          vTaskDelay(60/portTICK_RATE_MS);
  68. //          if (HAL_GPIO_ReadPin(SW_PORT,SW2_pin)==0)
  69. //          {
  70. //              if (state_sw2==0)
  71. //              {
  72. //                  state_sw2=1;
  73. //                  obrot=1;
  74. //                  HAL_GPIO_TogglePin(LED_2_GPIO_Port, LED_2_Pin);
  75. //                  xQueueSendToBack(obrot_queue,(void*)&obrot,( TickType_t ) 0);
  76. //              }              
  77. //          }                      
  78. //      }
  79. //      else
  80. //          state_sw2=0;
  81. //      ///////////////////////////////////////////////////////
  82.        
  83.        
  84.        
  85.         ///////////////////////////////////////////////
  86.         //oblsuga pokretla - cos nie dziala jak powinno
  87.         /////////////////////////////////////////////      
  88.         switch (state)
  89.         {
  90.             case 0:  //00
  91.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  92.                 state=0;
  93.                
  94.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  95.                 state=1;
  96.  
  97. //              if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  98. //              state=0;
  99.                
  100.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  101.                 state=4;
  102.                
  103.                 break;
  104.                
  105.             case 1:  //00->10
  106.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  107.                 state=1;
  108.                
  109.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  110.                 state=2;
  111.                
  112.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  113.                 state=0;               
  114.                
  115.                 break;
  116.                
  117.             case 2:  //10->11
  118.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  119.                 state=2;
  120.                
  121.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  122.                 state=3;
  123.                
  124.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  125.                 state=1;               
  126.                
  127.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  128.                 state=0;   
  129.                
  130.                 break;
  131.                
  132.             case 3: //11->01
  133.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  134.                 state=3;
  135.                
  136.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  137.                 {
  138.                     state=0;
  139.                     obrot=0;
  140.                     HAL_GPIO_TogglePin(LED_2_GPIO_Port, LED_2_Pin);
  141.                     xQueueSendToBack(obrot_queue,(void*)&obrot,( TickType_t ) 0);
  142.                 }
  143.                
  144.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  145.                 state=2;               
  146.                
  147.                 break;
  148.                
  149.             case 4:
  150.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  151.                 state=4;
  152.                
  153.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  154.                 state=5;
  155.                
  156.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  157.                 state=0;
  158.                
  159.                 break;
  160.                
  161.             case 5:
  162.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  163.                 state=5;
  164.                
  165.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  166.                 state=6;
  167.                
  168.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  169.                 state=4;
  170.                
  171.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  172.                 state=0;   
  173.                
  174.                 break;
  175.                
  176.             case 6:
  177.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  178.                 state=6;
  179.                
  180.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==1&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==1)
  181.                 state=5;
  182.                
  183.                 if (HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_LEFT)==0&&HAL_GPIO_ReadPin(ENCODER_ROT_PORT,ENCODER_RIGHT)==0)
  184.                 {
  185.                     state=0;
  186.                     obrot=1;
  187.                     HAL_GPIO_TogglePin(LED_1_GPIO_Port, LED_1_Pin);
  188.                     xQueueSendToBack(obrot_queue,(void*)&obrot,( TickType_t ) 0);
  189.                 }      
  190.                 break;
  191.             }      
  192.     }
  193.    
  194. }
  195. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement