Преобразователь двоичной последовательности из фиксированного числа байт в ЧМ-сигнал
Краткое сожержание материала:
Размещено на
Преобразователь двоичной последовательности из фиксированного числа байт в ЧМ-сигнал
Введение
Микроконтроллер (MCU) - микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, может содержать ОЗУ и ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи. Использование одной микросхемы, вместо целого набора, как в случае обычных процессоров, применяемых в персональных компьютерах, значительно снижает размеры, энергопотребление и стоимость устройств, построенных на базе микроконтроллеров.
1. Микроконтроллер ATtiny2313
8 битный AVR микроконтроллер с 2 КБ программируемой в системе Flash памяти
Характеристики:
AVR RISC архитектура
AVR - высококачественная и низкопотребляющая RISC архитектура
120 команд, большинство которых выполняется за один тактовый цикл
32 8 битных рабочих регистра общего применения
Полностью статическая архитектура
ОЗУ и энергонезависимая память программ и данных
2 КБ самопрограммируемой в системе Flash памяти программы, способной выдержать 10 000 циклов записи / стирания
128 Байт программируемой в системе EEPROM памяти данных, способной выдержать 100 000 циклов записи / стирания
128 Байт встроенной SRAM памяти (статическое ОЗУ)
Программируемая защита от считывания Flash памяти программы и EEPROM памяти данных
Характеристики периферии
Один 8 - разрядный таймер / счетчик с отдельным предделителем
Один 16-разрядный таймер / счетчик с отдельным предделителем, схемой сравнения, схемой захвата и двумя каналами ШИМ
Встроенный аналоговый компаратор
Программируемый сторожевой таймер со встроенным генератором
USI - универсальный последовательный интерфейс
Полнодуплексный UART
Специальные характеристики микроконтроллера
Встроенный отладчик debugWIRE
Внутрисистемное программирование через SPI порт
Внешние и внутренние источники прерывания
Режимы пониженного потребления Idle, Power-down и Standby
Усовершенствованная схема формирования сброса при включении
Программируемая схема обнаружения кратковременных пропаданий питания
Встроенный откалиброванный генератор
Порты ввода - вывода и корпусное исполнение
18 программируемых линий ввода - вывода
20 выводной PDIP, 20 выводной SOIC и 32 контактный MLF корпуса
Диапазон напряжения питания
от 1.8 до 5.5 В
Рабочая частота
0 - 16 МГц
Потребление
Активный режим:
300 мкА при частоте 1 МГц и напряжении питания 1.8 В
20 мкА при частоте 32 кГц и напряжении питания 1.8 В
Режим пониженного потребления
0.5 мкА при напряжении питания 1.8 В
2. Микросхема интерфейса RS-232
Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях.
Max232 - это преобразователь уровня напряжения. Интерфейс RS232 использует +-10V, а Max232 преобразует их в 0-5V.
Алгоритм работы ПО МК:
Программа в микроконтроллере выполняется в бесконечном цикле (wait1). В данном цикле происходит прием байт с UART и их анализ. Для отправки ЧМ последовательности необходимо, чтобы с UART поступила команда 01C, далее происходит переход на процедуру отправки ЧМ сигнала (меняется частота таймера).
Размещено на
3. Листинг микроконтроллера
INCLUDE «C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc»
; спецификацией регистров ввода / вывода
EQU A_LINE = 0; линия PORTB, соответствующая сигналу A
DSEG
ORG 0xc0
stack:.BYTE 0x10; область стека
EQU sp_ini = stack+0x0f
CSEG
;========= Таблица векторов прерываний
ORG 0x00
rjmp RESET; вектор прерывания RESET
ORG 0x06
rjmp OVR0_isr; вектор прерывания по переполнению Timer0
;========= Основная программа
RESET:
ldi r16, sp_ini; инициализация указателя стека
out SPL, r16
sbi PORTB, A_LINE; установить A в 1
ldi r16,0x07; разрешить PB.0, PB.1, PB.2 как выходы
out DDRB, r16
clr r16; занести 0 в счетчик Timer0
out TCNT1, r16
ldi r16,0x02; частота синхронизации Timer0 = Fosc/8
out TCCR1, r16
ldi r16,0x02
out TIMSK, r16; разрешить прерывание по переполнению Timer0
; Прерывания разрешены, прием-передача разрешен.
ldi r16, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(0<<UDRIE)
out UCSRB, r16
; Формат кадра - 8 бит, пишем в регистр UCSRC, за это отвечает бит селектор
ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
out UCSRC, r16
sei; глобальное разрешение прерываний
rjmp wait1; пустой цикл (ожидание прерывания и прием байтов с UART)
;========== Процедура отправки байта ==========
UART_send: sbis UCSRA, UDRE ; Пропуск если нет флага готовности
rjmp uart_snt ; ждем готовности - флага UDRE
out UDR, r0 ; шлем байт
ret ; Возврат
;========== Ожидание байта ==========
uart_rcv: SBIS UCSRA, RXC ; Ждем флага прихода байта
RJMP uart_rcv ; вращаясь в цикле
IN R16, UDR ; байт пришел - забираем.
INC uart_counter; увеличиваем счётчик принятых байт
RET ; Выходим. Результат в R16
;========== Обработчик прерывания по переполнению Timer0
OVR0_isr:
in r16, SREG; сохранение в стеке регистра статуса
push r16
sbis PORTB, A_LINE
rjmp OVR0_m1
; 1-е состояние: A==1, B==0, C==0
cbi PORTB, A_LINE; A=0
pop r16; восстановление из стека регистра статуса
out SREG, r16
reti; конец обработчика прерывания
wait1:
uart_rcv; принимаем байт
cpi r16, 0x30; если: 0
breq next1;
brne wait1
next1: uart_rcv
cpi r16, 0x31; если: 1
breq next2
brne wait1
next2:uart_rcv
cpi r16, 0xC; если: C символ С-конец сообщения
breq send1
brne wait1
rjmp wait1
; перенастройка частоты на 200, затем на 500 Гц
send1:
clr r16; старт сигнал
out TCNT1, r16
ldi r16,0xE8; частота синхронизации Timer1 1000 Гц
out TCCR1A, r16
ldi r16,0x03
out TCCR1B, r16
rjmp VR0_isr; отправляем сигнал
rjmp wait1
clr r16
out TCNT1, r16
ldi r16,0xC8; частота синхронизации Timer1 200 Гц
out TCCR1A, r16
clr TCCR1B
rjmp VR0_isr; отправляем сигнал
clr r16
out TCNT1, r16
ldi r16,0x01; частота синхронизации Timer1 500 Гц
out TCCR1A, r16
ldi r16,0xF4
out TCCR1B, r16
rjmp VR0_isr; отправляем сигнал
clr r16
out TCNT1, r16
ldi r16,0xD0; частота синхронизации Timer1 2000 Гц
out TCCR1A, r16
ldi r16,0x07
out TCCR1B, r16
rjmp VR0_isr; отправляем сигнал
clr r16
out TCNT1, r16
ldi r16,0xD0; частота синхронизации Timer0 2000 Гц
out TCCR1A, r16
ldi r16,0x07
out TCCR1B, r16
rjmp VR0_isr; отправляем сигнал
...Позиционные системы исчисления. Двоичная система счисления
Цель: Познакомится с правилами перевода чисел с одной системы в другую, правилами и особенностями выполнения арифметических операций в двоичной систем...
Вычислительные системы и программное обеспечение
Основные понятия: числовая форма, двоичная система счисления, бит, байт, слово, файл, папка, персональный компьютер, программное обеспечение, операцио...
Позиционные системы исчисления. Двоичная система счисления
Примеры правила перевода чисел с одной системы в другую, правила и особенности выполнения арифметических операций в двоичной системе счисления. Перево...
Автоматизация типовых технологических процессов и установок
Следящий электропривод, следящая система, обеспечивающая воспроизведение некоторых механических перемещений на управляемом объекте посредством исполни...
Физические основы действия современных компьютеров
Сейчас, когда человечество входит в третье тысячелетие, для обитателей мегаполисов незаменимой вещью, фактически правой (или левой) рукой стал компьют...