STM32 Timer Encoder Mode mit nur einem Kanal?

OP #7091418
Lesenswert?
• ▲
▼
Hi,

Ich versuche auf einem STM32 einen einkanaligen Inkrement-Encoder 
auszulesen, jedoch bekomme ich das einfach nicht hin, ohne den zweiten 
Kanal hinzuzunehmen.

Der Encoder-Ausgang wird direkt über 2 parallele 100Ohm Widerstände auf 
2 GPIO Pins geleitet, welche als Combined Channels Encoder Mode gesetzt 
sind. Wenn ich nun den Encoder auslese über TIMx->CNT, dann bekomme ich 
die doppelte Anzahl an Pulse, die der Encoder eigentlich hätte.

Der Encoder Mode ist als Encoder Mode TI1 gesetzt, es sollte also nur 
ein Kanal ausgewertet werden und der zweite zur Drehrichtungsbestimmung, 
aber dem scheint nicht so zu sein.
1
  htim22.Instance = TIM22;
2
  htim22.Init.Prescaler = 0;
3
  htim22.Init.CounterMode = TIM_COUNTERMODE_UP;
4
  htim22.Init.Period = 65535;
5
  htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
6
  htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
7
  sConfig.EncoderMode = TIM_ENCODERMODE_TI1;
8
  sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
9
  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
10
  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
11
  sConfig.IC1Filter = 0;
12
  sConfig.IC2Polarity = TIM_ICPOLARITY_FALLING;
13
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
14
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
15
  sConfig.IC2Filter = 0;
16
  if (HAL_TIM_Encoder_Init(&htim22, &sConfig) != HAL_OK)
17
  {
18
    Error_Handler();
19
  }
20

21
  HAL_TIM_Encoder_Start(&htim22, TIM_CHANNEL_1);

Bin ich da völlig auf dem Holzweg, wenn ich nur einen Kanal auslesen 
will? Ich habe auch schon versucht, den internen Pull-Down für den 
zweiten Kanal anzuwenden und den Kanal vom Encoder-Ausgang durch den 
Widerstand getrennt, jedoch gibt es mir seither nur noch Müll aus.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.