Описание функциональной схемы
Таймер формирует временные интервалы заданной длительности, Счетчик 1 считает эти импульсы, и при необходимости меняет временные интервалы, генерируемые таймером. Счетчик 2 отсчитывает нужное количество импульсов и, досчитав да заданного значения, останавливает таймер.
Алгоритм работы устройства
Таймер Т1 формирует временные интервалы заданной длительности, по окончанию интервала он формирует прерывание, в котором его значения обновляется. Таким образом, можно сформировать любую последовательность импульсов с любыми параметрами (период, длительность, скважность).
Подпрограмма прерывания начинается с проверки – не последний ли это импульс, если последний,таймер останавливается. Если не последний, производится проверка, это имульс или пауза между импульсми (длительность импульса — 2500 мкс, длительность паузы — 7500 мкс), таким образом, поочередно формируются временные интервалы импульса и паузы.
Описание режима CTC
Режим сброса таймера при совпадении (СТС)
Рис. 1. Блок-схема T0
В режиме СТС (WGM01, WGM00 = 0b10) регистр OCR0 используется для задания разрешающей способности счетчика. Если задан режим CTC и значение счетчика (TCNT0) совпадает со значением регистра OCR0, то счетчик обнуляется (TCNT0=0). Таким образом, OCR0А задает вершину счета счетчика, а, следовательно, и его разрешающую способность. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов.
В режиме сброса таймера при совпадении (WGMn3-0 = 0b0100 или 0b1100) пределы счета таймера задаются регистром OCR0A. В режиме СТС происходит сброс счетчика (TCNT0), если его значение совпадает со значением регистра OCR0A. В данном режиме обеспечивается возможность регулировки частоты генерируемых прямоугольных импульсов. Временная диаграмма работы таймера врежиме СТС показана на рисунке 1. Счетчик (TCNTn) инкрементирует свое состояние до тех пор, пока не возникнет совпадение со значением OCR0A , а затем счетчик (TCNT0) сбрасывается.
Рис. 2 Временные диаграммы режима СТС
Помимо сброса при этом может генерироваться прерывание с помощью флагов OCF0A, соответствующим используемым регистрам для задания верхнего предела счета. Если прерывание разрешено, то процедура обработки прерывания может использоваться для обновления верхнего предела счета.
Для генерации сигнала в режиме CTC выход OC0A может использоваться для изменения логического уровня при каждом совпадении, для чего необходимо задать режим переключения (COM0A1, COMA0 = 0b01). Значение OC0A будет присутствовать на выводе порта, только если для данного вывода задано выходное направление. Максимальная частота генерируемого сигнала равна fOC0 = fclk_I/O/2, если OCRnA = 0x0000. Для других значений OCRn частоту генерируемого сигнала можно определить по формуле:
где переменная N задает коэффициент предделителя (1, 8, 32, 64, 128, 256 или 1024).
Программа
rjmp RESET ; ResetHandler
reti; IRQ0 Handler
reti;;rjmp EXT_INT1 ;IRQ1 Handler
reti;reti;jmp ;TIM2_COMP; Timer2 Compare Handler
reti;;reti;jmp ;TIM2_OVF; Timer2 Overflow Handler
reti; ;reti;jmp;TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1CompareA Handler
reti;reti;jmp;TIM1_COMPB ; Timer1 CompareB Handler
reti;reti;jmp ;TIM1_OVF; Timer1 Overflow Handler
reti;;reti;jmp ;TIM0_OVF; Timer0 Overflow Handler
reti;;reti;jmp ;SPI_STC; SPI Transfer Complete Handler
reti;;reti;jmp;USART_RXC ; USART RX Complete Handler
reti;;reti;jmp;USART_UDRE ; UDR Empty Handler
reti;reti;jmp ;USART_TXC; USART TX Complete Handler
reti;reti;jmp ;ADC ; ADCConversion Complete Handler
reti;reti;jmp ;EE_RDY ;EEPROM Ready Handler
reti;reti;jmp ;ANA_COMP; Analog Comparator Handler
reti;reti;jmp ;TWSI ;Two-wire Serial Interface Handler
reti;reti;jmp ;EXT_INT2; IRQ2 Handler
reti; Timer0 CompareHandler
reti;reti;jmp SPM_RDY ;Store Program Memory Ready Handler
Все права защищены © AVR.RU 2007—2017.
Цитирование материалов сайта только с разрешения владельца.
Описание функциональной схемы
Таймер формирует временные интервалы заданной длительности, Счетчик 1 считает эти импульсы, и при необходимости меняет временные интервалы, генерируемые таймером. Счетчик 2 отсчитывает нужное количество импульсов и, досчитав да заданного значения, останавливает таймер.
Алгоритм работы устройства
Таймер Т1 формирует временные интервалы заданной длительности, по окончанию интервала он формирует прерывание, в котором его значения обновляется. Таким образом, можно сформировать любую последовательность импульсов с любыми параметрами (период, длительность, скважность).
Подпрограмма прерывания начинается с проверки – не последний ли это импульс, если последний,таймер останавливается. Если не последний, производится проверка, это имульс или пауза между импульсми (длительность импульса — 2500 мкс, длительность паузы — 7500 мкс), таким образом, поочередно формируются временные интервалы импульса и паузы.
Описание режима CTC
Режим сброса таймера при совпадении (СТС)
Рис. 1. Блок-схема T0
В режиме СТС (WGM01, WGM00 = 0b10) регистр OCR0 используется для задания разрешающей способности счетчика. Если задан режим CTC и значение счетчика (TCNT0) совпадает со значением регистра OCR0, то счетчик обнуляется (TCNT0=0). Таким образом, OCR0А задает вершину счета счетчика, а, следовательно, и его разрешающую способность. В данном режиме обеспечивается более широкий диапазон регулировки частоты генерируемых прямоугольных импульсов.
В режиме сброса таймера при совпадении (WGMn3-0 = 0b0100 или 0b1100) пределы счета таймера задаются регистром OCR0A. В режиме СТС происходит сброс счетчика (TCNT0), если его значение совпадает со значением регистра OCR0A. В данном режиме обеспечивается возможность регулировки частоты генерируемых прямоугольных импульсов. Временная диаграмма работы таймера врежиме СТС показана на рисунке 1. Счетчик (TCNTn) инкрементирует свое состояние до тех пор, пока не возникнет совпадение со значением OCR0A , а затем счетчик (TCNT0) сбрасывается.
Рис. 2 Временные диаграммы режима СТС
Помимо сброса при этом может генерироваться прерывание с помощью флагов OCF0A, соответствующим используемым регистрам для задания верхнего предела счета. Если прерывание разрешено, то процедура обработки прерывания может использоваться для обновления верхнего предела счета.
Для генерации сигнала в режиме CTC выход OC0A может использоваться для изменения логического уровня при каждом совпадении, для чего необходимо задать режим переключения (COM0A1, COMA0 = 0b01). Значение OC0A будет присутствовать на выводе порта, только если для данного вывода задано выходное направление. Максимальная частота генерируемого сигнала равна fOC0 = fclk_I/O/2, если OCRnA = 0x0000. Для других значений OCRn частоту генерируемого сигнала можно определить по формуле:
где переменная N задает коэффициент предделителя (1, 8, 32, 64, 128, 256 или 1024).
Программа
rjmp RESET ; ResetHandler
reti; IRQ0 Handler
reti;;rjmp EXT_INT1 ;IRQ1 Handler
reti;reti;jmp ;TIM2_COMP; Timer2 Compare Handler
reti;;reti;jmp ;TIM2_OVF; Timer2 Overflow Handler
reti; ;reti;jmp;TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1CompareA Handler
reti;reti;jmp;TIM1_COMPB ; Timer1 CompareB Handler
reti;reti;jmp ;TIM1_OVF; Timer1 Overflow Handler
reti;;reti;jmp ;TIM0_OVF; Timer0 Overflow Handler
reti;;reti;jmp ;SPI_STC; SPI Transfer Complete Handler
reti;;reti;jmp;USART_RXC ; USART RX Complete Handler
reti;;reti;jmp;USART_UDRE ; UDR Empty Handler
reti;reti;jmp ;USART_TXC; USART TX Complete Handler
reti;reti;jmp ;ADC ; ADCConversion Complete Handler
reti;reti;jmp ;EE_RDY ;EEPROM Ready Handler
reti;reti;jmp ;ANA_COMP; Analog Comparator Handler
reti;reti;jmp ;TWSI ;Two-wire Serial Interface Handler
reti;reti;jmp ;EXT_INT2; IRQ2 Handler
reti; Timer0 CompareHandler
reti;reti;jmp SPM_RDY ;Store Program Memory Ready Handler
Все права защищены © AVR.RU 2007—2017.
Цитирование материалов сайта только с разрешения владельца.
В первой части статьи рассматривается схемотехническое решение, устройство и конструкция DDS генератора (генератор с прямым цифровым синтезом формы сигнала) на микроконтроллере Atmel ATmega16. В приборе, кроме синтеза сигнала различной формы и частоты, реализуется возможность регулировки амплитуды и смещения выходного сигнала.
Основные характеристики прибора:
- простое схемотехническое решение, доступные компоненты;
- односторонняя печатная плата;
- сетевой источник питания;
- специализированный выход частоты от 1 МГц до 8 МГц;
- DDS выход с регулировкой амплитуды и смещения;
- форма выходного DDS сигнала: синусоида, прямоугольные импульсы, пилообразные импульсы, треугольные импульсы, ЭКГ, шум;
- для отображения текущих параметров используется двухстрочный ЖК дисплей;
- пятикнопочная клавиатура;
- шаг перестройки частоты: 1, 10, 10, 1000, 10000 Гц;
- восстановление последней конфигурации при включении;
- регулировка смещения: –5 В … +5 В;
- регулировка амплитуды: 0 … 10 В;
- регулировка частоты: 0 … 65534 Гц.
За основу прибора, а точнее алгоритм работы микроконтроллера, была взята разработка DDS генератора Jesper Hansen. Предложенный алгоритм был немного переработан и адаптирован под компилятор WinAVR-GCC
Сигнальный генератор имеет два выхода: выход DDS сигнала и выход высокочастотного сигнала (1 – 8 МГц) прямоугольной формы, который может использоваться для «оживления» микроконтроллеров с неправильными установками Fuse-битов или для других целей.
Высокочастотный сигнал поступает непосредственно с микроконтроллера, с вывода OC1A (PD5). DDS сигнал формируется микроконтроллером с использованием цепочки резисторов R2R (ЦАП), регулировка смещения и амплитуды возможна благодаря использованию низкопотребляющего операционного усилителя LM358N.
Блок-схема DDS генератора
Как видно, для питания устройства необходимо три напряжения: +5 В, +12 В, –12 В. Напряжения +12 В и –12 В используются для аналоговой части устройства на операционном усилителе для регулировки смещения и амплитуды.
Принципиальная схема источника питания изображена на рисунке ниже.
В источнике питания используются стабилизаторы напряжения LM7812, LM7805, LM7912 (стабилизатор отрицательного напряжения –12 В).
Внешний вид источника питания для генератора
Возможно использование компьютерного блока питания форм-фактора ATX, для этого необходимо распаять переходник в соответствии со схемой:
Принципиальная схема прибора
Для сборки прибора потребуется:
- микроконтроллер ATmega16;
- кварцевый резонатор 16 МГц;
- стандартный двухстрочный ЖК индикатор на базе контроллера HD44780;
- R2R ЦАП выполненный в виде цепочки резисторов;
- сдвоенный операционный усилитель LM358;
- два потенциометра;
- пять кнопок;
- несколько коннекторов и разъемов.
Рисунок печатной платы
Примененные компоненты, за исключением микроконтроллера и разъемов, в корпусах для поверхностного монтажа (smd).
Прибор смонтированный в корпусе
Тестовый запуск
Загрузки
Принципиальная схема и печатная плата (формат Eagle) — скачать
Проект для симуляции в среде Proteus — скачать
Во второй части статьи рассмотрим алгоритм работы микроконтроллера и его основные отличия от версии, автором которой является Jesper Hansen, понакомимся с порядком работы и опциями меню. Кроме того, будут предоставлены изображения формы сигналов с DDS выхода генератора, снятых с помощью осциллографа.
Дополниельно имеется второй вариант конструкции DDS генератора на микроконтроллере ATmega16.
Перевод: Vadim по заказу РадиоЛоцман