Skocz do zawartości

STM32 podwójny krok enkodera


szachu

Pomocna odpowiedź

Cześć!
Mam problem z enkoderem z Nucleo G491RE.

Przy wyświetlaniu na monitorze portu szeregowego, po wykonaniu jednego kroku, wyświetla wartość co dwa(0,2,4...) natomiast podczas powolnego przekręcania w jednej chwili pokazują się normalnie nieparzyste wskazania, gdy enkoder jest w ułożeniu między pełnymi krokami. 

Niżej kod, ustawiłem w CubeIDE tim2 na prace z enkoderem 20 krokowym co pokrywa się z używanym przeze mnie. 

char msg[64];
uint32_t count;

HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
      count = __HAL_TIM_GET_COUNTER(&htim2);

      sprintf((char*)msg, "Odczyt: %d\n", count);
      HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 1000);
      HAL_Delay(200);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

 

Edytowano przez Gieneq
Link do komentarza
Share on other sites

Spróbuj zrobić dwie rzeczy

1. zamiast  HAL_Delay(200); wpisz HAL_Delay(2); wgraj program ,pokręć pokrętłem i zobacz co się dzieje.

2. zakomentuj HAL_Delay(2); czyli linia będzie wyglądać   // HAL_Delay(2);  wgraj program ,pokręć pokrętłem i zobacz co się dzieje.

Delay(); powoduje,że przejście do następnej linii programu nastąpi po upływie czasu jaki został wpisany w nawiasach. Jeśli wpisałeś 200 to przejście do następnej linii jest po 200ms.W tym czasie Twoje pokrętło,które jest całkowicie niezależne od kontrolera zmieniło stan kilka razy a procesor zarejestrował tylko jedno zdarzenie. Zmieniając w nawiasach z 200 na 2 powodujesz,że Twój procesor jest gotowy do odbioru po troszeczkę więcej niż 2ms.To troszeczkę to czas od momentu zakończenia delay do linii programu w której następuje odczytanie stanu na wejściu. Wniosek jest jeden użycie delay nie jest dobrym rozwiązaniem i należy być bardzo ostrożnym w jego stosowaniu.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.