- •Содержание
- •1.Задание на выполнение курсовой работы
- •2.Разработка структурной схемы
- •4. Разработка принципиальной схемы мк
- •4.1.Выбор элементной базы
- •4.1.1.Выбор мк
- •4.1.5.Выбор устройства связи (rs-485).
- •4.1.5.Выбор устройства связи (uart).
- •4.1.6.Выбор устройства согласования.
- •5. Разработка алгоритмов работы.
- •5.1Алгоритм работы ацп.
- •5.2Алгоритм работы uart и spi
- •5.3Алгоритм работы с клавиатурой
- •Список литературы
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