Код
int CH1,CH2,CH3,CH4;
void CHANNEL_COUNT(void)
{
PORTC.DIR&=~0x78;
//PORTC.DIRTGL=0x78;
PORTC.PIN0CTRL = PORT_ISC_FALLING_gc; //обнаружение низкого уровня
PORTC.PIN1CTRL = 0x03; //обнаружение низкого уровня
EVSYS.CH0MUX = 0x66; // передача в первый мультемплексканал Count_CH1
EVSYS.CH1MUX = 0x65; // передача в второй мультемплексканал Count_CH2
EVSYS.CH2MUX = 0x64; // передача в третий мультемплексканал Count_CH3
EVSYS.CH3MUX = 0x63; // передача в четвертый мультемплексканал Count_CH4
EVSYS.CH1CTRL = 0x07; //
EVSYS.CH2CTRL = 0x07; //
EVSYS.CH3CTRL = 0x07; //максимальный цифровой фильтр на все каналы
EVSYS.CH0CTRL = 0x07; //
TCC0.PER = 0xFFFF;
TCD0.PER = 0xFFFF;
TCC1.PER = 0xFFFF; // переполнение после полного заполнения 16бит
TCD1.PER = 0xFFFF;
TCD0.CTRLA = TC_CLKSEL_EVCH0_gc; // CNT таймера Д0 содержит счет CH1
TCC0.CTRLA = TC_CLKSEL_EVCH1_gc; // CNT таймера C0 содержит счет CH2
TCC1.CTRLA = TC_CLKSEL_EVCH2_gc; // CNT таймера C1 содержит счет CH3
TCD1.CTRLA = TC_CLKSEL_EVCH3_gc; // CNT таймера Д1 содержит счет CH4
CH1=TCD0.CNT;
CH2=TCD0.CNT;
CH3=TCD0.CNT; // запись значения
CH4=TCD0.CNT;
}
void CHANNEL_COUNT(void)
{
PORTC.DIR&=~0x78;
//PORTC.DIRTGL=0x78;
PORTC.PIN0CTRL = PORT_ISC_FALLING_gc; //обнаружение низкого уровня
PORTC.PIN1CTRL = 0x03; //обнаружение низкого уровня
EVSYS.CH0MUX = 0x66; // передача в первый мультемплексканал Count_CH1
EVSYS.CH1MUX = 0x65; // передача в второй мультемплексканал Count_CH2
EVSYS.CH2MUX = 0x64; // передача в третий мультемплексканал Count_CH3
EVSYS.CH3MUX = 0x63; // передача в четвертый мультемплексканал Count_CH4
EVSYS.CH1CTRL = 0x07; //
EVSYS.CH2CTRL = 0x07; //
EVSYS.CH3CTRL = 0x07; //максимальный цифровой фильтр на все каналы
EVSYS.CH0CTRL = 0x07; //
TCC0.PER = 0xFFFF;
TCD0.PER = 0xFFFF;
TCC1.PER = 0xFFFF; // переполнение после полного заполнения 16бит
TCD1.PER = 0xFFFF;
TCD0.CTRLA = TC_CLKSEL_EVCH0_gc; // CNT таймера Д0 содержит счет CH1
TCC0.CTRLA = TC_CLKSEL_EVCH1_gc; // CNT таймера C0 содержит счет CH2
TCC1.CTRLA = TC_CLKSEL_EVCH2_gc; // CNT таймера C1 содержит счет CH3
TCD1.CTRLA = TC_CLKSEL_EVCH3_gc; // CNT таймера Д1 содержит счет CH4
CH1=TCD0.CNT;
CH2=TCD0.CNT;
CH3=TCD0.CNT; // запись значения
CH4=TCD0.CNT;
}