Обозн.
|
Наименование
|
Количество
|
MS
|
MC74HC4051A
|
1
|
3. Принципиальная
схема
Рис. 3. Принципиальная схема преобразователя
4. Программное
обеспечение
Программное обеспечение для устройства
написанное и отлажено среде AVR
Studio.
Рис. 4. Блок-схема программного обеспечения
Пояснения к работе программного обеспечения
В программе обрабатывается только одно
прерывание - прерывание по совпадению таймера/счетчика 1
Обработка сброса:
Устанавливаем необходимые регистры:
указатель стека
инициализируем порты B и D
очищаем все необходимые временные регистры
разрешаем прерывание по совпадению
таймера/счетчика 1
считываем данные с порта B
записываем эти данные в регистр сравнения
таймера/счетчика 1
регистр управления таймером/счетчиком 1 A
(устанавливаем режим работы таймера - 8-ми разрядный ШИМ)
регистр управления таймером/счетчиком 1 B
(настраиваем коэффициент деления системной частоты)
устанавливаем сигнал на выходе PD6 порта D
Ждем прерывание (выполняется программа).
Программа представляет собой простой бесконечный
цикл.
Выполняем прерывание.
Обработка прерывания по совпадению
таймера/счетчика 1:
устанавливаем или сбрасываем (в зависимости от
ситуации) сигнал на выходе PD6
вычитаем из временного регистра, в котором
содержится период ШИМ-сигнала, длительность прошедшего ШИМ-импульса (значение,
снятое с порта B)
получившееся значение записываем в регистр
совпадения таймера/счетчика 1
сбрасываем таймер/счетчик 1
возвращаемся в программу
При новом совпадении регистра значения с
регистром совпадения таймера/счетчика 1 программа вновь уходит на прерывание.
Листинг ПО:
.INCLUDE "2313def.inc"
;Определение сегмента кода
.CSEG
.ORG0x0000
;Таблица векторов прерываний
rjmpReset_interrupt_interruptCAPT_interruptCOMP_interruptOVF_interruptOVF_interrupt_RX_interrupt_UDRE_interrupt_TX_interrupt_interrupt:;Прерывание
по сбросу микроконтроллера
;Инициализация периферии МК
;Очистка необходимых временных регистров
clrr16
clrr30
;Настройка указателя стека
ldir16, 0x7F
outSPL, r16
;Инициализация порта Br31, 0x00DDRB, r31
;Инициализация порта D
ldi r31, 0x40DDRD, r31
;Разрешение прерывания от функции выходного
сравнения для таймера/счетчика 1
ldir17, 0x40
outTIMSK,
r17
;Инициализация регистра выходного сравнения
значением, снятым с порта B
in r31, PORTB, 0x0Cr25, 01AH,
r25
out
OCR1AL,
r31
;Включение таймера/счетчика 1
;Установка работы таймера в режиме 8-ми
разрядного ШИМ
ldir18, 0x01
out
TCCR1A,
r17
ldir17, 0x01
outTCCR1B,
r17
;Включение входа PD5PORTD, 6
;Глобальное разрешение прерываний
;Программа:cycle ;Бесконечный цикл
;Обработчики
прерыванийCOMP_interrupt:;прерывание по совпадению таймера/счетчика 1r30,
PORTD;Проверка, включен лиr30, 6;выход PD6PORTD, 6;Если да, то
сбрасываемr30r30, 6PORTD, 6;Если нет, то устанавливаем, 0xFF;Запоминаем период
ШИМ-сигнала
ldi r18, 29r17, r18r18, 1
in r28, PORTB;Считываем новые данные с порта B
subr28, 0x0Cr17, r28r28, r17
out OCR1AL, r28;Заносим в регистр сравнения
;новое значение длины импульсаr31,
0x00;Сбрасываем счетчик Т/С 1TCNT1L, r31;Возврат из прерывания
T1OVF_interrupt:
retiOVF_interrupt:_RX_interrupt:_UDRE_interrupt:_TX_interrupt:_interrupt:_interrupt:_interrupt:
retiCAPT_interrupt:
Заключение
В данном проекте была разработана схема
устройства для преобразования параллельного 8-ми разрядного кода в длительность
ШИМ-сигнала. Все элементы в схеме подобраны правильно, поэтому данное
устройство удовлетворяет поставленным требованиям. Программное обеспечение
написано с помощью команд контроллера AT90S2313.
Программное обеспечение проверенно и отлажено в среде AVR
Studio 4.0.
Список литературы
1. Хоровиц
П., Хилл У., Искусство схемотехники: Пер. с англ. - Изд. 6-е. - М.: Мир, 2003 -
704 с.
. Конспекты
лекций по дисциплинам «Схемотехника» и «Микроконтроллеры».
. Баранов
В.Н., Применение микроконтроллеров AVR:
схемы, алгоритмы, программы - М.: издательский дом «Додэка-XXI»,
2004 - 288 с.
. Квеглис
С.В., Микроконтроллеры AVR: Метод. пособие. - Новосибирск: Изд-во НГТУ, 2003.
5. www.analog.com