15318

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

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

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

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

Русский

2013-06-11

89 KB

10 чел.

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


 

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

21708. Модуль Жизненный цикл интеллектуальной системы 147.5 KB
  2] Этап 2: Разработка прототипной системы [1.4] Этап 4: Оценка системы [1.5] Этап 5: Стыковка системы [1.
21709. Модуль Методы представления знаний: Нечеткая логика 192 KB
  Математический аппарат Характеристикой нечеткого множества выступает функция принадлежности Membership Function. Обозначим через MFcx – степень принадлежности к нечеткому множеству C представляющей собой обобщение понятия характеристической функции обычного множества. Значение MFcx=0 означает отсутствие принадлежности к множеству 1 – полную принадлежность. Так чай с температурой 60 С принадлежит к множеству 'Горячий' со степенью принадлежности 080.
21711. Оценка вероятностей возможных последствий от нарушений электроснабжения потребителей 181.5 KB
  Оценка вероятностей возможных последствий от нарушений электроснабжения потребителей Для решения широкого класса задач эксплуатации и проектирования с учётом фактора надёжности необходимо определение вероятностей возникновения возможных последствий от нарушения электроснабжения потребителей которые сводятся к следующим: вероятность возникновения катастрофических и аварийных ситуаций исследование которых необходимо для нормирования надёжности электроснабжения; вероятность возникновения отдельных составляющих ущерба их величина и...
21712. ИСПЫТАНИЯ НА НАДЕЖНОСТЬ ЭМС. КОНТРОЛЬНЫЕ ИСПЫТАНИЯ 2.49 MB
  Показатели надежности экспериментальными методами могут быть получены по результатам либо испытаний – специальных или совмещенных либо наблюдением за функционированием объекта в условиях эксплуатации. Методы испытаний организуются специально с целью определения показателей надежности объем их обычно заранее планируется условия функционирования объектов устанавливаются исходя из требований оценки конкретных показателей. Показатели надежности таких объектов оцениваются в основном либо по результатам совмещенных испытаний при которых...
21713. СТАТИСТИЧЕСКИЕ МЕТОДЫ ОЦЕНКИ, АНАЛИЗА И КОНТРОЛЯ НАДЕЖНОСТИ 358.5 KB
  Сбор информации об отказе элементов технических систем В общем комплексе мероприятий по обеспечению надёжности любого изделия сбор статистической информации об отказах и оценка показателей надёжности в условиях эксплуатации являются последним заключительным этапом. При этом появляется возможность оценить реальные значения показателей надежности и следовательно оценить эффективность мероприятий по обеспечению надёжности на всех этапах – проектирование производство испытания монтаж эксплуатация. Поэтому особое значение приобретает вопрос...
21714. ИСПЫТАНИЯ НА НАДЕЖНОСТЬ ЭМС. ОПРЕДЕЛИТЕЛЬНЫЕ ИСПЫТАНИЯ 3.06 MB
  При определительных испытаниях могут оцениваться законы распределения отказов и их параметры. При определительных испытаниях могут оцениваться законы распределения отказов и их параметры. Однако существует универсальный план испытаний позволяющий по единой методике проводить статистическую оценку величины Р для изделий с любым законом распределения. Полученные данные по отказам изделий в результате испытаний или по данным эксплуатации подвергаются статистической обработке для получения следующих результатов: определения вида функции...
21715. Планирование эксперимента при ускоренных испытаниях электрических машин 102 KB
  ТЕМА № 2 Регрессионный анализ установившихся режимов электрической системы Для этой цели целесообразно использование регрессионного моделирования сложной системы. При этом с использованием имеющихся программ расчета установившегося режима на ЭВМ проводятся целенаправленные исследования в результате которых получаются регрессионные модели для анализа или управления. Такие модели могут быть получены при регрессионном анализе или методом планирования многофакторного эксперимента МПЭ. При этом для построения линейных моделей используется полный...
21716. Законы распределения отказов 2.99 MB
  Законы распределения отказов Случайной называется величина которая в результате испытаний может принять то или иное значение причем заранее неизвестно какое именно. Если задан ряд распределений вероятностей для значений случайной величины X то математическое ожидание определяется по формуле Показателями характеризующими степень рассеяния случайной величины около своего математического ожидания являются дисперсия и среднее квадратическое отклонение: Для более полного описания случайных величин вводятся понятия функции распределения...