После осуществления данной настройки на каждом такте работы значащий регистр таймера инкрементируется, пока не возникнет его переполнение. После переполнения регистр TMR2 сбросится в 0, и выставится флаг прерывания от таймера. По реакции на этот флаг начнет выполняться программа обработки прерывания.
Принцип построения всех остальных тестов аналогичен вышеизложенному,
что позволяет не только проверить работу самого периферийного устройства, но и
функционирование системы прерываний модели микроконтроллера.
Производим выполнение данного теста в комплексе КИИБ с
целью проверки аналогичности процесса работы периферийного устройства (рисунок
3.4).
После сравнительного анализа полученных результатов было принято решение о том, что разработанные в комплексе КИИБ периферийные устройства реализованы правильно в соответствие с документацией на семейство микроконтроллеров PIC.
железнодорожный автоматика микропроцессорный программный
В данной курсовом проекте было разработано программное обеспечение модуля управления и отладки комплекса КИИБ. Этот комплекс в совокупности представляет собой приложение эмулятора микроконтроллера для новой версии программного обеспечения, реализующего автоматизированное тестирование микропроцессорных комплексов на соответствие требованиям функциональной безопасности. Разработанный модуль управления и отладки позволил решить следующие задачи:
· визуализация большинства характеристик состояния устройства;
· удобный диалог пользователя и программное обеспечение по созданию устройств и съему информации об его состоянии;
· осуществление пошаговой отладки работы устройства;
· динамическое внесение неисправностей в работу устройства;
· осуществление запуска автоматического тестирования микропроцессорной системы.
Было осуществлено тестирование системы команд и периферийных устройств моделей микроконтроллера PIC16. Программы для тестирования были разработаны в соответствии с документацией на данное семейство микроконтроллеров.
1) Сертификация и доказательство безопасности систем железнодорожной автоматики / Под редакцией Вл. В. Сапожникова. - М.: Транспорт, 1997. - 288 с.
) Микропроцессоры в 3 кн. Кн.2: Средства сопряжения. Контролирующие и информационно-управляющие системы. Учебник для вузов. / - М.: Высшая школа, 1987.
) РТМ 32 ЦШ 1115842.01-94. Безопасность железнодорожной автоматики и телемеханики. Методы и принципы обеспечения безопасности микроэлектронных СЖАТ.
) Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 1. Язык C++. - М.: Бином-Пресс, 2002 г. - 544 с.
) Справочник по среднему семейству микроконтроллеров PICmicro: Техническая документация DS33023A компании Microchip Techology Incorporated, USA: ООО «Микро-Чип» Москва -2002
) Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 2. Классы и
компоненты. М.: Бином-Пресс, 2002 г. - 528 с.
Файл Prog_view.h
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef Prog_viewH
#define Prog_viewH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <DBTables.hpp>
#include "MC_View.h"
#include "ProgramCellMemory.h"
#include "MainView.h"
//---------------------------------------------------------------------------TForm_prog : public TForm
{
__published:// IDE-managed Components*GroupBox1;*StringGrid1;__fastcall FormClose(TObject *Sender, TCloseAction &Action);:// User declarations:// User declarations
__fastcall TForm_prog(TComponent* Owner);
//Функция отображения текста программы микроконтроллера__fastcall PaintProg(HINSTANCE DLL_Prog);
};
//---------------------------------------------------------------------------PACKAGE TForm_prog *Form_prog;
//---------------------------------------------------------------------------
#endif
Файл Prog_view.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Prog_view.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"_prog *Form_prog;
//---------------------------------------------------------------------------
__fastcall TForm_prog::TForm_prog(TComponent* Owner)
{->Cells[1][0] = " Address";->Cells[2][0] = " Instruction";->Cells[3][0] = " HexValue";->Cells[4][0] = " BinValue";
}
//---------------------------------------------------------------------------__fastcall TForm_prog :: PaintProg(HINSTANCE DLL_Prog)
{<ProgramCellMemory> Program;<ProgramCellMemory>(__stdcall *GetProgram)(); (DLL_Prog) {
/*Вызов функции хзагрузки программы микроконтроллера
из DLL*/= (vector<ProgramCellMemory>(__stdcall *) ())(DLL_Prog, "_GetProgram");= GetProgram();
}
//Очистка StringGrid1->RowCount=2;->Rows[1]->Clear();(unsigned int i = 0; i < Program.size(); i++)
{Addr,Name,HexValue,BinValue,Operand;
//Запись текста программы в ListBox1= IntToHex(Program.at(i).GetAddr(),4);= Program.at(i).GetName();= IntToHex(Program.at(i).GetHexValue(),4);= Form_view->IntToBin(Program.at(i).GetHexValue(),14);= Program.at(i).GetOperand();->Cells[1][i+1]= Addr;->Cells[2][i+1]= Name+" "+Operand;->Cells[3][i+1]= "0x"+HexValue;->Cells[4][i+1]= BinValue;->RowCount=i+2;
}PCounter;->Cols[0]->Clear();(__stdcall *GetPCounter)();(DLL_Prog)
{
//Получение значения программного счетчика из DLL
GetPCounter = (int(__stdcall *) ())(DLL_Prog, "_GetPCounter");
//Проверка существования функции GetPCounter
if (GetPCounter) {
PCounter = GetPCounter();
}("Функция GetPCounter не найдена");
}->Row = PCounter+1;->Cells[0][PCounter+1]="*";
}__fastcall TForm_prog::FormClose(TObject *Sender, TCloseAction &Action)
{->SpeedButton2->Down = false;->ProgramViewCtrlP1->Checked=false;
}
//---------------------------------------------------------------------------