Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод-лаб-AVR-02-10-2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1 Mб
Скачать

Лабораторная работа №7 Организация обмена данными в мпс через spi – интерфейс

Цель работы: изучение системы прерываний и структуры последовательного периферийного интерфейса SPI МК AVR ATmega8515.

Задание 1

Для задачи из практической работы №10 провести отладку программы и детальную трассировку задания в AVR Studio 4, описать каждый шаг выполняемой программы. Проверить все возможные условия задачи. Составить отчёт по трассировке. Ответить на контрольные вопросы.

Контрольные вопросы

1. Организация таблицы прерываний, структура, программирование и функционирование SPI МК ATmega8515.

2. Методика работы в AVR Studio 4.

Практическая работа №11 Программирование сторожевого таймера (Watch Dog Timer) мк aTmega8515

Цель работы: изучение структуры, функционирования и программирования сторожевого таймера на базе МК AVR ATmega 8515.

Методические рекомендации по выполнению практической работы

Задание 1.

1)Подробно изучить систему прерываний и функционирование сторожевого таймера WDR МК AVR ATmega8515.[1]

2)Необходимо составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для выполнения следующей задачи:

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

Составить алгоритм и написать программу для реализации функции X+Y=Z в режиме реального времени при включенном сторожевом таймере. Аргумент X ввести с PORTА, аргумент Y ввести с PORTВ, результат функции Z вывести в PORTС. Время тайм-аута сторожевого таймера установить равным 16 миллисекундам.

а) алгоритм программы:

Сброс wdt

Инициализация wdt

Инициализация портов

X(PA) -> r1

Y(PB) -> r2

X+Y=Z

Z -> PORTC

Рисунок 17. Блок-схема алгоритма программы.

в) Программа на языке ассемблер:

.include"8515def.inc" ;подключение файла описания МК

.org 0x000 ;обращение к вектору сброса

Rjmp M0 ; безусловный переход на М0

M0: wdr ; сброс сторожевого таймера

ldi r16,$08 ; разрешение сторожевого таймера

out WDTCR,r16 ; минимальное время тайм-аута (16384 такта)

SEI ; разрешение глобальных прерываний (I=1 в Rg Sreg)

M1: Ldi r17,$00 ; инициализация портов МК

out DDRa, r17 ; инициализация PORTA на ввод

Out ddrb,r17 ; инициализация PORTB на ввод

Ldi r18,$ff ; инициализация портов МК на вывод

Out ddrc, R18 ; инициализация PORTС на вывод

in r1,pina ; ввод аргумента X

in r2,pinb ; ввод аргумента Y

Add r1,r2 ; сложение аргументов

Out portc,r1 ; вывод результата сложения - Z

rjmp M1 ;организован бесконечный цикл при вычислении ;простейшей функции для сброса МК от сторожевого ;таймера

с) Проведем проверку Z =X+Y при Х=02,Y=03 и выставим флаги.

1) ADD R1, R2

В порт PC поместим результат Z = 05

Выставим флаги по результату действия:

H=0, N=0, C=0, Z=0, V=0, S=0.

Задание 2.

Получить у преподавателя задачу для реализации в соответствии с Вашим вариантом. Составить алгоритм, написать программу на ассемблере МК AVR ATmega8515, провести проверку, выставить флаги для реализации задачи в соответствии с рассмотренными выше методическими указаниями.

Таблица №8 – Варианты заданий на практическую работу № 11.

Вари

анта

Задание на практическую работу.

1

Составить алгоритм и написать программу для реализации функции a+2b=c в режиме реального времени при включенном сторожевом таймере. Аргумент а ввести с PORTА, аргумент b ввести с PORTВ, результат функции с вывести в PORTС. Время тайм-аута сторожевого таймера равно 16 миллисекундам.

2

Составить алгоритм и написать программу для реализации функции ( ) =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTD, аргумент y ввести с PORTA, результат функции z вывести в PORTС. Время тайм-аута сторожевого таймера равно 256 миллисекундам.

3

Составить алгоритм и написать программу для реализации функции ( )=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTС, аргумент y ввести с PORTD, результат функции z вывести в PORTA. Время тайм-аута сторожевого таймера равно 32 миллисекундам.

4

Составить алгоритм и написать программу для реализации функции 2y^( + )=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTD, аргумент y ввести с PORTС, результат функции z вывести в PORTВ. Время тайм-аута сторожевого таймера равно 128 миллисекундам.

5

Составить алгоритм и написать программу для реализации функции x^ =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTA, аргумент y ввести с PORTВ., результат функции z вывести в PORTС. Время тайм-аута сторожевого таймера равно 1024 миллисекундам.

6

Составить алгоритм и написать программу для реализации функции =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTС, аргумент y ввести с PORTA, результат функции z вывести в PORTD. Время тайм-аута сторожевого таймера равно 512 миллисекундам.

7

Составить алгоритм и написать программу для реализации функции ( )=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTD, аргумент y ввести с PORTB, результат функции z вывести в PORTА. Время тайм-аута сторожевого таймера равно 32 миллисекундам.

8

Составить алгоритм и написать программу для реализации функции (y- )^y=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTB, аргумент y ввести с PORTA, результат функции z вывести в PORTD. Время тайм-аута сторожевого таймера равно 256 миллисекундам.

9

Составить алгоритм и написать программу для реализации функции ( + )^x=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTА, аргумент y ввести с PORTD, результат функции z вывести в PORTB. Время тайм-аута сторожевого таймера равно 16 миллисекундам.

10

Составить алгоритм и написать программу для реализации функции

(x-$12)^(y+$23)=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTD, аргумент y ввести с PORTВ, результат функции z вывести в PORTА. Время тайм-аута сторожевого таймера равно 128 миллисекундам.

11

Составить алгоритм и написать программу для реализации функции 5y+7x =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTC, аргумент y ввести с PORTА., результат функции z вывести в PORTС. Время тайм-аута сторожевого таймера равно 512 миллисекундам.

12

Составить алгоритм и написать программу для реализации функции x^ =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTА, аргумент y ввести с PORTC, результат функции z вывести в PORTB. Время тайм-аута сторожевого таймера равно 64 миллисекундам.

13

Составить алгоритм и написать программу для реализации функции ^(y+$27)=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTD, аргумент y ввести с PORTB, результат функции z вывести в PORTС. Время тайм-аута сторожевого таймера равно 2048 миллисекундам.

14

Составить алгоритм и написать программу для реализации функции (x+y)^( -y)=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTC, аргумент y ввести с PORTD, результат функции z вывести в PORTА. Время тайм-аута сторожевого таймера равно 32 миллисекундам.

15

Составить алгоритм и написать программу для реализации функции 5x^3y=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTС, аргумент y ввести с PORTA, результат функции z вывести в PORTB. Время тайм-аута сторожевого таймера равно 128 миллисекундам.

16

Составить алгоритм и написать программу для реализации функции ( ^ )+y=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTA, аргумент y ввести с PORTС, результат функции z вывести в PORTD. Время тайм-аута сторожевого таймера равно 1024 миллисекундам.

17

Составить алгоритм и написать программу для реализации функции ^(x-2y)=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTB, аргумент y ввести с PORTА, результат функции z вывести в PORTС. Время тайм-аута сторожевого таймера равно 64 миллисекундам.

18

Составить алгоритм и написать программу для реализации функции =z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTА, аргумент y ввести с PORTD, результат функции z вывести в PORTB. Время тайм-аута сторожевого таймера равно 512 миллисекундам.

19

Составить алгоритм и написать программу для реализации функции +(9x^y)=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTC, аргумент y ввести с PORTВ, результат функции z вывести в PORTА. Время тайм-аута сторожевого таймера равно 2048 миллисекундам.

20

Составить алгоритм и написать программу для реализации функции Xv( ^ )=z в режиме реального времени при включенном сторожевом таймере. Аргумент x ввести с PORTС, аргумент y ввести с PORTD, результат функции z вывести в PORTA. Время тайм-аута сторожевого таймера равно 32 миллисекундам.

Задание 3. Оформить отчет по работе. Продемонстрировать отчет преподавателю.

Контрольные вопросы:

1 Принцип работы сторожевого таймера.

2 Уровни безопасности сторожевого таймера.