Помогите пожалуйста с настройкой таймеров Xmega32A4.
Что то я в этих регистрах настройки совсем запутался...

По задумке, 3 таймера счетчика активированы на PC0, PD0, PE0.
Настроены на захват длительности импульса по падающему фронту.
Ну и соответственно при запуске все три ничего не считают.
Работоспособность проверяю в AVR Studio 6.
Надеюсь на вашу помощь. Спасибо)
CODE
void StartTimers(void) // Запускаем режим захвата по трем каналам таймера
{
TCC0.CTRLA = TC_CLKSEL_EVCH0_gc; // Выбираем источником тактов нулевой канал порта
TCD0.CTRLA = TC_CLKSEL_EVCH0_gc;
TCE0.CTRLA = TC_CLKSEL_EVCH0_gc;
}
void StopTimers(void) // Останавливаем работу таймеров
{
TCC0.CTRLA = TC_CLKSEL_OFF_gc;
TCD0.CTRLA = TC_CLKSEL_OFF_gc;
TCE0.CTRLA = TC_CLKSEL_OFF_gc;
}
int main(void)
{
// Настройка работы от внешнего кварца в 4МГц
cli(); // Отключение прерываний
OSC.XOSCCTRL = 0x4B; // 2-9 МГц без режима сбережения и со стабильной частотой во время запуска (01001011)
OSC.CTRL = 0x08; // Разрешение работы внешнего генератора
while((OSC.STATUS & 0x08) == 0); // Ожидание сигнала о включении внешнего генератора
// Настройка портов
PORTC.DIR = 0x1C; // PC0 - T/C-X
PORTD.DIR = 0x00; // PD0 - T/C-Y
PORTE.DIR = 0x00; // PE0 - T/C-Z
PORTC.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc; // Установка чувствительности по заднему фронту
PORTD.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc;
PORTE.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc;
PORTC.INTCTRL = PORT_INT0LVL_HI_gc; // Настройка высокого уровня прерываний
PORTD.INTCTRL = PORT_INT0LVL_HI_gc;
PORTE.INTCTRL = PORT_INT0LVL_HI_gc;
PORTR.INTCTRL = PORT_INT0LVL_HI_gc;
PMIC.CTRL|=PMIC_HILVLEN_bm|PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm; // Разрешаем все уровни прерываний
//Единоразовая настройка таймеров
TCC0.CTRLB = 0x00; // Выбрали режим: Normal
TCD0.CTRLB = 0x00;
TCE0.CTRLB = 0x00;
TCC0.CTRLD = 0xC8; // Захват длительности импульса по 0 каналу
TCD0.CTRLD = 0xC8; // EVACT = 110 - захват длительности; 001 - входной захват
TCE0.CTRLD = 0xC8; // EVSEL = 1000 - выбор 0 канала для захвата
TCC0.INTCTRLA = 0x01; // Разрешаем прерывания низкого уровня по переполнению
TCD0.INTCTRLA = 0x01; // 0x01 - низкий уровень; 0x02 - средний; 0x03- высокий уровень...
TCE0.INTCTRLA = 0x01;
sei(); // Включение прерываний
{
TCC0.CTRLA = TC_CLKSEL_EVCH0_gc; // Выбираем источником тактов нулевой канал порта
TCD0.CTRLA = TC_CLKSEL_EVCH0_gc;
TCE0.CTRLA = TC_CLKSEL_EVCH0_gc;
}
void StopTimers(void) // Останавливаем работу таймеров
{
TCC0.CTRLA = TC_CLKSEL_OFF_gc;
TCD0.CTRLA = TC_CLKSEL_OFF_gc;
TCE0.CTRLA = TC_CLKSEL_OFF_gc;
}
int main(void)
{
// Настройка работы от внешнего кварца в 4МГц
cli(); // Отключение прерываний
OSC.XOSCCTRL = 0x4B; // 2-9 МГц без режима сбережения и со стабильной частотой во время запуска (01001011)
OSC.CTRL = 0x08; // Разрешение работы внешнего генератора
while((OSC.STATUS & 0x08) == 0); // Ожидание сигнала о включении внешнего генератора
// Настройка портов
PORTC.DIR = 0x1C; // PC0 - T/C-X
PORTD.DIR = 0x00; // PD0 - T/C-Y
PORTE.DIR = 0x00; // PE0 - T/C-Z
PORTC.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc; // Установка чувствительности по заднему фронту
PORTD.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc;
PORTE.PIN0CTRL = PORT_OPC_WIREDORPULL_gc | PORT_ISC_FALLING_gc;
PORTC.INTCTRL = PORT_INT0LVL_HI_gc; // Настройка высокого уровня прерываний
PORTD.INTCTRL = PORT_INT0LVL_HI_gc;
PORTE.INTCTRL = PORT_INT0LVL_HI_gc;
PORTR.INTCTRL = PORT_INT0LVL_HI_gc;
PMIC.CTRL|=PMIC_HILVLEN_bm|PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm; // Разрешаем все уровни прерываний
//Единоразовая настройка таймеров
TCC0.CTRLB = 0x00; // Выбрали режим: Normal
TCD0.CTRLB = 0x00;
TCE0.CTRLB = 0x00;
TCC0.CTRLD = 0xC8; // Захват длительности импульса по 0 каналу
TCD0.CTRLD = 0xC8; // EVACT = 110 - захват длительности; 001 - входной захват
TCE0.CTRLD = 0xC8; // EVSEL = 1000 - выбор 0 канала для захвата
TCC0.INTCTRLA = 0x01; // Разрешаем прерывания низкого уровня по переполнению
TCD0.INTCTRLA = 0x01; // 0x01 - низкий уровень; 0x02 - средний; 0x03- высокий уровень...
TCE0.INTCTRLA = 0x01;
sei(); // Включение прерываний