Программа Сервисный Центр
0

DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера


В первой части мы рассмотрели схемотехническое решение и конструкцию DDS генератора на микроконтроллере ATmega16. Программное обеспечение для микроконтроллера. Основные моменты Как упоминалось в первой части статьи, алгоритм работы DDS генератора, автором которого является Jesper Hansen, был немного переработан и адаптирован под компилятор WinAVR. Рассмотрим эти отличительные моменты. Основной момент – это введение дополнительного кода на ассемблере, который позволил остановить генерацию при нажатии кнопки Start/Stop. В функции проверяется состояние бита CPHA в регистре SPCR, который устанавливается в обработчике внешнего прерывания (кнопка Start/Stop подключена к выводу внешнего прерывания INT0). В итоге алгоритм займет 10 тактов процессора, вместо 9. void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0) { asm volatile( “eor r18, r18 ;r18<-0″ “ ” “eor r19, r19 ;r19<-0″ “ ” “1:” “ ” “add r18, %0 ;1 cycle” “ ” “adc r19, %1 ;1 cycle” “ ” “adc %A3, %2 ;1 cycle” “ ” “lpm ;3 cycles” “ ” “out %4, __tmp_reg__ ;1 cycle” “ ” “sbis %5, 2 ;1 cycle if no skip” “ ” “rjmp 1b ;2 cycles. Total 10 cycles” “ ” : :”r” (ad0),”r” (ad1),”r” (ad2),”e” (signal),”I” (_SFR_IO_ADDR(PORTA)), “I” (_SFR_IO_ADDR(SPCR)) :”r18″, “r19″ );} Следующий момент – таблица значений сигналов для прямого синтеза. Данная таблица определена в Flash-памяти по адресу с началом 0xXX00. Поэтому необходимо в make-файле определить эту секцию с целью правильного распределения памяти: #Define sections where to store signal tables LDFLAGS += -Wl,-section-start=.MySection1=0x3A00 LDFLAGS += -Wl,-section-start=.MySection2=0x3B00 LDFLAGS += -Wl,-section-start=.MySection3=0x3C00 LDFLAGS += -Wl,-section-start=.MySection4=0x3D00 LDFLAGS += -Wl,-section-start=.MySection5=0x3E00 LDFLAGS += -Wl,-section-start=.MySection6=0x3F00 Библиотека управления ЖК дисплеем – AVR-GCC 4 bit and 8 bit LCD. Все режимы работы и настройки отображаются на дисплее. Управление осуществляется с помощью пяти кнопок. Кнопки Up (вверх) и Down (вниз) используются для перемещения между пунктами меню, кнопки Left (влево) и Right (вправо) используются для изменения значения частоты. Кнопка Start/Stop – запускает/останавливает генерацию. Вид меню генератора сигналов
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Стоит заметить, что имеется отдельный пункт меню, в котором изменяется шаг перестройки частоты (Freq Step). Данная опция позволяет менять значение частоты для всех сигналов в широком диапазоне с минимальным количеством нажатий кнопок и переходов по меню. При генерации шума настройки частоты не требуется – используется простая функция генерации случайного числа, результат которой непрерывно поступает на выход DDS. Значение частоты высокочастотного сигнала можно выбрать 1 МГц, 2 МГц, 4 МГц и 8 МГц. Результаты Работа генератора была проверена с помощью осциллографа и частотомера. На изображениях ниже – вид формы сигнала и основные параметры на осциллографе.
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Синусоидальный сигнал
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Сигнал прямоуголной формы
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Сигнал треугольной формы
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Сигнал пилообразной формы
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Шум
DDS генератор на микроконтроллере ATmega16. Часть 2. Программное обеспечение для микроконтроллера
Высокочастоный сигнал 1 МГц Загрузки Текст исходного кода и hex-файл – скачать

Также рекомендуем:

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (1)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"