Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка ира.doc
Скачиваний:
23
Добавлен:
10.02.2016
Размер:
933.38 Кб
Скачать

4.1.5.Выбор устройства связи (uart).

При программировании UART в простейшем случае решаются три задачи: инициализация UART (задание режимов работы), организация приема данных и организация передачи данных.

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

.def tmp =r20

Init_uart: ldi tmp,0b00011101 ;Инициализация UART

out UCR,tmp ;TXEN=1,RXEN=1,СРH9=1,TXB8=1

ldi tmp,25 ;9600 бит/c при fclk=4МГц

out UBRR,tmp

ret

Если микропроцессор использует последовательный канал для коротких однобайтных сообщений, то передавать и принимать данные можно, просто опрашивая флаги готовности передатчика и приемника UART. При передаче байта в последовательный канал все, что должен сделать процессор - дождаться установки флага готовности передатчика UDRE и записать затем передаваемый символ в регистр данных передатчика:

trans: sbis USR, UDRE ;Если бит UDRE в USR установлен, то

;пропустить cледующую команду

rjmp trans ;Вернуться на метку trans

out UDR, r15 ;Вывести в регистр данных передатчика UART

;содержимое r15

ret

4.1.6.Выбор устройства согласования.

В качестве устройства согласования используется схема выполненная на операционном усилителе с подключением необходимой навески. Основные параметры:

  • Конденсаторы используются для фильтрации по питанию.

  • Диоды на случаи пробоя

  • Вводится отрицательная обратная связь

Операционный усилитель работает в режиме повторителя.

Схема представлена на рисунке.

5. Разработка алгоритмов работы.

5.1Алгоритм работы ацп.

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

ldi temp, 0 ;Активный канал 0

out ADMUX, temp

ldi temp, 0b10101111

out ADCSR, temp

sbi ADCSR, 6 ;Запуск преобразования

5.2Алгоритм работы uart и spi

SPI

Инициализация как ведущего (мастера):

SPI_MasterInit:

; Установка MOSI и SCK на вывод, все остальные на ввод

ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)out DDR_SPI,r17

; Разрешение SPI в режиме мастера, установка скорости связи fck/16

ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)

out SPCR,r17

ret

SPI_MasterTransmit:

; Запуск передачи данных (r16)

out SPDR,r16

Wait_Transmit:

; Ожидание завершения передачи данных

sbis SPSR,SPIF

rjmp Wait_Transmit

ret

Инициализация как подчинненого:

SPI_SlaveInit:

; Установка MISO на вывод и всех ост. на ввод

ldi r17,(1<<DD_MISO)

out DDR_SPI,r17

; Разрешение SPI

ldi r17,(1<<SPE)

out SPCR,r17

ret

SPI_SlaveReceive:

; Ожидание завершения передачи

sbis SPSR,SPIF

rjmp SPI_SlaveReceive

; Чтение принятых данных и выход из процедуры

in r16,SPDR

ret

UART:

;Инициализация:

st: ldi tmp1_r,LOW(RAMEND) ;Установка стека

out spl,tmp1_r

ldi tmp1_r,HIGH(RAMEND)

out sph,tmp1_r

;

ldi tmp1_r,0b00011101 ;Инициализация UART

out UCR,tmp1_r ;TXEN=1,RXEN=1,СРH9=1,TXB8=1

ldi tmp1_r,25 ;9600 бит/c при fclk=4МГц

out UBRR,tmp1_r

;

clr tmp1_r ;Настроить порт D на ввод

out ddrd,tmp1_r

;

clr tmp1_r ;Инициализация буфера UART_OUT

sts UART_OUT_T,tmp1_r ;Установить указатель хвоста в ноль

sts UART_OUT_H,tmp1_r ;Установить указатель головы в ноль

sts UART_IN_T,tmp1_r