QDEC Module XMEGA ASF

OP #4689989
Lesenswert?
• ▲
▼
Hallöle,

ich habe einen Drehgeber:
http://de.rs-online.com/web/p/products/7816809/

an einem XMEGA128A3U und verwende zur Auswertung den Quadrature Decoder 
aus dem ASF:
http://asf.atmel.com/docs/3.27.3/xmegaau/html/group__qdec__group.html
http://asf.atmel.com/docs/3.27.3/xmegaau/html/xmega_qdec_quickstart.html

Habe den Code aus dem Quickstartguide einfach übernommen.
1
static void qdec_init(void)
2
{
3
  qdec_get_config_defaults(&qdec1);
4
  qdec_config_phase_pins(&qdec1, &PORTB, 1, false, 500);
5
  qdec_config_revolution(&qdec1, 2400);
6
  qdec_enabled(&qdec1);
7
}
8

9
int main (void)
10
{
11
  sysclk_init();  
12
  board_init();
13

14
  //Rotary encoder
15
  qdec_init();
16
  
17
  qdec1_count = 0;
18
  
19
  
20
  while (1)
21
  {
22
    qdec1_count = qdec_get_position(&qdec1);
23
         .
24
         .
25
         .
26
        }
27
}

Funktioniert auch soweit. Das Problem ist nur, das bei jedem 
Hardwareschritt um 4 hochgezählt wird, also jede Flanke als inkrement 
genommen wird. Könnte mir vorstellen, dass das für einen Motor oderso 
gedacht ist, aber bei einem handbetätigten Encoder macht das ja wenig 
Sinn.

Habe schon versucht den Prescaler des Counters auf 4 zu stellen. Hat 
aber nichts gebracht. Auch den digitalen Filter des Eventchannels auf 4 
zu stellen bringt nichts.

Hatte das Problem schon mal jemand oder übersehe ich einfach eine 
offensichtliche Einstellmöglichkeit?

Danke schonmal für eure Zeit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren