Forum: Mikrocontroller und Digitale Elektronik AVR xmega 32a4 EVSYS.CH0MUX bleibt nach schreiben 0


von Martin T. (Gast)


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
}

von Martin T. (Gast)


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 );

von Gerhard G. (xmega)


Lesenswert?

Hallo,


printf ("EVSYS.CH0MUX=%u, EVSYS.CH0CTRL=%u EVSYSLOCK=%u\n", 
(uint8_t)EVSYS_CH2MUX, (uint8_t)EVSYS.CH2CTRL,


wenn du den CH0 verwendest, solltest du auch EVSYS_CH0MUX und 
EVSYS.CH0CTRL

verwenden.

Gruß xmega

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.