Студопедия — Указания по организации самостоятельной работы. Перед работой необходимо проработать теоретический материал по литературе [1 – 3] и конспект лекций
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Указания по организации самостоятельной работы. Перед работой необходимо проработать теоретический материал по литературе [1 – 3] и конспект лекций






 

Перед работой необходимо проработать теоретический материал по литературе [1 – 3] и конспект лекций, изучить принципы разработки процедур обработки прерываний в микроконтроллере AVR АТMEGA 128, ознакомиться с возможностями функционирования встроенных в микроконтроллер 8 и
16-разрядных таймеров/счетчиков, изучить алгоритмы формирования временных задержек с помощью прерываний от таймеров/счетчиков.

 

4.1.1 Система прерываний в микроконтроллере AVR АТMEGA 128

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

Вектор прерывания представляет собой адрес процедуры обработки прерывания. Вектора прерываний от разных источников объединены в структуру, называемую таблицей векторов прерываний. В микроконтроллере
AVR АТMEGA 128 таблица векторов прерываний находится, начиная с адреса 0002h. Положение вектора в таблице прерываний определяет приоритет соответствующего прерывания, который уменьшается с увеличением адреса в таблице прерывания (чем меньше адрес – тем выше приоритет). Размещение векторов прерываний микроконтроллера AVR АТMEGA 128 приводится в таблице 4.1. Регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, то это должно производиться программой пользователя.

 

 

Таблица 4.1 – Номера векторов прерываний и идентификаторы процедур-обработчиков прерываний микроконтроллера AVR АТMEGA 128

Номер вектора Адрес Источник прерывания Идентификатор прерывания Описание прерывания
         
  0000h RESET   Вывод сброса, отключение электропитания, сброс от сторо­жевого таймера
  0002h INT0 EXT_INT0 Внешнее прерывание по линии запроса 0
  0004h INT1 EXT_INT1 Внешнее прерывание по линии запроса 1
  0006h INT2 EXT_INT2 Внешнее прерывание по линии запроса 2
  0008h INT3 EXT_INT3 Внешнее прерывание по линии запроса 3
  000Аh INT4 EXT_INT4 Внешнее прерывание по линии запроса 4
  000Сh INT5 EXT_INT5 Внешнее прерывание по линии запроса 5
  000Еh INT6 EXT_INT6 Внешнее прерывание по линии запроса 6
  0010h INT7 EXT_INT7 Внешнее прерывание по линии запроса 7
  0012h TIMER2 COMP TIM2_COMP Совпадение таймера/счетчика Т2
  0014h TIMER2_OVF TIM2_OVF Переполнение таймера/счетчика Т2
  0016h TIMER1 CAPT1 TIM1_CAPT Захват таймера/счетчика Т1
  0018h TIMER1 COMP1 TIM1_COMPA Совпадение «А» таймера/счетчика Т1
  001Аh TIMER1 COMPB TIM1_COMPB Совпадение «В» таймера/счетчика Т1
  001Сh TIMER1 OVF TIM1_OVF Переполнение таймера/счетчика Т1
  001Еh TIMER0 COMP TIM0_COMP Совпадение таймера/счетчика Т0
  0020h TIMER0 OVF TIM0_OVF Переполнение таймера/счетчика Т0
  0022h SPI STC SPI_STC Передача данных по SPI закончена
  0024h USART0 RXC USART0_RXC Прием по интерфейсу UART0 завершен
  0026h USART0 DRE USART0_DRE Регистр данных UART0 пуст
  0028h USART0 TXC USART0_TXC Передача по USART0 завершена
  002Аh ADC INT ADC_INT Преобразование АЦП завершено
  002Сh EE RDY EE_RDY Прерывание при готовности EEPROM
  002Еh ANA COMP ANA_COMP Прерывание от аналогового компаратора

Продолжение таблицы – 4.1

         
  0030h TIMER1 COMPC TIM1_COMPC Совпадение «С» таймера/счетчика Т1
  0032h TIMER3 CAPT TIM3_CAPT Захват таймера/счетчика Т3
  0034h TIMER3_COMPA TIM3_COMPA Совпадение «А» таймера/счетчика Т3
  0036h TIMER3_COMPB TIM3_COMPB Совпадение «В» таймера/счетчика Т3
  0038h TIMER3_COMPC TIM3_COMPC Совпадение «В» таймера/счетчика Т3
  003Аh TIMER3_OVF TIM3_OVF Переполнение таймера/счетчика Т3
  003Сh USART1_RXC USART1_RXC Прием по интерфейсу UART1 завершен
  003Еh USART1_DRE USART1_DRE Регистр данных UART1 пуст
  0040h USART1_TXC USART1_TXC Передача по USART1 завершена
  0042h TWI TWI Прерывание от модуля TWI
  0044h SPM_RDY SPM_RDY Готовность SPM

 

Функция – обработчик прерывания записывается в компиляторе Code Vision AVR С в соответствие со следующими правилами:

interrupt [ идентификатор прерывания ]

тип возвращаемого значения имя функции (список аргументов)

{

тело функции обработки прерывания

}

Пример декларации обработчика прерывания ADC_INT по вектору 002Аh, которое вырабатывается при завершении преобразования АЦП:

interrupt [ADC_INT] void adc_interrupt ( void )

{

тело функции обработки прерывания

}

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

 

4.1.2 Принципы функционирования аппаратных таймеров/счетчиков, входящих в состав микроконтроллера AVR АТMEGA 128

В микроконтроллере AVR АТMEGA 128 содержатся 4 аппаратных таймера/счетчика (Т0 – Т3), из которых Т0 и Т2 являются 8-разрядными, а Т1 и Т3 – 16-разрядными. В состав таймеров/счетчиков входят 3 основных регистра ввода/вывода: счетный регистр TCNTx, регистр управления TCCRx и регистр сравнения OCRx. Дополнительно для управления прерываниями от таймеров/счетчиков используются регистры TIMSK и TIFR.

В регистр TIMSK записываются управляющие (маскирующие) биты (см. рисунок 4.1).

 

№ бита                
37h(57h) ОCIE2 TOIE2 TICIE1 OCIE1А OCIE1В TOIE1 OCIE0 TOIE0

 

Рисунок 4.1 – Регистр маски прерываний от таймеров/счетчиков – TIMSK.

 

Описание управляющих битов регистра TIMSK приводится ниже:

Бит 7 – OCIE2: разрешение прерывания по совпадению 8-разрядного таймера/счетчика Т2;

Бит 6 – TOIE2: разрешение прерывания по переполнению 8-разрядного таймера/счетчика Т2;

Бит 5 – TIСIE1: разрешение прерывания по событию «захват» 16-разрядного таймера/счетчика Т1;

Бит 4 – OCIE1А: разрешение прерывания по совпадению «А» 16-разрядного таймера/счетчика Т1;

Бит 3 – OCIE1В: разрешение прерывания по совпадению «В» 16-разрядного таймера/счетчика Т1;

Бит 2 – ТОIE1: разрешение прерывания по переполнению 16-разрядного таймера/счетчика Т1;

Бит 1 – OСIE0: разрешение прерывания по совпадению 8-разрядного таймера/счетчика Т0;

Бит 0 – TOIE0: разрешение прерывания по переполнению 8-разрядного таймера/счетчика Т0.

 

В регистре TIFR формируются соответствующие флаги (см. рисунок 4.2).

 

№ бита                
36h (56h) OCF2 TOV2 ICF1 OCF1А OCF1В TOV1 OCF0 TOV0

 

Рисунок 4.2 – Регистр флагов прерываний от таймеров/счетчиков – TIFR

Описание флагов регистра TIFR приводится ниже:

Бит 7 – OCF2: флаг прерывания по совпадению 8-разрядного таймера/счетчика Т2;

Бит 6 – TOF2: флаг прерывания по переполнению 8-разрядного таймера/счетчика Т2;

Бит 5 – ICF1: флаг прерывания по событию «захват» 16-разрядного таймера счетчика Т1;

Бит 4 – OСF1A: флаг совпадения «А» 16-разрядного таймера/счетчика Т1;

Бит 3 – OСF1В: флаг совпадения «В» 16-разрядного таймера/счетчика Т1;

Бит 2 – TOV1: флаг прерывания по переполнению 16-разрядного таймера/счетчика Т1;

Бит 1 – OCF0: флаг прерывания по совпадению 8-разрядного таймера/счетчика Т0;

Бит 0 – TOV0: флаг прерывания по переполнению 8-разрядного таймера/счетчика Т0.

 

Рассмотрим подробно принципы функционирования 8-разрядного таймера/счетчика Т0, структурная схема которого представлена на рисунке 4.3. В состав таймера/счетчика Т0 входят три 8-разрядных регистра ввода/вывода:

- счетный регистр TCNT0;

- регистр сравнения OCR0;

- регистр управления TCCR0.

Дополнительно для задания режимов работы и управления прерываниями используются регистры ASSR, TIMSK и TIFR. Адреса основных регистров таймера/счетчика Т0 c указанием их идентификаторов приводятся в таблице 4.2.

 

Таблица 4.2 – Адреса* и аббревиатуры регистров, использующихся при работе с таймером/счетчиком Т0

 

Адрес* Аббревиатура Адрес* Аббревиатура Адрес* Аббревиатура
032h TCNT0 033h TCCR0 037h TIMSK
031h OCR0 030h ASSR 036h TIFR

*Адреса регистров указываются в адресном пространстве ввода/вывода.

 

Регистр ASSR (см. рисунок 4.4) позволяет задать режим работы таймера/счетчика Т0. Сигнал AS0 подается на адресный вход мультиплексора MUX1 и определяет входной сигнал для предварительного делителя Prsc частоты. Результирующая частота fр0 таймера/счетчика Т0 (частота обновления значений в счетном регистре TCNT0, период – Тр0) определяется значениями битов CS00, CS01, CS02 регистра TCCR0 (см. рисунок 4.5), с помощью которого устанавливаются необходимые параметры работы таймера. В зависимости от режима работы, значения, содержащиеся в счетном регистре TCNT0, либо инкрементируются, либо декрементируются (изначально в TCNT0 содержится 0). Флаг переполнения таймера нахо­дится в регистре TIFR (см. рисунок 4.2). Разрешение и запрещение прерываний от таймера устанавливается в соответствующих битах регистра TIMSK (см. рисунок 4.1).

 

Рисунок 4.3 – Структурная схема 8-разрядного таймера/счетчика Т0

 

Таймер/счетчик Т0 можно использовать как счетчик с высо­ким разрешением, так и для точных применений с низким коэффициентом деления тактовой частоты. Более высокие коэффициенты деления можно указывать для работы с медленно изменяющимися функциями или при измерении длительности временных интервалов между редкими событиями. При переполнении счетного регистра TCNT0 устанавливается флаг ТОV0. В каждом цикле работы таймера/счетчика Т0 происходит сравнение значений, находящихся в счетном регистре TCNT0 и регистре сравнения ОСR0. В случае равенства содержимого этих регистров устанавливается флаг OCF0 регистра TIFR (см. рисунок 4.2). Если в регистре TIMSK (см. рисунок 4.1) установлены управляющие биты ТОIE0 и OCIE0, то при возникновении событий ТСNT0>255 (переполнение) и TCNT0=OCR0 (совпадение) генерируются соответствующие прерывания, обработчики которых описываются как:

 

interrupt [TIM0_OVF] void timer0_overflow (void) // переполнение;

interrupt [TIM0_COMP] void timer0_compare (void) // совпадение.

 

Прерывания обрабатываются только при установленном флаге I разрешения прерываний регистра состояния SREG.

 

№ бита                
30h (50h) Х Х Х Х AS0 TCN0UB TCN0UB TCN0UB

 

Рисунок 4.4 – Регистр управления таймером/счетчиком Т0

в асинхронном режиме – ASSR

 

Описание управляющих битов регистра ASSR приводится ниже:

Биты 7…4 – зарезервированы и всегда читаются как 0;

Бит 3 – AS0: бит переключения режима работы 8-разрядного таймера/счетчика Т0: если AS0=0, то на вход предварительного делителя частоты поступает внутренний тактовый сигнал микроконтроллера с частотой CLK (синхронный режим), если AS0=1, то на вход предварительного делителя частоты поступает внешний тактовый сигнал по линии ТOSC1 (асинхронный режим);

Бит 2 – ТСNТ0UB: флаг обновления счетного регистра TCNT0: в начале операции записи нового значения в TCNT0 флаг устанавливается в 1, а при завершении – в 0;

Бит 1 – OCR0UB: флаг обновления регистра сравнения OCR0: в начале операции записи нового значения в OCR0 флаг устанавливается в 1, а при завершении – в 0;

Бит 0 – ТСR0UB: флаг обновления управляющего регистра TCСR0: в
начале операции записи нового значения в TCСR0 флаг устанавливается в 1, а при завершении – в 0;

 

 

№ бита                
33h (53h) FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00

 

 

Рисунок 4.5 – Регистр управления таймером/счетчиком Т0 - TCCR0

 

Описание управляющих битов регистра TCCR0 приводится ниже:

Бит 7 – FOC0: бит установки принудительного изменения состояния вывода ОС0: FOC0=0 в режимах “Быстродействующий ШИМ” и “ШИМ с точной фазой”, если FOC0=1, то состояние вывода ОСN0 изменяется в соответствие с установками разрядов COM00 и СОМ01;

Биты 6,3 – WGM00, WGM01: определяют режим работы таймера/счетчика Т0 (см. таблицу 4.3);

Биты 5,4 – COM01, COM00: определяют поведение вывода OC0 при появлении события «совпадение» (см. таблицу 4.4);

Биты 2,1,0 – СS02, CS01, CS00: определяют частоту тактового сигнала таймера/счетчика Т0 (см. таблицу 4.5);

 

Таблица 4.3 – Режимы работы таймера/счетчика Т0

WGM01 WGM00 Описание режима работы таймера/счетчика Т0
    Стандартный (Normal)
    ШИМ с точной фазой (Phase correct PWM)
    Сброс при совпадении (CTC)
    Быстродействующий ШИМ Fast PWM

 

Таблица 4.4 – Режимы управления выводом ОС0 таймера/счетчика Т0

COM01 COM00 Описание режима управления выводом ОС0
    Таймер/счетчик Т0 отключен от вывода ОС0
    Инверсия сигнала на выводе ОС0
    Вывод ОС0 сбрасывается в 0
    Вывод ОС0 устанавливается в 1

 

При работе таймера/счетчика Т0 от внешнего сигнала, внешний сигнал синхронизируется с сигналом CLK тактового генератора микроконтроллера. Для корректной обработки внешнего сигнала, минимальный интервал между соседними импульсами внешнего сигнала должен превышать период тактовой частоты процессора. Сигнал внешнего источни­ка обрабатывается по спадающему фронту тактовой частоты процессора.

 

Таблица 4.5 – Значения коэффициентов для предварительного делителя частоты таймера/счетчика Т0

CS02 CS01 CS00 Описание f р0, кГц Тр0, мкс
      Таймер/счетчик остановлен  
      CLK   0,09
      CLK/8   0,72
      CLK/32   2,88
      CLK/64   5,76
      CLK/128   11,52
      CLK/256   23,04
      CLK/1024 11,7 92,16

 

В состав микроконтроллера AVR MEGA 128 входят два 16-разрядных таймера/счетчика Т1 и Т3. Данные устройства, за исключением некоторых специфических функций (например, режим “захвата”), работают аналогично 8-разрядным таймерам/счетчикам и используются для сходных целей, однако позволяют выполнять счет со значительно меньшими частотами.

Рассмотрим подробно функционирование таймера/счетчика Т1. В состав таймера/счетчика Т1 входят следующие регистры:

- 16-разрядный счетный регистр TCNT1;

- три 16-разрядных регистра сравнения OCR1A, OCR1B, OCR1C;

- три 16-разрядных регистра управления TCCR1A, TCCR1B, TCCR1C;

- 16-разрядный регистр захвата ICR1.

Дополнительно для задания режимов работы и управления прерываниями используются регистры TIMSK, ETIMSK, TIFR, ETIFR, ICR1. Адреса основных регистров таймера/счетчика Т1 c указанием их идентификаторов приводятся в таблице 4.6.

Каждый 16-разрядный регистр физически размещается в двух 8-разрядных регистрах ввода/вывода, аббревиатуры которых получаются путем добавления к названию регистра букв H (High, старший байт) L (Low – младший байт). Например, 16-разрядный счетный регистр TCNT1 физически находится в двух 8-разрядных регистрах TCNT1H: TCNT1L. Для того, чтобы запись или чтение обоих байт, входящих в состав 16-разрядного регистра, происходила одновременно, в составе таймеров/счетчиков Т1 и Т3 имеется специальный (программно недоступный) 8-разрядный регистр TEMP, предназначенный для хранения старшего байта значения.

Таблица 4.6 – Адреса* и аббревиатуры регистров, использующихся при работе с таймером/счетчиком Т1

Адрес* Аббревиатура Адрес* Аббревиатура
02Ch TCNT1L 02Fh TCCR1A
02Dh TCNT1H 02Eh TCCR1B
02Ah OCR1AL 07Аh TCCR1C
02Bh OCR1AH 036h TIFR
028h OCR1BL 07Ch ETIFR
029h OCR1BH 037h TIMSK
078h OCR1CL 07Dh ETIMSK
079h OCR1CH    

*Адреса регистров указываются в адресном пространстве ввода/вывода.

 

При записи 16-разрядного значения сначала должен быть загружен старший байт (в регистр ТЕМР), а затем младший байт с регистром ТЕМР записываются в одном такте. Прерывания при записи данных в 16-разрядные регистры прерывания должны быть запрещены. В режиме чтения сначала должен быть считан младший байт 16-разрядного регистра. Счетный регистр TCNT1 используется для хранения значений реверсивного счетчика, данные в котором инкрементируются или декрементируются по фронту тактового сигнала таймера/счетчика Т1. Если установлен флаг TOIE1 в регистре TIMSK (cм. рисунок 4.1), то при переполнении TCNT1 генерируется прерывание и устанавливается флаг TOV1 в регистре TIFR (см. рисунок 4.2). Заголовок процедуры обработки прерывания по переполнению регистра-счетчика TCNT1 может выглядеть следующим образом:

interrupt [TIM1_OVF] void timer1_overflow (void).

Блок сравнения таймера/счетчика Т1 содержит три 16-разрядных регистра сравнения OCR1A, OCR1B, OCR1C. Во время работы таймера/счетчика в каждом машинном цикле выполняется непрерывное сравнение данных этих регистров со значением в TCNT1. При равенстве значений этих регистров генерируются прерывания по сравнению (при установленных флагах TOIE1А, TOIE1В, TOIE1С в регистрах TIMSK / ЕTIMSK) и устанавливаются соответствующие флаги OCF1A, OCF1A, OCF1A в регистрах TIFR / ETIFR. Описания заголовков процедур обработки прерываний по сравнению может выглядеть следующим образом:

interrupt [TIM1_COMPA] void timer1_compareА (void);

interrupt [TIM1_COMPВ] void timer1_compareВ (void);

nterrupt [TIM1_COMPС] void timer1_compareС (void).

В стандартном режиме работы все биты управляющих регистров TCCR1A и TCCR1С устанавливаются в 0 (подробное описание данных регистров приводится в [1]). Формирование тактового сигнала таймера/счетчика осуществляется с помощью предделителя. Результирующая частота fр1 таймера/счетчика Т1 (частота обновления значений в счетном регистре TCNT1,период – Тр1) определяется значениями битов CS00, CS01, CS02 регистра TCCR1B (см. рисунок 4.6), с помощью которого устанавливаются необходимые параметры работы таймера (см. таблицу 4.7). Автоматический сброс счетного регистра TCNT1 при совпадении со значением регистра OCR1A программируется путем установки 3-го бита регистра TCCR1В в 1.

 

№ бита                
2Eh (4Eh) FOC0 WGM00 COM01 WGM13 WGM12 CS02 CS01 CS00

 

Рисунок 4.6 – Регистр управления таймером/счетчиком Т1 – TCCR1B

 

Описание управляющих битов регистра TCCR1B сходно с описанием битов регистра TCCR0 (см. рисунок 4.5).

 

Таблица 4.6 – Значения коэффициентов для предварительного делителя частоты таймера/счетчика Т1

CS02 CS01 CS00 Описание f р1, кГц Тр1, мкс
      Таймер/счетчик остановлен  
      CLK   0,09
      CLK/8   0,72
      CLK/64   5,76
      CLK/256   23,04
      CLK/1024 11,7 92,16
      Счет осуществляется по заднему фронту импульсов на линии Т1 _   _
      Счет осуществляется по переднему фронту импульсов на линии Т1 _ _

Пример С–программы инициализации таймера/счетчика Т0 для генерирования прерываний по переполнению, работающего в стандартном режиме с частотой CLK/1024 приводится ниже:

ASSR = 0; задание синхронного режима работы;

TCCR0 = 7; задание параметров предделителя;

TIMSK = 1; установка бита TOIE0 для разрешения прерывания по переполнению таймера/счетчика Т0;

#asm("sei"); разрешить прерывания в системе.

 

4.2 Описание лабораторной установки

 

Лабораторная работа выполняется в индивидуальном порядке. На каждом рабочем месте должны быть установлены: многофункциональный лабораторный макет на базе микроконтроллера AVR ATMEGA 128, ПЭВМ типа IBM PC/AT c инсталлированным программным обеспечением: операционной системой MS–WINDOWS v. 9x, 2000, XP и программатором на основе кросс-компилятора языка программирования C CodeVision AVR. Задания выполняются на лабораторном макете на базе 8-разрядного микроконтроллера AVR ATMEGA 128. Исследуемые в работе таймеры/счетчики Т0 и Т1 входят в состав микроконтроллера. Для индикации режимов работы таймеров дополнительно используется блок из 8 светодиодов (см. рисунок 1.7), подключенных к микроконтроллеру через порт D в соответствие со схемой, приведенной на рисунке 1.9 (катоды светодиодов подключены к выводам порта D, на аноды светодиодов подано положительное напряжение). Подробное описание лабораторного макета приведено в пункте 1.2 лабораторной работы № 1.

 

4.3 Порядок проведения работы и указания по ее выполнению

 

Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования таймеров/счетчиков, входящих в состав микроконтроллера AVR ATMEGA 128, а также по способам задания и измерения временных интервалов. При подготовке к лабораторной работе необходимо составить предварительный вариант листинга программы, в соответствие с индивидуальным заданием (см. таблицу 4.7).

Задание. Разработать в среде программирования Code Vision AVR программу на языке С для микроконтроллера AVR ATMEGA 128, управляющую блоком из 8-ми светодиодов. Временные параметры индикации задаются с помощью установок таймеров/счетчиков Т1 или Т0. Варианты индивидуальных заданий представлены в таблице 4.7.

Порядок выполнения задания:

1. Включить лабораторный макет (установить выключатель электропитания в положение I, и убедиться в свечении индикатора электропитания красным цветом).

2. Запустить компилятор Code Vision AVR.

3. Создать пустой проект.

4. Создать файл ресурса для кода программы и подключить его к проекту.

5. Ввести код исходного модуля программы управления блоком светодиодов в соответствие с вариантом задания, указанном в таблице 4.7.

6. Выполнить компиляцию (нажав клавишу F9) исходного модуля программы и устранить ошибки, полученные на данном этапе.

7. Настроить параметры программатора.

8. Создать загрузочный модуль программы (нажав комбинацию клавиш Shift+F9) и выполнить программирование микроконтроллера.

9. Проверить работоспособность загруженной в микроконтроллер программы и показать результаты работы преподавателю.

10. В случае некорректной работы разработанной программы, выполнить аппаратный сброс микроконтроллера, провести отладку исходного модуля программы и заново проверить функционирование программы, повторив выполнение пункта 9.

 

Пример выполнения задания:разработать программу, выполняющую в бесконечном цикле управление блоком светодиодов в режиме “бегущий огонь” (с последовательным включением/выключением светодиодов блока индикации). Задание временных интервалов выполнить с помощью следующих настроек таймера Т1: управляющее прерывание TIM1_OVF,частота счета f р1 = 43 КГц.

Решение:Программное управление блоком светодиодов в режиме “бегущий огонь” можно обеспечить, записывая во все, кроме нулевого, разряды регистра PORTD порта D уровни “логической единицы” (погасить все светодиоды кроме нулевого), а затем выполняя циклическое перемещение нулевого уровня по линиям порта D. Данные действия необходимо разметить в обработчике прерывания TIM1_OVF по переполнению от таймера/счетчика Т1.

Частота изменения значений в счетном регистре TCNT1 таймера/счетчика Т1 равна 43 КГц (см. таблицу 4.6):

f р1 = CLK/256 = 11 Мгц/256 = 43 КГц.

Соответственно значение, заносимое в регистр TCCR1B, равняется 4.

Период изменения значений в счетном регистре TCNT1:

Тр1=1/ f р1=23 мкс.

Соответственно длительность одного полного цикла счета таймера Т1 равна:

t1=23 мкс · 65536 ≈1,5 с.

Таким образом, с интервалом 1,5 с будет осуществляться циклическое перемещение зажженного светодиода (согласно алгоритму, приведенному на рисунке 4.7).

Полный текст исходного модуля программы на языке С с подробными комментариями приводится ниже:

#include <mega128.h>; Подключить заголовочный файл mega128.h;

unsigned char ld_stat=0xFE;описание глобальной переменной ld_stat

с присвоением начального значения 0xfe;

interrupt [TIM1_OVF] void timer1_overflow(void) процедура обработки

{ прерывания по переполнению от таймера–счетчика Т1;

led_stat<<=1;выполнить логический сдвиг на 1 разряд значения в ld_stat;

ld_stat|=1;выполнить операцию логического ИЛИ над младшим битом

переменной ld_stat;

if (ld_stat==0xFF) ld_stat=0xFE;при переносе нулевого значения из 7-го бита (за пределы левой границы блока светодиодов) загрузить в переменную ld_stat начальное значение 0xFE;

PORTD=ld_stat;вывести значение led_status в PORTD дляиндикации;

} завершение процедуры обработки прерывания;

main() { основная часть программы;

DDRD=0xFF; настроить порт D на вывод данных;

PORTD=0xFF;погасить все светодиоды;

TCCR1A=0; задание режимов работы для таймера/счетчика Т1;

TCCR1B=4; задание частоты работы для таймера/счетчика Т1;

TIMSK=4; разрешить прерывание TIM1_OVF по переполнению

16 разрядного таймера/счетчика Т1;

#asm("sei");установить бит I общего разрешения прерываний;

while (1) { } установить цикл с бесконечным числом итераций;

} завершающая операторная скобка программы.

 

 

Рисунок 4.7 – Алгоритм программы управления блоком светодиодов

в режиме “бегущий огонь”

 

Таблица 4.7 – Варианты индивидуальных заданий

Номер Задание
   
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 1–го светодиода: управляющее прерывание TIM1_OVF,частота счета f р1 = 43 КГц.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 2–го светодиода: управляющее прерывание TIM0_OVF,частота счета f р1 = 11,7 КГц.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го светодиода: управляющее прерывание TIM1_COMPA, f р1 = 43 КГц, OCR1A=40000.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 0–го и 7–го светодиодов: управляющее прерывание TIM1_COMPВ, f р1 = 43 КГц, OCR1В=50000.

Продолжение таблицы 4.7

   
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 4–го и 5–го светодиодов: управляющее прерывание TIM1_COMPB, f р1 = 43 КГц, OCR1B=30000.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го и 6–го светодиодов: управляющее прерывание TIM0_OVF,частота счета f р1 = 11 КГц,OCR0=200.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 2–го светодиода: управляющее прерывание TIM1_COMPA, f р1 = 11 КГц, OCR1A=10000.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го и 6–го светодиодов: управляющее прерывание TIM1_OVF,частота счета f р1 = 86 КГц.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 1–го и 2–го светодиодов: управляющее прерывание TIM1_OVF,частота счета f р1 = 11 КГц.
  Разработать программу, выполняющую в бесконечном цикле включение/выключение 0–го и 5–го светодиодов: управляющее прерывание TIM1_COMPВ, f р1 = 43 КГц, OCR1В=30000.

* задания повышенной сложности.

 

Содержание отчета

 

В отчете необходимо привести следующее:

– характеристики лабораторной вычислительной системы;

– исходный модуль разработанной программы;

– анализ полученных результатов и краткие выводы по работе, в которых необходимо отразить особенности использования встроенных таймеров микроконтроллера для формирования аппаратно-независимых временных интервалов.

 

Контрольные вопросы и задания

1. B чем преимущества обмена по прерываниям по сравнению с другими известными вам способами обмена информацией?

2. Что включает в себя понятия системы прерываний?

3. Поясните понятия вектора прерываний и таблицы векторов прерываний.

4. Какие действия выполняет микроконтроллер при переходе на процедуру обработки прерывания?

5. Поясните принципы формирования временных интервалов с помощью 8–разрядного таймера–счетчика.

6. Поясните принципы формирования временных интервалов с помощью 16–разрядного таймера–счетчика.


5 ИЗУЧЕНИЕ ПРИНЦИПОВ ОРГАНИЗАЦИИ ОБМЕНА ДАННЫМИ







Дата добавления: 2015-09-07; просмотров: 778. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

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

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия