Смекни!
smekni.com

Контроллеры (стр. 6 из 12)

- привести значение скорости к цене младшего разряда;

занести по адресам 8-9 в слове индификатор от УСВИЦ-250;

занести по адресам 30-29 в слове о достоверности слова;

подсчитать четность слова и занести по адресу 31 в слове.

Занести по адресам 0-8 в слове адрес слова;

4. Подпрограмма, осуществляющая выдачу слова в магистраль с частотой 12.5КГц, должна выполнять следующие возложенные на нее функции:

- обеспечивать частоту вывода 12.5КГц;

обеспечивать выдачу последовательно 206, 207 и 271 слова;

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

записи в регистр ЦАП приборной скорости;

сделать паузу для записи в регистр;

установить флаг в ЦАП о записи в регистр.

Файловая структура подсистемы представляет собой совокупность шести файлов, один из которых содержит основной текст программы SPEED.C , со всеми вышеперечисленными основными и вспомогательными подпрограммами. Другие файлы - содержат подпрограммы написаны на ассемблере используемых в основной программе. При помощи интегрированной среды Project-51 программа компилируется и, в случае, успешного результата обработки, создает файл SPEED.HEX, содержащий исходный код программы в шестнадцатиричном виде. Полученный исполняемый программный код при помощи программатора, подключенного к компьютеру, заносится в микроконтроллер для последующего выполнения и тестирования, обнаружения возможных допущенных при программировании ошибок.

Для отладки созданного программного кода, внутрисхемный эмулятор устанавливался на опытный образец печатной платы с напаянными на ней всеми необходимыми для корректной работы микросхемами и навесными элементами (резисторы, конденсаторы). Все микросхемы, установленные на плате, в совокупности с микроконтроллером и его программным обеспечением, составляют разрабатываемый контроллер. Подобная отладка, с применением осциллографа, контрольного пульта ПК-10, дает вполне ясную картину программно генерируемых сигналов с микроконтроллера. Осциллограф позволяет в удобной форме проследить периодичность генерации сигналов и длительность процессов, которые они вызывают в схеме, а ПК-10 достоверность выходного слова. Также довольно легко наблюдать принимаемые микроконтроллером на обработку сигналы, поступающие с других микросхем. Применение осциллографа и ПК-10, при отладке программы на реальной аппаратуре, необходимо, и безусловно, значительно облегчает отладку и доработку исходного текста программы.

Описание структуры полей программы

Переменные для временных обработак и константы с их адресами

const int speed=172 - служит для добавления при наземном контролле контроллера;

const int test_speed=2 - служит для добавления при проверки масок приборной и максимальной скорости;

static int a @ 0x18 - временная преременная;

static int flag @ 0x18 - временная преременная;

static int flag1 @ 0x1a - временная преременная;

Переменные для выходного слова адрес 206 по РТМ с их адресами

static unsigned long SlVmd @ 0x10;

static unsigned char SlVmd_1 @ 0x10;

static unsigned char SlVmd_2 @ 0x11;

static unsigned char SlVmd_3 @ 0x12;

static unsigned char SlVmd_4 @ 0x13;

Переменные для выходного слова адрес 207 по РТМ с их адресами

static unsigned long SlVpr @ 0x3c;

static unsigned char SlVpr_1 @ 0x3c;

static unsigned char SlVpr_2 @ 0x3d;

static unsigned char SlVpr_3 @ 0x3e;

static unsigned char SlVpr_4 @ 0x3f;

Переменные для выходного слова адрес 271 по РТМ с их адресами

static unsigned long SlDs @ 0x38;

static unsigned char SlDs_1 @ 0x38;

static unsigned char SlDs_2 @ 0x39;

static unsigned char SlDs_3 @ 0x3a;

static unsigned char SlDs_4 @ 0x3b;

Переменная для выдачи на ЦАП с его адресом

static unsigned int CapSlowo @ 0x14;

Переменные для рабочих областей стеков с их адресами

static unsigned long Stec @ 0x28;

static unsigned int Stec1 @ 0x28;

static unsigned int Stec2 @ 0x2a;

Переменные для сохранение переведенных скоростей с их адресами

static unsigned int StecVprd @ 0x30;

static unsigned int StecVmdd @ 0x32;

Переменные вводимых скорости с приборной скорости маски с их адресами

static unsigned int Vprg @ 0x20;

static unsigned int Vmdg @ 0x24;

Переменные вводимых скорости с максимальной скорости маски с их адресами

static unsigned int Vprd @ 0x22;

static unsigned int Vmdd @ 0x26;

Переменные рабочее слово SlRab расписаны в битовой резидентной памяти по битам и словам с их адресами

static unsigned long SlRab @ 0x2c;

static unsigned char SlRab_4 @ 0x2c;

static unsigned char SlRab_3 @ 0x2d;

static unsigned char SlRab_2 @ 0x2e;

static unsigned char SlRab_1 @ 0x2f;

static unsigned char Adress @ 0x2f - по этому адресу находится адрес выходного слова;

static bit unsigned char SlRab_bit31 @ 0x67;

static bit unsigned char SlRab_bit30 @ 0x66;

static bit unsigned char SlRab_bit29 @ 0x65;

static bit unsigned char SlRab_bit28 @ 0x64;

static bit unsigned char SlRab_bit27 @ 0x63;

static bit unsigned char SlRab_bit26 @ 0x62;

static bit unsigned char SlRab_bit25 @ 0x61;

static bit unsigned char SlRab_bit24 @ 0x60;

static bit unsigned char SlRab_bit23 @ 0x6f;

static bit unsigned char SlRab_bit22 @ 0x6e;

static bit unsigned char SlRab_bit21 @ 0x6d;

static bit unsigned char SlRab_bit20 @ 0x6c;

static bit unsigned char SlRab_bit19 @ 0x6b;

static bit unsigned char SlRab_bit18 @ 0x6a;

static bit unsigned char SlRab_bit17 @ 0x69;

static bit unsigned char SlRab_bit16 @ 0x68;

static bit unsigned char SlRab_bit15 @ 0x77;

static bit unsigned char SlRab_bit14 @ 0x76;

static bit unsigned char SlRab_bit13 @ 0x75;

static bit unsigned char SlRab_bit12 @ 0x74;

static bit unsigned char SlRab_bit11 @ 0x73;

static bit unsigned char SlRab_bit10 @ 0x72;

static bit unsigned char SlRab_bit9 @ 0x71;

static bit unsigned char SlRab_bit8 @ 0x70;

static bit unsigned char SlRab_bit7 @ 0x7f;

static bit unsigned char SlRab_bit6 @ 0x7e;

static bit unsigned char SlRab_bit5 @ 0x7d;

static bit unsigned char SlRab_bit4 @ 0x7c;

static bit unsigned char SlRab_bit3 @ 0x7b;

static bit unsigned char SlRab_bit2 @ 0x7a;

static bit unsigned char SlRab_bit1 @ 0x79;

static bit unsigned char SlRab_bit0 @ 0x78;

Переменные приборной скорости в коде Грея расписаны в битовой резидентной памяти по битам с их адресами

static bit unsigned char Vprg_bit9 @ 0x01;

static bit unsigned char Vprg_bit8 @ 0x00;

static bit unsigned char Vprg_bit7 @ 0x0f;

static bit unsigned char Vprg_bit6 @ 0x0e;

static bit unsigned char Vprg_bit5 @ 0x0d;

static bit unsigned char Vprg_bit4 @ 0x0c;

static bit unsigned char Vprg_bit3 @ 0x0b;

static bit unsigned char Vprg_bit2 @ 0x0a;

static bit unsigned char Vprg_bit1 @ 0x09;

static bit unsigned char Vprg_bit0 @ 0x08;

Переменные приборной скорости в двоичном коде расписаны в битовой резидентной памяти по битам с их адресами

static bit unsigned char Vprd_bit9 @ 0x11;

static bit unsigned char Vprd_bit8 @ 0x10;

static bit unsigned char Vprd_bit7 @ 0x1f;

static bit unsigned char Vprd_bit6 @ 0x1e;

static bit unsigned char Vprd_bit5 @ 0x1d;

static bit unsigned char Vprd_bit4 @ 0x1c;

static bit unsigned char Vprd_bit3 @ 0x1b;

static bit unsigned char Vprd_bit2 @ 0x1a;

static bit unsigned char Vprd_bit1 @ 0x19;

static bit unsigned char Vprd_bit0 @ 0x18;

Переменные максимальной скорости в коде Грея расписаны в битовой резидентной памяти по битам с их адресами

static bit unsigned char Vmdg_bit9 @ 0x21;

static bit unsigned char Vmdg_bit8 @ 0x20;

static bit unsigned char Vmdg_bit7 @ 0x2f;

static bit unsigned char Vmdg_bit6 @ 0x2e;

static bit unsigned char Vmdg_bit5 @ 0x2d;

static bit unsigned char Vmdg_bit4 @ 0x2c;

static bit unsigned char Vmdg_bit3 @ 0x2b;

static bit unsigned char Vmdg_bit2 @ 0x2a;

static bit unsigned char Vmdg_bit1 @ 0x29;

static bit unsigned char Vmdg_bit0 @ 0x28;

Переменные максимальной скорости в двоичном коде расписаны в битовой резидентной памяти по битам с их адресами

static bit unsigned char Vmdd_bit9 @ 0x31;

static bit unsigned char Vmdd_bit8 @ 0x30;

static bit unsigned char Vmdd_bit7 @ 0x3f;

static bit unsigned char Vmdd_bit6 @ 0x3e;

static bit unsigned char Vmdd_bit5 @ 0x3d;

static bit unsigned char Vmdd_bit4 @ 0x3c;

static bit unsigned char Vmdd_bit3 @ 0x3b;

static bit unsigned char Vmdd_bit2 @ 0x3a;

static bit unsigned char Vmdd_bit1 @ 0x39;

static bit unsigned char Vmdd_bit0 @ 0x38;

Формат слова 206 и 207.

Форматы 206, 207 слова состоят из 32 разрядов который показан в таблице 2.2 .

Таблица 2.2

31 30 29 28 27-11 10 9 8 7-0
CRC состояние Знак данные Точность Идентификатор адрес

Матрица состояния информации параметров.

Разряды в слове Наименование функции
31 30
0 0 Предупреждение об отказе
0 1 Нет вычисленных данных
1 0 Функциональный тест
1 1 Нормальная работа

Алгоритм функционирования контроллера

Контроллер включает в себя следующие функции :

- Сброс сторожевого таймера;

- Очстка всех областей переменных;

- Подготовка вывода слова 206 с признаком "нет вычисленных данных";

- Подготовка вывода слова 207 с признаком "нет вычисленных данных";

- Заполнение сохраненного значения приборной скорости;

- Заполнение сохраненного значения максимальной скорости;

- Цикл проверки на отказ маски приборной скорости;

- Цикл проверки на отказ маски максимальной скорости;

- Проверка на наличие разовой команды тест контроля;

- Маштабирование приборной скорости для выдачи в ЦАП;

- Тестирование ПО;

- Формирование слова адрес 271 в соответствии с признаками об тестирования ПО;

- Формирование выходного слова адрес 206 в соответствии с РТМ, изм,3;

- Формирование выходного слова адрес 207 в соответствии с РТМ, изм,3;

- Сброс сторожевого таймера.

Выводы

В настоящем разделе выпускной работы были проведены

следующие работы:

- был проведен анализ структуры программы контроллера;

- был рассмотрен алгоритм функционирования контроллера.

Реализация

Описание функций основных модулей системы.

Основной файл системы является проэктный файл - SPEED.PRJ, в которой: указывается путь к файлам системы, установка адресов ПЗУ, ОЗУ, стека, векторов прерывания и параметров контроллера, список компилируемых файлов.

Основная программа

voidmain(void)

{

/*---------- Запуск таймера на вывод --------------------------------------*/

set_vector(TIMER0,Timer);

Zapusk();

/*-------- Сброс сторожевого таймера --------------------------------------*/