Частотомер на микроконтроллере attiny2313

Средний рейтинг
Еще нет оценок

Схема частотомера на микроконтроллере ATtiny2313

![Схема частотомера](freq_counter_schematic.png)

Описание схемы:

* ATtiny2313: Микроконтроллер отвечает за подсчет импульсов и отображение частоты на семисегментном индикаторе.
* Кварц 8 МГц: Обеспечивает тактовый сигнал для микроконтроллера.
* Конденсаторы C1 и C2: Стабилизируют питание микроконтроллера.
* Резистор R1: Защищает микроконтроллер от статического электричества.
* Транзистор T1 (BC548): Усилитель, который подключает импульсы с измеряемого источника к входу микроконтроллера.
* Резистор R2: Ограничивает ток через транзистор.
* Семисегментный индикатор: Отображает измеренную частоту.
* Резисторы R3-R9: Управляющие резисторы для семисегментного индикатора.

Код программы для микроконтроллера:

«`c
include
include

// Настройка портов и прерываний
define F_CPU 8000000UL
define DIVISOR 63
define OVERFLOW_COUNT (F_CPU / DIVISOR)

volatile unsigned long overflow_count = 0;
volatile unsigned long timer_count = 0;

void setup_timer() {
TCCR1B = (1 << CS10) | (1 << WGM12); // Настройка таймера 1 для режима CTC OCR1A = OVERFLOW_COUNT; // Значение сравнения для переполнения TIMSK1 |= (1 << OCIE1A); // Включение прерывания по совпадению сравнения } int main() { DDRB = 0xFF; // Настройка PORTB как выход (семисегментный индикатор) setup_timer(); sei(); // Включение прерываний while (1) { // Преобразовать количество переполнений и подсчет тиков в частоту unsigned long frequency = (overflow_count * OVERFLOW_COUNT + timer_count) * DIVISOR; // Отобразить частоту на семисегментном индикаторе display_frequency(frequency); } } ISR(TIMER1_COMPA_vect) { overflow_count++; } void display_frequency(unsigned long frequency) { // Разделить частоту на цифры (0-9) unsigned char digits[4]; for (int i = 0; i < 4; i++) { digits[i] = frequency % 10; frequency /= 10; } // Отобразить цифры на семисегментном индикаторе for (int i = 0; i < 4; i++) { PORTB = digits[i]; } } ``` Использование: 1. Подайте импульсы с измеряемого источника на вход "Input". 2. Микроконтроллер подсчитает импульсы и отобразит измеренную частоту на семисегментном индикаторе.

Оцените статью
Добавить комментарий