Частотомер на PIC
Добавлено: 17 дек 2021 13:56
Все привет!
Кто занимается конструированием, на заметку.
Сейчас многие современные PIC имеют в своем составе модули CLC (конфигурируемые логические ячейки).
По даташиту, максимальная частота переключения составляет 140МГц, что позволяет конструировать частотомеры с такой максимальной частотой. Для этого нужно сконфигурировать CLC в режиме D-триггера. Ниже конфигурация для PIC18F46Q10, где используется два CLC настроенные как делитель на 4:
TIMER0 - счет частоты с выхода CLC
TIMER1 - время измерения
CLCIN0PPS = 0x04; //вывод RA4 как вход CLC2:CLCIN0;
CLC1POL = 0x02;
CLC1SEL0 = 0x22;
CLC1SEL1 = 0x21;
CLC1SEL2 = 0x21;
CLC1SEL3 = 0x21;
CLC1GLS0 = 0x02;
CLC1GLS1 = 0x20;
CLC1GLS2 = 0x00;
CLC1GLS3 = 0x00;
CLC1CON = 0x84;
CLC2POL = 0x02;
CLC2SEL0 = 0x00;
CLC2SEL1 = 0x22;
CLC2SEL2 = 0x22;
CLC2SEL3 = 0x22;
CLC2GLS0 = 0x02;
CLC2GLS1 = 0x20;
CLC2GLS2 = 0x00;
CLC2GLS3 = 0x00;
CLC2CON = 0x84;
//TIMER 0 подсчет частоты, c CLC1
T0CON0 = 0x90;
T0CON1 = 0xF0;
TMR0H = 0;
TMR0L = 0;
PIR0bits.TMR0IF = 0;
PIE0bits.TMR0IE = 1;
//TIMER 1 период для измерения частоты c RA4
T1GCON = 0x00;
T1GATE = 0x00;
T1CLK = 0x01; //CS FOSC/4;
T1CON = 0x21;
TMR1H = tmr1h;
TMR1L = tmr1l;
PIR4bits.TMR1IF = 0;
PIE4bits.TMR1IE = 1;
Практические испытания позволили стабильно измерить частоту до 102МГц. По входу использован компаратор TLV3501.
73! Дима.
Кто занимается конструированием, на заметку.
Сейчас многие современные PIC имеют в своем составе модули CLC (конфигурируемые логические ячейки).
По даташиту, максимальная частота переключения составляет 140МГц, что позволяет конструировать частотомеры с такой максимальной частотой. Для этого нужно сконфигурировать CLC в режиме D-триггера. Ниже конфигурация для PIC18F46Q10, где используется два CLC настроенные как делитель на 4:
TIMER0 - счет частоты с выхода CLC
TIMER1 - время измерения
CLCIN0PPS = 0x04; //вывод RA4 как вход CLC2:CLCIN0;
CLC1POL = 0x02;
CLC1SEL0 = 0x22;
CLC1SEL1 = 0x21;
CLC1SEL2 = 0x21;
CLC1SEL3 = 0x21;
CLC1GLS0 = 0x02;
CLC1GLS1 = 0x20;
CLC1GLS2 = 0x00;
CLC1GLS3 = 0x00;
CLC1CON = 0x84;
CLC2POL = 0x02;
CLC2SEL0 = 0x00;
CLC2SEL1 = 0x22;
CLC2SEL2 = 0x22;
CLC2SEL3 = 0x22;
CLC2GLS0 = 0x02;
CLC2GLS1 = 0x20;
CLC2GLS2 = 0x00;
CLC2GLS3 = 0x00;
CLC2CON = 0x84;
//TIMER 0 подсчет частоты, c CLC1
T0CON0 = 0x90;
T0CON1 = 0xF0;
TMR0H = 0;
TMR0L = 0;
PIR0bits.TMR0IF = 0;
PIE0bits.TMR0IE = 1;
//TIMER 1 период для измерения частоты c RA4
T1GCON = 0x00;
T1GATE = 0x00;
T1CLK = 0x01; //CS FOSC/4;
T1CON = 0x21;
TMR1H = tmr1h;
TMR1L = tmr1l;
PIR4bits.TMR1IF = 0;
PIE4bits.TMR1IE = 1;
Практические испытания позволили стабильно измерить частоту до 102МГц. По входу использован компаратор TLV3501.
73! Дима.