>>310
xmega32E5だけど、エンコーダの初期化だけならこれだけ。

void enc_init(void){
// ポート設定
PORTA.PIN5CTRL = PORT_ISC_BOTHEDGES_gc; // A相
PORTA.PIN6CTRL = PORT_ISC_BOTHEDGES_gc; // B相

// イベント設定(フィルター 2x512 clk)
EVSYS.DFCTRL = EVSYS_PRESC_CLKPER_512_gc;
EVSYS.CH0CTRL = EVSYS_QDEN_bm | EVSYS_DIGFILT_2SAMPLES_gc | EVSYS_ROTARY_bm;
EVSYS.CH0MUX = EVSYS_CHMUX_PORTA_PIN5_gc;

// カウンタ設定
cli();
TCC4.CNT = 0;
TCC4.PER = 0xFFFF;
sei();
TCC4.CTRLD = TC_EVACT_QDEC_gc | TC_EVSEL_CH0_gc;
TCC4.CTRLA = TC_CLKSEL_DIV1_gc;
}

設定後は勝手にカウント値TCC4.CNTに入れてくれるので、適当に読みだせばいい。
周辺機能だけで動作するのでCPUは全く関係ない。

こんなエンコーダ使ってる。500CPRなんで1回転2000カウントもする。
回転軸を指でブンブン回しても1カウントもこぼさないよ。
https://jp.rs-online.com/web/p/rotary-encoders/7967840/

秋月のこれもたくさん使ってるなあ。
http://akizukidenshi.com/catalog/g/gP-05773/