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

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.