Xmega QDEN Decoder

Gast #4854597
Lesenswert?

Hallo,

ich versuche einen Drehencoder zu testen und habe dafür an meinem xmega 
an PORTB0+1 zwei Schalter angeschlossen, die gegen Masse schließen.

Ich habe gehofft, mit folgendem ganz simplen Code den Hardware Decoder 
benutzen zu können. Leider sehe ich keine Aktivitäten. Ich lasse mit den 
Stand des Hardwaretimers über eine Uart ausgeben, sehe aber immer nur 
"0".

Wenn ich die Schalter im Greycode durchschalte sehe ich keine 
Veränderungen.
1
PORTA_DIR = 0b11111111;
2
  PORTB_DIR = 0b11111100; //Zwei Eingänge
3
  PORTC_DIR = 0xFF;
4
  PORTD_DIR = 0xFF;
5
  PORTE_DIR = 0xFF;
6
  PORTR_DIR = 0xFF;
7
  
8
  UART_Init(&USARTC0, 9600); //Uart aktivieren
9
  PORTC_OUTSET = PIN4_bm;
10
  
11
  TCD0.CTRLD = 0b01101000; //Timer Event Channel 0 und Qden
12
  TCD0.CTRLA = TC_CLKSEL_DIV1_gc; //Timer ohne Teiler starten                          //Timer für Drehencoder
13
  TCD0.PER =  (2^15)-1;  //Bis hier hier soll gezählt werden
14
  EVSYS.CH0MUX = EVSYS_CHMUX_PORTB_PIN0_gc; //EVCh0 soll PORTB0 nehmen                    //Event Drehencoder
15
  EVSYS.CH0CTRL = EVSYS_QDEN_bm; //QDEN aktivieren
16
  
17
  PORTB.PIN0CTRL = PORT_ISC_FALLING_gc |PORT_OPC_PULLUP_gc;
18
  PORTB.PIN1CTRL = PORT_ISC_FALLING_gc |PORT_OPC_PULLUP_gc;
19
  
20
  WORD CNT_old = 0;
21
  
22
  while(1){
23
    char resp[20];
24
    
25
    //if(CNT_old != TCD0.CNT){
26
      CNT_old = TCD0.CNT;
27
      sprintf(resp, "%d\n\r", CNT_old);
28
      UART_SendString(&USARTC0, resp); //Hier sehe ich nur 0
29
    //}
30
  }

Ich habe mich an die Anleitung aus dem Atmel Datenblatt gehalten.

Ich habe
 a) Zwei Eingänge
 b) Falling Edge sensitive
 c) Portb0 EVChannel0 zugewiesen
 d) quadratur decoding aktiviert
 e) den timer evchannel0 zugewiesen
 f) für den timer quadrature decoding aktiviert
 g) timer ohne teiler akvitiert

Was mache ich falsch?

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