AVR xmega 32a4 EVSYS.CH0MUX bleibt nach schreiben 0

Gast #2437183
Lesenswert?

Guten Tag,

ich programmiere gerade für den AVR ATxmega32a4.
Als IDE verwende ich Atmel AVR Studio 5 (Version: 5.0.1163) mit dem
AVR Software Framework Version: ASF-2.8.1-23114.129 und AVR GCC 8-bit 
Toolchain Version: gcc version 4.5.1 
(AVR_8_bit_GNU_Toolchain_3.3.1_396).

Ich möchte das Event System des Xmega für die Quadratur Decodierung 
verwenden. Habe mich dafür an das App Note AVR1600 gehalten mit 
entsprechenden Modifikationen für meine Hardware. Jedoch lief der 
Quadratur Decoder nicht.

Beim Versuch das ganze nachzuvollziehen ist mir aufgefallen das, dass 
setzen von EVSYS.CH0MUX und EVSYS.CH0CTRL nicht funktioniert. Nach dem 
schreiben lese ich aus dem Registern jeweils wieder eine 0. Ich habe 
auch schon den Event Channel 2 probiert, gleiches Ergebnis.

Selbst im Simulator wird das Register nicht gesetzt. Andere Module 
Funktionieren jedoch (Timer, Uart, ADC).

Hat jemand eine Idee was hier falsch läuft?

Minimales Beispiel:
1
#include <stdio.h>
2

3
#include <asf.h>
4

5
int main ( void )
6
{
7
  EVSYS.CH0MUX  = EVSYS_CHMUX_PORTD_PIN0_gc;
8
  EVSYS.CH0CTRL = EVSYS_QDEN_bm | EVSYS_DIGFILT_2SAMPLES_gc;
9

10
  printf ("EVSYS.CH0MUX=%u, EVSYS.CH0CTRL=%u EVSYSLOCK=%u\n", (uint8_t)EVSYS_CH2MUX, (uint8_t)EVSYS.CH2CTRL, (uint8_t)MCU.EVSYSLOCK, (uint8_t)RST.STATUS );
11
  // Ausgabe:
12
  // EVSYS.CH0MUX=0, EVSYS.CH0CTRL=0 EVSYSLOCK=0
13
}
Gast #2437245
Lesenswert?

Sorry for the noise, problem gefunden.

Das Problem war, dass ich das ASF verwende und das Beispiel aus der App 
Note AVR1600 kein ASF verwendet.

Ich habe bei mir im Projekt noch ein sysclk_init() drin. Mann muss die 
Clock für das Event System Modul explizit aktivieren
1
sysclk_enable_module ( SYSCLK_PORT_GEN, SYSCLK_EVSYS );

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