Forum: Mikrocontroller und Digitale Elektronik Encoder stm32


von stm (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine Frage bezüglich des Encoder-Interfaces beim stm32f4.
Ich möchte mit einem Rotary-Encoder eine Variable hoch bzw. 
runterzählen, also z.B. wenn man nach rechts dreht => inkrementieren, 
wenn man nach links dreht => dekrementieren.
Ist es möglich das Encoder Interface so einzustellen?
Ich habs bis nur soweit gebracht dass er, egal welche Richtung immer 
hochzählt.

Danke schonmal

von Ernst O. (ernstj)


Lesenswert?

erst suchen, dann fragen- das ist hier glaube ich die Konvention.

gehe auf microcontroller.net un suche nach Encoder. Da wird dir 
geholfen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

stm schrieb:
> Ist es möglich das Encoder Interface so einzustellen?
Ja. In Hardware:
http://www.micromouseonline.com/2013/02/16/quadrature-encoders-with-the-stm32f4/

Und dann gibt es noch die "PinChange-Interrupt-Fraktion", die hierüber 
"Hurra" rufen wird:
http://stm32f4-discovery.com/2014/08/library-26-rotary-encoder-stm32f4/

Alle Anderen nehmen die übliche Peter-Danegger Geschichte, die z.B. in 
einem 1ms Systic laufen kann...

von msx (Gast)


Lesenswert?

Lothar M. schrieb:
> Alle Anderen nehmen die übliche Peter-Danegger Geschichte, die z.B. in
> einem 1ms Systic laufen kann...

Er nun wieder!

Auf die Schnelle für STM32F411 mit dem Hardware-Decoder.

void init_t2(void)
{
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;  // GPIOA freigeben
  GPIOA->MODER |= 0x0a;         // AF1 PA0 und PA1
  GPIOA->PUPDR |= 0x05;         // pullup PA0 und PA1
  GPIOA->AFR[0] |= 0x11;        // AF PA0 und PA1 TIM2_CH1/TIM2_CH2

  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;   // Timer2 freigeben
  TIM2->SMCR |= 0x03;           // Encode mode 3
  TIM2->CCMR1 |= 0x05;          // CH1 + CH2 -> Encoder
  TIM2->CR1 |= TIM_CR1_CEN;     // T2 starten
}

Der Zählerstand findet sich in TIM2->CNT.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

msx schrieb:
> Auf die Schnelle für STM32F411 mit dem Hardware-Decoder.
Ich meinte, den als Allererstes vorgeschlagen zu haben...

Die Hardware-Lösung braucht aber eben einen Timer/Zähler. Und das kann 
schnell mal eine wertvolle Ressource sein.

von msx (Gast)


Lesenswert?

Lothar M. schrieb:
> Die Hardware-Lösung braucht aber eben einen Timer/Zähler. Und das kann
> schnell mal eine wertvolle Ressource sein.

Und, schon mal einen STM32F4xx gesehen? Der hat mehr Timer als Du Finger 
an den Händen ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.