Разработка ПО для микроЭВМ AT90USB162 Одним из основных этапов разработки низкочастотного генератора является программирование микроконтроллера, где требуются навыки программиста, знающего особенности операционных систем и языков программирования.
Можно считать что микроконтроллер (МК) - это компьютер, разместившийся в одной микросхеме, с ограниченными возможностями. Отсюда и его основные привлекательные качества: малые габариты; высокие производительность, надежность и способность быть адаптированным для выполнения самых различных задач.
Микроконтроллеры используются во всех сферах жизнедеятельности человека, устройствах, которые окружают его. Простота подключения и большие функциональные возможности. С помощью программирования микроконтроллера можно решить многие практические задачи аппаратной техники. Преимущественные характеристики использования микроконтроллеров, необходимости их внедрения в различные устройства.
Микроконтроллер помимо центрального процессора (ЦП) содержит память и многочисленные устройства ввода/вывода: аналого-цифровые преобразователи, последовательные и параллельные каналы передачи информации, таймеры реального времени, генераторы программируемых импульсов и т.д. Его основное назначение - использование в системах автоматического управления, встроенных в самые различные устройства: фотоаппараты, сотовые телефоны, музыкальные центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины, микроволновые печи, системы охранной сигнализации, и многое, многое другое. Достаточно широкое распространение имеют МК фирмы ATMEL, которые располагают большими функциональными возможностями.
Применение МК можно разделить на два этапа:
- программирование, когда пользователь разрабатывает программу и прошивка ее непосредственно в кристалл. Значительно облегчают отладку программы на первом этапе - симулятор, который наглядно моделирует работу микропроцессора.
- согласование спроектированных исполнительных устройств с
запрограммируемым МК. На втором этапе для отладки используется внутрисхемный эмулятор, который является сложным и дорогим устройством, зачастую недоступным рядовому пользователю.
Микроконтроллер- компьютер на одной микросхеме, предназначенный для управления различными электронными устройствами и осуществления взаимодействия между ними в соответствии с заложенной в микроконтроллер программой. В отличие от микропроцессоров, используемых в персональных компьютерах, микроконтроллеры содержат встроенные дополнительные устройства. Эти устройства выполняют свои задачи под управлением микропроцессорного ядра микроконтроллера.
К наиболее распространенным встроенным устройствам относятся устройства памяти и порты ввода/вывода (I/O), интерфейсы связи,
таймеры, системные часы. Устройства памяти включают оперативную память (RAM), постоянные запоминающие устройства (ROM), перепрограммируемую ROM (EPROM), электрически перепрограммируемую ROM (EEPROM). Таймеры включают и часы реального времени, и таймеры прерываний. Средства I/O включают последовательные порты связи, параллельные порты (I/O линии), аналого-цифровые преобразователи (A/D), цифроаналоговые преобразователи (D/A), драйверы жидкокристаллического дисплея (LCD). Встроенные устройства обладают повышенной надежностью, поскольку они не
требуют никаких внешних электрических цепей.
Микроконтроллеры можно встретить в огромном количестве современных промышленных и бытовых приборов: станках, автомобилях, телефонах, телевизорах, холодильниках, стиральных машинах. и даже кофеварках. Среди производителей микроконтроллеров можно назвать Intel, Motorola, Hitachi, Microchip, Atmel, Philips, Texas Instruments, и многих других. Для производства современных микросхем требуются сверхчистые помещения.
В данной работе был выбран следующий микроконтроллер -AT90USB162. Главным преимуществом моего выбора именно этой микросхемы является ее широкая доступность и не высокая цена.
Практическая реализация программы на микроконтроллере:
Рассмотрим первоначальную инициализацию параметров данного устройства: задаем следующую строку исходя из того, что на жидкокристаллическом индикаторе должно выводиться 7 символов и в следующей строке задается для этого переменная N:
#define N 7
Следующим шагом мы задаем массив частоты для хранения этих символов и переменных, такие как d и t, где d – позволяет нам, узнать, например, какой символ мигает на экране ЖКИ.
//Переменные
char freq[N]; //массив для частоты
char d = 6; //знакоместо [2;8]
int t = 0; //таймер для мигания
Задаем параметры для нашего энкодера, где переменная enc_dn и enc_up отвечает, куда повернулся энкодер:
char enc_dn = 0, enc_up = 0; //энкодер вверх и вниз
char enc_wkd = 0; //энкодер отработал
char max_val = 0; //защелка для 3 МГц
char d_plc = 0; //защелка для знакоместа Первоначальная инициализацию параметров устройства - включенная или отключенная генерация, форма сигнала, всем эти параметрам присваивается начальное значение – 0, кроме форм сигнала – 1, так как инициализирована функция sin.
char sig_enable = 0; // индикатор генерации сигнала (вкл\выкл)
char sig_btn = 0; //индикатор нажатия кнопки вкл\выкл
char sig_type = 1; //0 - меандр, 1 - синус, 2 - треугольник, 3 - шум
char sig_type_btn = 0;//защелка для кнопок
char res = 0; //защелка для reset
char r=0;
char freq_upd = 0; //защелка для обновления частоты Далее, идет настройка портов, если присваивается 1- это означает, произошла инициализация порта на выход, если 0 –на вход:
PORTD.5=1; //реле коммутации выхода
DDRD.5=1; PORTD.6=1; //реле коммутации усиления
DDRD.6=1;
// Кнопки
PORTC.4=1; //кнопка "тип сигнала вверх"
DDRC.4=0;
PORTC.7=1; //кнопка "тип сигнала вниз"
DDRC.7=0;
PORTB.5=1; //кнопка "вкл генерацию сигнала"
DDRB.5=0; PORTB.4=1; //кнопка "RESET"
DDRB.4=0;
PORTB.6=1; //кнопка "знакоместо влево"
DDRB.6=0;
PORTB.7=1; //кнопка "знакоместо вправо"
DDRB.7=0;
Следующие порты являются портами протокола SPI, с помощью которого, однокристальная микроЭВМ передает данные микросхеме синтезатора частоты AD9833:
PORTB.2=0; //mosi
DDRB.2=1;
PORTB.1=0; //sck
DDRB.1=1;
PORTB.0=0; //ss
DDRB.0=1;
// другие
PORTD.7=0; //зумер
DDRD.7=1;
PORTC.5=1; //энкодер
DDRC.5=0; PORTC.6=1; //энкодер
DDRC.6=0;
Настройка ЖКИ: gotoxy начинает с 0 точки отрабатывать вывод строки кодировки «Добро пожаловать», где задержка данной строки производится на 1000 мс:
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("аoІpo ѕo¶a»oіaїД");
delay_ms(1000);
Запись «Добро пожаловать» стирается, возникает писк – осуществление запуска, потом записывается исходное значение частоты, где изначально массиву присваивается значения нуля, кроме 4 –
присваивается 1, так мы задаем 100 Гц // писк
PORTD.7=1;
delay_ms(20);
PORTD.7=0;
lcd_clear();
delay_ms(5);
// Записываем исходное значение частоты
for(i=0; i freq[i] = 0;
freq[4] = 1; //100 Гц (d-2 -- то же самое)
//И выводим на дисплей
lcd_gotoxy(0,0);
lcd_puts("F=0000100Ўе");
//"Гц"
lcd_putchar(0x81);
lcd_putchar(0xA9);
//вкл или выкл, изначально выкл
lcd_gotoxy(10,0);
lcd_puts(" BГє»");
//Тип сигнала вывод, начальный - синус
lcd_gotoxy(0,1);
//вывод СИНУС
lcd_puts("CёЅyc");
Таким образом, мы произвели первоначальную инициализацию данного устройства.
|