Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МИНИСТЕРСТВО ТРАНСПОРТА РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧЕРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
Кафедра «Автоматика, телемеханика и связь на железнодорожном транспорте»
Курсовой проект
по дисциплине:
«Микропроцессорные информационно-управляющие системы»
Выполнил: студент гр.394
Проверил: преподаватель
Белоногов А.С.
Самара 2013
Содержание стр.
Введение……………………………………………………………………….
Исходные данные……………………………………………………………..
Постановка задачи…………………………………………………………….
Описание и характеристики микроконтроллера AT90S2313………………
Таймер/счётчик общие сведения…………………………………………….
Назначение выводов таймеров/счетчиков…………………………………
Таймер/счетчик T1………………………………………………………….
Программа инициализации таймер/счётчика на AT90S2313………………
Отладка программы в среде AVR Studio 4………………………………..
Программа на Ассемблере - периодомер…………………………………..
Отладка программы в среде AVR Studio 4………………………………..
Программа на Ассемблере - деление……………………………………….
Отладка программы в среде AVR Studio 4………………………………..
LED индикатор фирмы KingBright………………………………………..
Программирование динамической индикации……………………………..
Программа на Ассемблере динамическая индикация……………………
Отладка программы в среде AVR Studio 4………………………………….
Заключение……………………………………………………………………
Библиографический список…………………………………………………
Введение.
Постановка задачи.
Разработать устройство для определения скорости движения отцепов на базе микроконтроллера, в процессе проектирования научиться работать с AVR Studio и сопутсвующими средствами для достижения задачи. Воспользуемся микроконтроллером AT90S2313 так как для нашей задачи он подходит и про него есть достаточное количество информации.
Датчики скорости или скоростемеры предназначены для измерения скорости движущихся отцепов на сортировочной горке и передачи этой информации в систему регулирования скорости скатывания отцепов для окончательного определения ступени торможения.
Принцип действия устройств подобного класса основан на эффекте Доплера, состоящий в том, что при перемещении источника СВЧ-колебаний по отношению к наблюдателю и наоборот частота колебаний в месте наблюдения отличается от собственной частоты источника колебаний. Приращение частоты пропорционально радиальной составляющей скорости движения.
Радиолокационный измеритель скорости РИС-В3М
Принцип действия: Эффект Доплера.
Преимущества: Интеллектуальная обработка сигнала, частотный выход, непрерывное самотестирование, дистанционный контроль работоспособности и диагностика.
Устройствами РИС-В3М оборудуются тормозные позиции и зона вершины горки. Частота излучения 37,5ГГц.
Устойчиво работает в условиях сильно флуктуирующего входного сигнала и вибрационных нагрузок при неблагоприятных климатических условиях: дождь, туман, иней, роса. Дальность действия до 250м, диапазон измеряемых скоростей 1,5-35 км/ч, погрешность измерения до 2%.
Производитель:
НПО « Исток »
Московская область
г. Фрязино
Начальный интервал времени измерения для оценки скорости при въезде отцепа в зону действия РИС-В3М и автоматического выбора рабочего интервала измерения (время поиска и захвата) не более 0,12 с.
Наше устройство может быть использовано как разновидность устройства для определения скорости или в дополнение к существующему
Описание и характеристики микроконтроллера AT90S2313.
Данные представлены в виде таблиц для простоты восприятия, без нумерации.
В таблицах использованы следующие обозначения:
I вход;
O выход;
I/O вход/выход;
P выводы питания.
Микроконтроллеры AVR семейства Classic являются 8 разрядными микроконтроллерами с RISC архитектурой. Они имеют электрически стираемую память программ (FLASH) и данных (EEPROM), а также разнообразные периферийные устройства. Состав этих устройств меняется от
модели к модели, более того, одно и то же устройство в разных моделях использует различные ресурсы микроконтроллера (в частности, различные выводы). Разумеется, существует ряд периферийных устройств, присутствующих во всех микроконтроллерах семейства: сторожевой таймер, 8 разрядный таймер/счетчик реального времени (таймер T0) и, естественно, порты ввода/вывода.
Структурная схема микроконтроллера AT90S2313 приведена на Рисунке 1.
Его отличительные особенности:
- 2 порта ввода/вывода: B (8 разрядный) и D (7 разрядный);
- встроенный тактовый кварцевый генератор;
- 16 разрядный таймер/счетчик (таймер T1);
- аналоговый компаратор;
- универсальный асинхронный приемопередатчик - UART.
Таймер/счётчик общие сведения.
Микроконтроллеры семейства Classic, в зависимости от модели, имеют в своем составе от одного до трех таймеров/счетчиков общего назначения (см. Таблица .1).
Таблица 1 Таймеры/счетчики реального времени.
Первый таймер (T0, 8разрядный), имеющийся во всех моделях, может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий. При переполнении счетного регистра таймера генерируется запрос на прерывание. Два других таймера (16разрядный T1 и 8разрядный T2) вводят дополнительные по отношению к таймеру T0 функции. Оба таймера могут генерировать запрос на прерывание не только при переполнении счетного регистра, но и при наступлении ряда других событий. Также оба таймера могут использоваться в качестве широтноимпульсных модуляторов. Таймер T2, кроме того, может работать в асинхронном (относительно тактового сигнала микроконтроллера) режиме. А вот для модели AT90C8534 сказанное не совсем справедливо. Дело в том, что оба таймера/счетчика этого микроконтроллера (8разрядный T0 и 16разрядный T1) функционально идентичны и к тому же могут использоваться только для формирования временных интервалов.
В составе всех микроконтроллеров семейства имеется также сторожевой таймер, который является непременным атрибутом всех современных микроконтроллеров. Этот таймер используется для предотвращения зацикливания программы.
Назначение выводов таймеров/счетчиков.
Kаждый таймер/счетчик (кроме таймеров/счетчиков в AT90C8534) использует один или более выводов микроконтроллера. Kак правило, эти выводы - линии портов ввода/вывода общего назначения, а функции, реализуемые этими выводами при работе совместно с таймерами/счетчиками, являются их альтернативными функциями.
Все выводы микроконтроллеров, относящиеся к таймерам/счетчикам общего назначения, сведены в Таблица 2. Также в этой таблице приводятся функции этих выводов.
Таблица 2 Выводы, используемые таймерами/счетчиками общего назначения
Не забывайте о том, что при использовании альтернативных функций линий портов ввода/вывода необходимо, как правило, самостоятельно сконфигурировать эти выводы в соответствии с их функциональным назначением (вход/выход).
Таймер/счетчик T1.
Таймер/счетчик T1 (16разрядный) имеет гораздо больше функций, чем таймер/счетчик T0 (во всех моделях, кроме AT90C8534).
Прежде всего, как и таймер/счетчик T0, он может использоваться для:
- формирования временных интервалов или для подсчета числа внешних событий.
- может по внешнему сигналу сохранять свое текущее состояние в отдельном РВВ.
- выполняет определенные действия при равенстве содержимого счетного регистра заданному значению.
- может работать как широтноимпульсный модулятор.
Причем генерация сигнала с ШИМ «вынесена» в отдельный режим работы таймера/счетчика, в котором недоступны остальные функции (кроме генерации прерываний). Режим генерации сигнала с ШИМ будем называть «режим ШИМ», а режим, в котором доступны остальные функции таймера/счетчика, «режим таймера».
Из рисунка 2 видно, что в состав таймера/счетчика входят:
- три 16разрядных регистра (счетный регистр TCNT1, регистр захвата ICR1 и регистр сравнения OCR1 или OCR1A),
- 16разрядный компаратор,
- один 8разрядный управляющий регистр TCCR1A.
- а также блок управления таймером.
Счетный регистр таймера/счетчика T1 реализован как суммирующий (в режиме ШИМ как суммирующий/вычитающий) счетчик и доступен в любой момент времени как для чтения, так и для записи.
При записи в регистр TCNT1 во время работы таймера счет будет продолжен по следующему за операцией записи импульсу тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNT1 находится нулевое значение.
Рисунок 2. Структурная схема таймера/счетчика T1 моделей AT90S2313, AT90S/LS2333 и AT90S/LS4433.
Запись в регистр TCNT1.
При записи старшего байта значения в регистр TCNT1H он помещается в регистр TEMP. Далее, при записи младшего байта в регистр TCNT1L он объединяется с содержимым регистра TEMP и оба байта записываются в регистр TCNT1 одновременно. Из сказанного видно, что для выполнения полного цикла записи в 16разрядный регистр первым должен быть загружен старший байт (регистр TCNT1H).
Чтение регистра TCNT1.
При чтении регистра TCNT1L (младший байт) содержимое регистра TCNT1H пересылается в регистр TEMP. А при последующем чтении регистра TCNT1H возвращается значение, сохраненное в регистре TEMP. Следовательно, для выполнения полной операции чтения 16 разрядного регистра первым должен быть прочитан младший байт (регистр TCNT1L).
Управление таймером/счетчиком T1 осуществляется с помощью двух регистров управления TCCR1A и TCCR1B (в модели AT90C8534 с по мощью одного регистра TCCR1). Эти регистры расположены по адресам
$2F ($4F) (регистр TCCR1A) и $2E ($4E) (регистры TCCR1B, TCCR1).
Формат регистра TCCR1A приведен на Рисунок 3, а регистров TCCR1B на Рисунок 4 . Значение отдельных разрядов этих регистров будет описано далее в этой главе. Неиспользуемые разряды регистров доступны только для чтения и содержат «0».
Рисунок 3 Формат регистра TCCR1A
Рисунок 4 Формат регистра TCCR1B
Выбор источника тактового сигнала.
По отношению к тактовому сигналу таймер/счетчик T1 может работать в двух режимах:
1. Режим таймера. В этом режиме на вход таймера/счетчика поступают импульсы тактового сигнала микроконтроллера (непосредственно или через предделитель).
2. Режим счетчика событий. В этом режиме инкремент содержимого счетного регистра производится по активному фронту сигнала на входе T1 микроконтроллера. В модели AT90C8534 данный режим отсутствует.
Выбор источника тактового сигнала, а также запуск и остановка таймера/счетчика осуществляются с помощью разрядов CS12…CS10 регистра управления таймером TCCR1B. Соответствие между состоянием этих разрядов и режимом работы таймера/счетчика приведено в Таблица 3
Таблица 3. Выбор источника тактового сигнала для таймера/счетчика T1
При использовании внешнего тактового сигнала необходимо помнить, что он синхронизируется с частотой тактового генератора микроконтроллера (состояние вывода T1 считывается по нарастающему фронту внутреннего тактового сигнала). Поэтому для обеспечения корректной работы таймера от внешнего сигнала промежуток времени между соседними импульсами должен быть больше периода тактового сигнала микроконтроллера.
Обратите внимание, что при использовании внешнего тактового сигнала инкремент содержимого счетного регистра таймера/счетчика производится даже в том случае, если вывод T1 сконфигурирован как выход. Эта особенность дает пользователю возможность программно управлять процессом счета.
Режим таймера.
Принцип работы таймера/счетчика T1 в этом режиме такой же, как и таймера/счетчика T0. По каждому импульсу, поступающему на тактовый вход таймера/счетчика, производится инкремент содержимого счетного регистра TCNT1. При переходе таймера/счетчика из состояния «$FFFF» в состояние «$0000» устанавливается флаг TOV1 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в «1» разряда TOIE1 регистра TIMSK (разумеется, флаг общего разрешения прерываний I регистра SREG также должен быть установлен в «1»). Однако, как уже было сказано, для всех моделей, кроме AT90C8534, в этом режиме таймера/счетчика T1 доступны и дополнительные функции.
Функция захвата (Capture).
Данная функция заключается в сохранении в определенный момент времени состояния таймера/счетчика в регистре захвата ICR1. Это действие может производиться либо по активному фронту сигнала на выводе ICP микроконтроллера, либо по сигналу от аналогового компаратора (см. описание аналогового компаратора в главе 7). При этом устанавливается флаг ICF1 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в «1» разряда TICIE1 регистра TIMSK. Упрощенная структурная схема узла, выполняющего данную функцию, приведена на Рис. 6.8.
Для управления схемой захвата используются два разряда регистра TCCR1B: ICNC1 и ICES1. Разряд ICNC1 управляет схемой подавления помех. Если этот разряд сброшен в «0», схема подавления помех выключена и захват производится по первому же активному фронту на выводе ICP микроконтроллера. Если же этот разряд установлен в «1», то при появлении активного фронта на выводе ICP производится 4 выборки с частотой, равной
тактовой частоте микроконтроллера. Захват будет выполнен только в том случае, если все выборки имеют уровень, соответствующий активному фронту сигнала (лог. «1» для нарастающего и лог. «0» для спадающего).
Активный фронт сигнала, т.е. фронт, по которому будет выполнено со хранение содержимого счетного регистра в регистре захвата, определяется состоянием разряда ICES1. Если этот разряд сброшен в «0», то активным является спадающий фронт. Если же этот разряд установлен в «1», то активным является нарастающий фронт. Разумеется, вывод ICP должен быть сконфигурирован как входной, т.е. разряд регистра управления портом DDRx, соответствующий данному выводу, должен быть сброшен в «0».
Физически регистр захвата ICR1 размещен в двух регистрах ICR1H:ICR1L, расположенных по адресам $27:$26 (адреса в адресном пространстве ОЗУ соответственно $47:$46) и доступных только для чтения. Поскольку регистр захвата является 16разрядным, при его чтении, как уже было сказано, используется специальный временный регистр TEMP. При чтении регистра ICR1L (младший байт) содержимое этого регистра пере сылается в ЦПУ, а содержимое регистра ICRH (старший байт) сохраняется в регистре TEMP. При чтении регистра ICR1H возвращается значение, сохраненное в регистре TEMP. Следовательно, при чтении регистра ICR1 первым должен быть прочитан регистр ICR1L. Прерывания на время обращения к регистру ICR1 должны быть запрещены.
Функция сравнения (Compare).
Данная функция заключается в непрерывном (каждый машинный цикл) сравнении содержимого счетного регистра таймера/счетчика с числом, находящемся в регистре сравнения. При совпадении содержимого этих регистров устанавливается флаг соответствующего прерывания, а также могут выполняться другие действия.
Kоличество регистров сравнения, а также их названия отличаются в различных моделях микроконтроллеров (см. Таблица 4). Причем в моделях, имеющих по два регистра сравнения, операция сравнения производится независимо для каждого регистра.
Таблица 4 Регистры сравнения таймера/счетчика T1
Если состояние таймера/счетчика становится равным числу, находящемуся в регистре сравнения, то в следующем машинном цикле устанавливается соответствующий этому регистру флаг прерывания в регистре TIFR (для регистра OCR1 флаг OCF1, для регистра OCR1A флаг OCF1A, для регистра OCR1B флаг OCF1B) и генерируется запрос на прерывание. Разрешение прерываний осуществляется установкой в «1» соответствующих флагов регистра TIMSK (OCIE1, OCIE1A и OCIE1B для регистров OCR1, OCR1A и OCR1B соответственно). Наряду с установкой флага в регистре TIFR при равенстве счетного регистра и регистра сравнения могут выполняться и другие действия:
- сброс таймера/счетчика (только для регистров OCR1 и OCR1A);
- изменение состояния определенного вывода микроконтроллера
(для всех регистров).
Выполнение или невыполнение указанных действий, определяется несколькими разрядами регистров управления TCCR1A и TCCR1B. Названия этих разрядов и их описание приведены в Таблица 5.
Таблица 5 Управление работой схемы сравнения таймера/счетчика T1
Каждый регистр сравнения физически размещается в двух регистрах вводавывода РВВ:
OCR1 OCR1H:OCR1L, адреса $2B:$2A ($4B:$4A);
OCR1A OCR1AH:OCR1AL, адреса $2B:$2A ($4B:$4A);
Поскольку регистры сравнения являются 16разрядными, при их чтении и записи используется специальный временный регистр TEMP. Подробно процесс записи и чтения 16разрядных регистров описан выше на примере регистра TCNT1. Здесь повторим только, что при записи регистра сравнения первым должен записываться регистр OCR1xH (старший байт), а при чтении первым должен считываться регистр OCR1xL (младший байт). Прерывания на время обращения к регистру сравнения должны быть запрещены.
Программа инициализации таймер/счётчика на AT90S2313.
.include "2313def.inc"
.def temp=r18
ldi temp,high(62500)
out OCR1AH,temp
ldi temp,low(62500)
out OCR1AL,temp
ldi temp,(1<<COM1A0)
out TCCR1A,temp
ldi temp,0b00001000
out DDRB,temp
ldi temp,0b00001011
out TCCR1B,temp
Программа на Ассемблере - периодомер.
.include "2313def.inc"
.def temp=r18
.def count0=r19
.def count1=r20
.def count2=r21
ldi temp,(1<<TICIE1)|(1<<TOIE1)
out TIMSK,temp
clr temp
out TCNT1H,temp
out TCNT1L,temp
clr count0
clr count1
clr count2
ldi temp,0b01000010
out TCCR1B,temp
sei
Программа на Ассемблере - деление.
.include "2313def.inc"
.def rezTL=r16
.def rezTM=r17
.def rezTH=r18
.def rezHH=r19
.def schetTL=r20
.def schetTM=r21
.def schetTH=r22
.def schetHH=r23
.def cykle=r24
clr rezTL
clr rezTM
clr rezTH
clr rezHH
clr r25
clr r26
clr r27
div:
sub schetTL,cykle
sbc schetTM,r25
sbc schetTH,r26
sbc schetHH,r27
brcs end_div;если перенос в минус, то выход
inc rezTL;иначе увеличиваем результат на 1 младший байт
brne div;---если не было переноса, то обратно
inc rezTM;иначе следующий байт на 1
brne div;---если не было переноса, то обратно
inc rezTH;иначе следующий байт на 1
brne div;---если не было переноса, то обратно
inc rezHH;иначе следующий байт на 1
rjmp div
end_div:
LED индикатор фирмы KingBright.
Для общего представления рассмотрим сдвоенный семисегментный индикатор фирмы KingBright с общим анодом. Конечно существуют индикаторы которые в одном корпусе содержат три, четыре семисегментныx индикатора. Далее представлены чертёж элемента, токи и напряжения, цвет свечеия и сила свечения и другие параметры.
Программа на Ассемблере динамическая индикация.
.include "2313def.inc"
.equ DdH=0x66
.equ DeH=0x67
.equ DdM=0x68
.equ Dem=0x69
.def razr=r18
.def temp=r16
inc razr ; счётчик разрядов
cpi razr,4 ; всего 4 разряда
brne set_razr
clr razr ; если равен 4 то очищаем
set_razr:
clr YH ; старший разряд адреса = 0
mov YL,razr+DdH ; установка текущего адреса
ld temp,Y ; в temp - значение дес. цифры
ldi ZH,HIGH(mask*2) ; адрес констант в памяти Z
ldi ZL,LOW(mask*2)
add ZL,temp ; адрес маски цифры равной Z
lpm ; в r0 - маска
in temp,PortB ; загружаем состояние порта в temp
bst temp,3 ; сохраняем бит 3 из флага T
mov temp,r0 ; загружаем маску в temp
bld temp,3 ; загружаем бит 3 из флага T
out PortB,temp ; установили сегменты
cpi razr,0
brne set1
sbr temp,1 ; устанавливаем разряд PD0
out PortD,temp
reti ;выход
set1:
cpi razr,1
brne set2
sbr temp,2 ; устанавливаем разряд PD1
out PortD,temp
reti ;выход
set2:
cpi razr,2
brne set3
sbr temp,4 ; устанавливаем разряд PD2
out PortD,temp
reti ;выход
set3:
sbr temp,8
out PortD,temp
reti ;выход
mask:
.db 0b01110111,0b000110,0b10110011,0b10010111,
0b11000110,0b11010101,0b11110101,0b00000111,0b11110111,0b11010111
Заключение.
Библиографический список.
Евстифеев А.В.
Е263 Микроконтроллеры AVR семейства Classic фирмы ATMEL
3_е изд., стер. М.: Издательский дом «Додэка_XXI», 2006.
288 с.: ил. (Серия «Мировая электроника»)
ISBN 5_94120_127_3
Отладка программы в среде AVR Studio 4.
Отладка программы в среде AVR Studio 4.
Отладка программы в среде AVR Studio 4.
Отладка программы в среде AVR Studio 4.
Рисунок 1 - Структурная схема микроконтроллера AT90S2313
Рисунок 5 Упрощенная структурная схема узла захвата