Atmel studio как подключить библиотеку delay

Библиотека для AtmelStudio 6.x а-ля CodeVisionAVR

Или скачать генератор кода тут и он сделает все за вас.

После того как скачали на диск ее нужно распаковать в папку по адресу Вот это вот 3.4.1056 у вас может называться по другому из-за версии, но суть остается та же. После переноса папки axlib можно приступать к использованию.

(Изночально данный файл находился в той же директории что и все остальные файлы. В связи с частым переносом проектов было принято решение данный файл переместить в корень проекта. Теперь расположения файла main_init.h должно быть там же где и основной файл программы. Дле тех кто использует старый вариант ничего не меняется. Лишь скачайте новую версию библиотеки и при создании нового проекта перенесите файл main_init.h в корень проекта. Теперь для каждого проекта будет свой файл main_init.h)

Он называется main_init.h. Как ни странно, но для подключения тех или иных функций необходимо первым делом подключить именно этот файл. Делается это так.
После строки #include
пишем #include «main_init.h»

(Старый вариант #include )

Теперь снова жмем F7. После компиляции справа в окне появится наш файл. Жмем на него двойным щелчком.

Самым первым делом нужно указать на какой частоте будет работать МК. Поэтому после сборки железа, первым делом вписываем эту частоту в герцах. На данный момент я тестировал библиотеку на МК с частотой 7,3728 МГц, поэтому сейчас там записана такая частота. Обязательно поменяйте ее на свою, так как это важно для расчетов некоторых значений регистров периферии. Далее идет определение типов данных. Их трогать не нужно. За ними следует настройка подключения ЖК знакосинтезирующего дисплея по 4-х битной шине. Если использование ЖК не планируется, то можно ничего не трогать. Если же ЖК будет подключатся, то необходимо прописать на каких портах и каких пинах будут подключены ножки МК и ЖК. Сложного ничего нет, просто меняем на ту букву порта на которой подключен ЖК, а в конце прописываем номера пинов. Вот и вся настройка. (Пока)

По вопросам и замечаниям, а так же предложениям, можно обратится на форум

.
Генератор кода для AtmelStudio 6.x с поддержкой библиотеки AXLIB Содержание:
Цветной TFT дисплей с управляющим контроллером ST7735

. void lcd_st7735_putstr(BYTE x, BYTE y, const BYTE str[], UWORD charColor, UWORD bkgColor); Данная функция выводит строку по координатам с заданным цветом символа и фона. void lcd_st7735_putstr_xy(BYTE x, BYTE y, const BYTE str[], UWORD charColor, UWORD bkgColor); Данная функция выводит строку по координатам курсора с заданным цветом символа и фона. Нулевая строка начинается снизу экрана. Всего в экран умещается 10 строк. Соответственно от 0 до 9. Количество возможных символов для вывода равно 20 шт. Координата x, указывает положение курсора от 0 до 19, а координата y, номер строки. Пример:
Скачать библиотеку. axlib 1.0

READ  Как подключить модем yota к роутеру sagemcom

Версия 1.0 Июнь 2015

Версия 1.1 Март 2016 (Внесены изменения в файл main_init.h в директивы асоциаций типов переменных)

Источник

Мигающий светодиод | Программирование микроконтроллеров AVR

При написании программы часто возникает необходимость в формировании определенного интервала времени между отдельными командами. Наглядным примером тому может послужить гирлянда, в которой лампочки загораются в определенной последовательности через промежутки времени. В нашем случае для индикации задержки времени будем использовать мигающий светодиод, а лучше два и разного цвета. Мы будем управлять длительностью их включения и выключения, т. е. изменять частоту мигания.

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

Большинство команд микроконтроллеров AVR выполняются в один такт генератора задающей частоты. В качестве которого широко используют встроенную в МК RC-цепочку или подключают к выводам XTAL1 и XTAL2 кварцевый резонатор.

Например, если МК работает с частотой 1 Гц, то одна команда будет выполняться за одну секунду

По умолчанию у МК ATmega8 задействован собственный внутренний генератор частоты, а точнее RC-цепочка, которая работает на частоте 1000 000 Гц = 1 МГц. Поэтому время выполнения одной команды равно:

Из этого следует, что если мы запишем подряд две команды, каждая из которых засветит отдельный светодиод, то визуально мы увидим, что они оба засветились одновременно.

PORTD = 0b000000001; // Подаем питание на 1-й светодиод

PORTD = 0b000000010; // Подаем питание на 2-й светодиод

Но на самом деле второй LED загорится с разницей во времени 0,000001 секунды от первого. Наши глаза не могут заметить такой малой разницы во времени. Уже при частоте изображений более 24 Гц (t = 1/24 ≈ 0,042 с) наше зрение формирует из отдельных картинок непрерывный фильм. Поэтому в большинстве случаев мы не различаем 25-й кадр.

Для того, чтобы оба светодиода засветились с разницей во времени 0,5 секунды необходимо между соответствующими двумя командами ( PORTD = 0b000000001; и PORTD = 0b000000010; ) поместит еще 500 000 однотактных пустых команд, т. е. заставить МК полсекунды не выполнять никаких полезных действий. Или, как говорят, нужно “убить” 500 000 тактов. Если код пишется на Ассемблере, то программисты применяют различных циклы, которые “съедают” определенное число тактов и тем самым получают различные интервалы времени.

PORTD = 0b000000001; // Подаем питание на 1-й светодиод

Для получения задержки 0,5 секунды сюда нужно вставить

500 000 однотактных команд

READ  Как подключить видеокамеру к компу в режиме реального времени

PORTD = 0b000000010; // Подаем питание на 2-й

Функция _delay_ms() и мигающий светодиод

В круглых скобках данной функции можно задавать время в миллисекундах, тогда перед скобками нужно записать ms, или в микросекундах – us:

#define F_CPU 1000000UL

В дальнейшем, когда мы будем подключать к МК кварцевый резонатор, без данной строки уже не обойтись. Структура ее останется прежней, только вместо 1 000 000 нужно будет записать частоту кварцевого резонатора.

Давайте улучшим нашу программу, так, чтобы сначала загорался один светодиод, затем через полсекунды он гаснул и еще через полсекунды загорался второй и снова через 0,5 с гаснул.

#define

Давайте посмотрим на код, приведенной выше, еще раз. Если нам необходимо изменить значение задержки времени в функции _delay из 500, например на 300, то мы должны отыскать все строки с ее именем и выполнить соответствующую замену. Теперь представим, что таких строк сотня, а то и тысяча. Изменять значение каждого числа по отдельности крайне неудобно и долго. К тому же можно случайно пропустить строку. Поэтому необходимо применять другой, более удобный и практичный подход.

Таких подходов существует несколько. Самый простой – это объявить переменную и присвоить ей нужное значение. Далее эта переменная подставляется в соответствующие функции. Это хороший способ. В дальнейшем мы его рассмотрим детальнее. Сейчас же мы рассмотрим еще более лучший!

С помощью оператора #define мы присвоим числовому значению какое-либо имя. Это имя называется константа. В отличие от переменной, константа не может изменяться в программе. Выглядит это так:

Имя константы можно задавать практически любым, используя латинские символы и цифры. В данном случае имя MIG говорит о том, что мы применяем задержку для мигания светодиодами.

После строки с директивой препроцессора #define точка с запятой не ставится. Между именем константы и числовым значением ставится пробел.

Данная строка работает следующим образом. Перед началом компиляции выполняется замена числом 300 всех констант с именем MIG.

#define и регистры

Также оператор #define хорош тем, что с помощью него можно задавать имена регистрам. Например, если мы подключаем к порту D светодиоды, то вместо PORTD мы можем записать, например VD:

Давайте перепишем программу, применяю директиву #define :

#define F_CPU 1000000UL

VD = 0b000000001; // Включаем 1-й светодиод

_delay_ms ( MIG ); // Ждем 0,5 секунды

VD = 0b000000000; // Выключаем 1-й

_delay_ms ( MIG ); // Ждем 0,5 секунды

VD = 0b000000010; // Включаем 2-й

_delay_ms ( MIG ); // Ждем 0,5 секунды

VD = 0b000000000; // Выключаем 2-й

_delay_ms ( MIG ); // Ждем 0,5 секунды

Таким способом можно сделать простейшую гирлянду. Однако применение функции _delay не всегда будет оправдано, поскольку во время задержки MK не выполняет никаких полезных действий. Более эффективный способ формирования временных интервалов является применение встроенных таймеров-счетчиков. О них будет подробно рассказано в последующих статьях.

READ  Как подключить наушники монстер битс к компьютеру

Источник

AVR _delay_ms() Delay Library Function

Created on: 3 May 2013

Part 10 of the ATtiny2313 Tutorial

The _delay_ms() library function is used to create a timing delay in software for the ATtiny2313 AVR microcontroller. The function is part of the GNU library that is installed with Atmel Studio.

Although it is better in most cases to use an AVR timer to generate delays, the software delay function is convenient in small programs and for quick prototyping and experimentation.

In this part of the tutorial, an LED is switched on and off using the _delay_ms() function to create on and off timing delays for the LED.

This video shows the circuit operating and running the C program that calls the _delay_ms() function.

Software

The software is shown below for an ATtiny2313 with an LED interfaced to pin 14 (PB2). For circuit diagrams, see previous parts of this tutorial and modify to connect the LED to pin 14.

Clock Frequency

Before using the _delay_ms() function, the clock frequency of the ATtiny2313 must first be defined at the top of the file before the header files. In this example, the default 1MHz factory setting for the ATtiny2313 is used:

Header File

The delay.h header file must be included in order to use the delay library function:

Calling the Function

The function is called and passed the desired time delay in milliseconds. Here it is set to make a delay of 50ms:

The same library has a microsecond delay function as well: _delay_us().

Function Requirements

In order to use the _delay_ms() function and get it to delay for the specified time, firstly the frequency that the ATtiny2313 is running at must be specified by defining it at the top of the C source file as shown above.

Compiler optimization must be on for the function to generate the desired timing period. In Atmel Studio optimization level 1 is on by default.

Function Documentation

The header file delay.h contains documentation in the form of comments in the file. To open the delay.h file in Atmel Studio, right-click the header file name in the C source file and then click Goto Implementation on the menu that pops up.

Opening the Header File from the C Source File in Atmel Studio

The documentation contains more information and limitations of the two delay library functions.

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector