15318

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

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

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

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

Русский

2013-06-11

89 KB

9 чел.

Лабораторная работа №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.  Код программы с пояснениями.


 

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

33464. Співучастю у злочині 29 KB
  Таким чином, при окресленні обєктивних і субєктивних ознак співучасті має місце вказівка на спільність
33465. Субєкт злочину 29 KB
  Передусім субєктом злочину може бути тільки фізична особа, тобто людина. Нести кримінальну відповідальність можуть громадяни України, іноземці й особи без громадянства. Тому не можуть бути визнані субєктом злочину юридичні особи (підприємства, установи, громадські організації і т. ін.).
33466. Субєктивна сторона злочину 25.5 KB
  Відсутність певного мотиву або мети також може виключати склад злочину і кримінальну відповідальность.
33467. Судимість 35 KB
  Підставою судимості є наявність обвинувального вироку суду який набрав законної сили і яким особа засуджується до певного покарання. Тому такими що не мають судимості визнаються: а особи засуджені вироком суду без призначення покарання; б особи засуджені вироком суду із звільненням від покарання; в особи які відбули покарання за діяння злочинність і караність яких виключена законом.Погашення судимості. Погашення судимості це автоматичне її припинення при встановленні певних передбачених законом умов.
33468. Тлумачення закону 32 KB
  Тлумачення закону поділяється на види залежно від суб'єкта тлумачення прийомів засобів та обсягу тлумачення. Залежно від суб'єкта який роз'яснює закон розрізняють легальне або офіційне судове і наукове або доктринальне тлумачення. Легальним офіційним зветься тлумачення що здійснюється органом державної влади уповноваженим на те законом. 150 Конституції України правом офіційного тлумачення законів в тому числі кримінальних наділений Конституційний Суд України.
33469. Мета злочину 29 KB
  В багатьох злочинах субєктивна сторона потребує встановлення мотиву і мети, що є її факультативними ознаками. Вони мають значення обовязкових ознак лише в тих випадках, коли названі в диспозиції статті ОЧ КК як обовязкові ознаки конкретного злочину. У деяких складах злочинів закон вказує на емоційний стан особи
33470. Фізичний або психічний примус 27 KB
  40 КК передбачає що не є злочином дія або бездіяльність особи яка заподіяла шкоду правоохоронюваним інтересам вчинена під безпосереднім впливом фізичного примусу внаслідок якого особа не могла керувати своїми діями. Підставою виключення злочинності діяння у випадку що аналізується є непереборний фізичний примус під безпосереднім впливом якого особа заподіює шкоду правоохоронюваним інтересам. Фізичний примус насильство це протиправний фізичний вплив на людину наприклад застосування фізичної сили нанесення удару побоїв тілесних...
33471. Форми співучасті 29 KB
  У такому разі говорять про просту і про складну співучасть: 1 проста співучасть співвиконавство співвинність має місце там де всі співучасники є виконавцями злочину і отже всі вони виконують однорідну роль. Але з погляду форми співучасті їх ролі однорідні всі вони безпосередньо виконують дії описані в диспозиції статті Особливої частини КК як ознаки об'єктивної сторони конкретного складу злочину в даному випадку розбою; 2 складна співучасть співучасть з розподілом ролей виявляється в тому що співучасники виконують різнорідні...
33472. Законодавство 29 KB
  Статті Загальної частини КК містять норми що встановлюють принципи та загальні положення кримінального права; чинність кримінального закону в просторі та часі; визначають поняття злочину; стадії вчинення злочину; ознаки суб’єкта злочину; зміст вини; співучасть у вчиненні злочинів; види множини злочинів; обставини що виключають злочинність діяння; підстави звільнення від кримінальної відповідальності від покарання та його відбування; загальні засади призначення покарання. Загальна і Особлива частини КК взаємозв’язані між собою і складають...