Разработка системы сбора данных на базе МК АТ90S2313. Написание программного обеспечения для генерации дискретного треугольного сигнала и изменения значения частоты сигнала по каналу RS-232 в диапазоне 500-1000 Гц, страница 2

Максимальная скорость передачи данных

120 кбит/с

Uпит

Функциональность интерфейса

Прием-передача

Количество каналов приема/передачи

4

Iпотр (без нагрузки)

2 мА

Диапазон рабочих температур

0...+70°C

4. Принципиальная схема.

5. Спецификация элементов.

1. Микросхемы:

- AT90S2313

- ADM202

- MAX809

2. Конденсаторы:

- С1, С2 емкостью 22пФ

- С3, С4, С5, С6, С7 емкостью 0.1мкФ

3. Кварцевый генератор:

- QZ1 частотой 4 МГц

6. Программное обеспечение.

Принцип работы программы:

При подключении происходит инициализация.

Затем устанавливается частота UART. Настраиваем порт на вход.

Получает значение частоты с порта D.

Осуществляем расчет периода дискретизации.

Извлекаем из Flash- памяти первую ординату.

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

Так до тех пор, пока через период дискретизации будут извлечены из массива все значения ординат.

Как только конец массива будет достигнут, указатель устанавливается на начало массива.

Принцип генерирование 8-разрядного дискретного треугольного сигнала заключается в следующем:

Пусть N – количество отсчетов.

Зафиксируем N = 11 = Const.

По условию задания частота сигнала может изменяться в пределах (500-1000) Гц, т.е.

Для расчета периода дискретизации воспользуемся формулой

Так как количество отсчетов равно 11, и при графическом представлении треугольного сигнала (рассматривая один треугольник) очевидно, что точки расположены относительно оси Y на одинаковом расстоянии друг от друга, поэтому можем найти ординаты 6 первых точек (включая вершину треугольника), а ординаты других пяти точек будут соответственно равны ординатам первых пяти. Рассчитаем ординаты исходя из того, что сигнал является 8-разрядным, т.е отсчеты лежат в диапазоне (00H-FFH) или (0-255).

- ордината N1=0, N11=0

- ордината N2=51, N10=51

- ордината N3=102, N9=102

- ордината N4=153, N8=153

- ордината N5=204, N7=204

- ордината N6=255.

Далее поместим таблицу с этими значениями во Flash-память для того чтобы избежать необходимости производить вычисления ординат в программе.

Генерирование треугольного сигнала будет происходить с помощью передачи в порт вычисленных нами значений ординат точек, хранящихся во Flash-памяти, причем передача будет происходить через период дискретизации .

Исходный код программы:

include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\2313def.inc"

.dseg

.DEF temp=r16

.DEF  mc=r14                   ; для хранения первого множителя

.DEF  mp= r15                 ; для хранения второго множителя

.DEF XL=r15                    ; для хранения результата умножения

.DEF XH=r24                    ; для хранения результата умножения

.DEF drem=r17

.DEF dres=r18                   ; для хранения результата деления

.DEF dd=r18                      ; для хранения делимого

.DEF dv=r19                      ; для хранения делителя