15318

Использование таймера в AVR микроконтроллерах

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №2 Использование таймера в AVR микроконтроллерах Цель работы: написать для микроконтроллера программу с использованием таймеров МК по прерыванию и вывод значений переменной на дисплей на языке программирования С согласно варианта. Прежде чем пр

Русский

2013-06-11

89 KB

11 чел.

Лабораторная работа №2

Использование таймера в AVR микроконтроллерах

Цель работы: написать для микроконтроллера программу с использованием таймеров МК по прерыванию и вывод значений переменной на дисплей на языке программирования С согласно варианта.

Прежде чем приступить к изучению таймера определимся с базовыми понятиями. Например, частота. Простым языком, частота это количество повторений, какого либо действия в секунду. Это значит, что если вы за секунду хлопнете в ладошки 2 раза, то частота хлопков будет равна 2Гц. Если за 2 секунды 2 раза, частота 1Гц.

Далее, каждый микроконтроллер работает на определенной частоте. Поэтому, ему нужен источник данной частоты. Микроконтроллер может тактироваться от внутреннего (собственного) источника и внешнего.

Частота внутреннего источника может изменяться («плавать») из за температуры и т.п., поэтому считается непригодным для для серьезных проектов . Поэтому применяется стабильный источник внешней частоты — кварцевый резонатор (кварц). Один из вариантов исполнения кварцевого резонатора:

Теперь, кое что о таймере. Таймер работает на той же частоте, что и микроконтроллер. Либо на частоте, меньшей в 8/64/256/1024 раз, это называется предделителем.

Допустим, мы выбрали предделитель 1024, частота микроконтроллера 8мГц.

8 000 000 / 1024 = 7813 — это частота, на которой работает наш таймер. По простому говоря, за одну секунду таймер тикнет 7813 раз.

Допустим, нам нужно, чтобы раз в 0,5 секунды выполнялся наш код. За одну секунду 7813 тиков, за пол секунды в 2 раза меньше — 3906. Именно это значение мы должны сравнивать с текущим количеством тиков. Но вот у нас совпали эти 2 значения и что дальше? Для этого существует такая полезная штука как прерывание. Это значит, что при совпадении, ваша текущая программа остановится и начнет выполняться тот код, который мы напишем в прерывании. Как только он будет выполнен, программа продолжит работу с того места, где была прервана. Вот такая полезная штука эти прерывания.

Вот теперь напишем нашу программу. Поэтому создаем проект с помощью мастера проектов. Сразу подключим LCD.

Переходим на вкладку Timers и тут остановимся поподробнее:

Выбираем частоту 7813 и устанавливаем галочку напротив пункта Interrupt on: Compare A Match. Таким образом мы указали, что при совпадении значения выполнять прерывание (то о чем было написано выше). Прерывание будем выполнять 1 раз в секунду, т.е. нам нужно тикнуть 7813 раз, поэтому переводим число 7813 в шестнадцатеричную систему и получим 1e85. Именно его и записываем в регистр сравнения Comp A. Регистр сравнения Comp A 16 битный, поэтому число больше 2^16=65536 мы записать не можем.

Генерим, сохраняем, вычищаем наш код. Появится новый непонятный кусок кода

// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{

}

Это то самое прерывание. Именно внутри этих скобок мы можем писать тот код, который мы хотели бы выполнять через определенные промежутки времени. У нас это одна секунда. Итак логично создать переменную, которую мы будем увеличивать 1 раз в секунду, т.е. 1 раз за прерывание. Поэтому проинициализируем переменную int s =0; а в прерывании будем ее увеличивать от 0 до 59. Значение переменной выведем на жк дисплей. Никаких хитростей, все очень просто.

Получившийся код.

#include <mega8.h>

 #asm

  .equ __lcd_port=0x18 ;PORTB

#endasm

#include <lcd.h>

 int s = 0; // переменная для хранения секунд

 // Обработка прерываний

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

{

   s++; // увеличиваем переменную каждую секунду

   if(s>59) // обнуляем секунды после 59

    {

      s=0;

    }

 

   TCNT1H=0;

  TCNT1L=0;

 }

  

 void main(void)

 {

 

 TCCR1A=0x00;

 TCCR1B=0x05;

 TCNT1H=0x00;

 TCNT1L=0x00;

 ICR1H=0x00;

 ICR1L=0x00;

 OCR1AH=0x1E;

 OCR1AL=0x85;

   TIMSK=0x10;

   lcd_init(8);

   #asm("sei")

 while (1)

 {

        lcd_gotoxy(0,0);  

       lcd_putchar(s/10+0x30);

        lcd_putchar(s%10+0x30);

     };

}


Варианты заданий

№ Варианта

Порт подключения дисплея

Кол-во знаков

дисплея

Начальное положение курсора на дисплее, x, y

Время прерывания, сек

Микро

контроллер

1

Порт А

24

0,1

0,28

ATmega16

2

Порт D

16

1,2

0,73

ATmega32

3

Порт B

24

1,3

2,02

ATmega64

4

Порт E

16

1,4

1,24

ATmega128

5

Порт B

12

0,2

1,55

ATmega16

6

Порт C

12

1,2

1,34

ATmega32

7

Порт C

20

0,2

1,77

ATmega64

8

Порт D

12

0,1

1,56

ATmega128

9

Порт C

16

0,3

1,22

ATmega16

10

Порт B

20

1,5

1,45

ATmega32

11

Порт D

16

1,6

2,12

ATmega64

12

Порт C

12

0,0

2,47

ATmega128

13

Порт D

20

1,7

0,95

ATmega16

14

Порт А

24

1,9

1,23

ATmega32

15

Порт E

16

1,8

0,77

ATmega64

Отчет должен содержать:

  1.  Схему устройства;
  2.  Код программы с пояснениями.


 

А также другие работы, которые могут Вас заинтересовать

53743. Обобщающий урок по теме “Природа”. Урок - КВН 51 KB
  Природа Да все что нас окружает это природа. Природа прекрасна в любое время года. Весной мы можем наблюдать как вся природа просыпается от зимней спячки.
53744. Роль имени прилагательного в русском языке 88.5 KB
  Цель: Обучающая учить детей правильно использовать имена прилагательные в речи находить прилагательные и по существенным признакам определять предмет; Развивающая развивать критическое мышление умение ставить проблемные вопросы выдвигать гипотезы анализировать и сравнивать обобщать полученные данные и делать выводы; развивать устную и письменную речь учащихся; Воспитывающая создать условия для формирования познавательного интереса к русскому языку воспитания культуры общения в группе со сверстниками; воспитывать...
53745. Столетняя война 72 KB
  Учитель приветствует учеников и организует повторение ими материала прошлого урока. Учитель проводит фронтальный опрос класса по теме прошлого урока. которая подтвердила права и вольности церкви городов рыцарей баронов свободного населения Что такое совет двадцати пяти совет баронов который следил за исполнением Великой хартии вольностей; в случае нарушения условий этой хартии бароны могли начать военные действия против короля всяческими способами добиваться исправления нарушений Затем учитель заслушивает письменные ответы...
53746. Ателье мод 47 KB
  Как вы думаете какие Правильно основной материал для изготовления одежды это ткань. Что такое ткань Ткань изделие изготовленное путём плотного соединения накрест переплетённых нитей расположенных двумя рядами продольными основа и поперечными уток. Первая ткань которую мы с вами рассмотрим это хлопок. Преимущества хлопковой ткани: Мягкость Хорошая поглощающая способность в тёплое время Лёгкость в окраске Давайте с вами заполним табличку хлопковая ткань она натуральная или синтетическая Пощупайте хлопковую ткань она...
53747. Конструирование из бумаги. Изготовление новогодней елочки 95.5 KB
  Технологии: технология сотрудничества, деятельностный подход, активное обучение, технологии объяснительно-иллюстративного обучения (в основе которых информирование, просвещение учащихся и организация из репродуктивных действий с целью выработки у них общеучебных умений и навыков).
53748. Теорема Виета 95 KB
  Предметные результаты: наблюдать и анализировать связь между корнями и коэффициентами квадратного уравнения. Формулировать и доказывать теорему Виета, а также обратную теорему, применять теоремы для решения уравнений и задач.
53749. Прогнозирование экономических показателей. Модели финансового планирования 27.5 KB
  Экономический прогноз — это научно обоснованное предвидение возможных направлений и результатов развития субъектов хозяйствования и их структурных подразделений. Методы экономического прогнозирования можно условно объединить в две группы. Наверняка все из вас пускали самолетики лодочки красовались в треуголке из бумаги различных форм фигурок это и есть оригами. Однако независимые традиции складывания из бумаги хоть и не столь развитые как в Японии существовали среди прочего в Китае Корее Германии и Испании.
53750. День святого Валентина 43.5 KB
  Как они называются валентинки А знаете ли вы что согласно легенде в далекие времена жестокий римский император Клавдий II решил что одинокий мужчина без семьи и жены лучше сражается на поле битвы и запретил мужчинам жениться. Сегодня нам предстоит пусть с опозданием но изготовить валентинки для своих родных а может и любимых своими руками потому что мы знаем знаменитую пословицу: Лучше поздно чем ...
53751. Звери в лесу 48.5 KB
  Закрепить навык разметки по шаблонам, вырезание деталей сложной формы в виде встречного реза, выполнение алгоритма изготовления аппликации умение составлять композицию, намазывать детали клеем используя подкладной лист, приклеивать последовательно детали аппликации используя притирочный лист.