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 | } |