Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Структуры данных для работы с драйвером SPORT

Читайте также:
  1. I. Исследования в области социальной мобильности и анализ социальной структуры
  2. I. Категория: научные работы
  3. I. Общая характеристика работы
  4. I. Схема работы для организации семинарского занятия
  5. II. ВИДЫ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ОБУЧАЮЩИХСЯ
  6. II. Выполнение работы
  7. II. Культурные аспекты изменения социальной структуры

//p30mem резервирование 30 страницы памяти для работы доайвера SPORT

#define pmem_sport0 p30mem

#define SPORT0_QUENE_FULL 0x00000001//очередь односвязного циклического списка заполнена

#define SPORT0_ELM_FREE 0x00000002//элемент списка свободен

#define SPORT0_ELM_INUSE 0x00000004//элемент списка используется

/////////////////////////////////////////////////////

#define SPORT0_READ_QUERY 0x00000010//запрос на периодическое чтение данных

#define SPORT0_READ_RUNNING 0x00000020//выполняется операция чтения данных

#define SPORT0_READ_COMPLETE 0x00000040//чтение данных sport0 завершено

/////////////////////////////////////////////////////

#define SPORT0_WRITE_QUERY 0x00000400//запрос на периодическую запись данных

#define SPORT0_WRITE_RUNNING 0x00000800//выполняется запись данных

#define SPORT0_WRITE_COMPLETE 0x00001000//запись данных заверешена

/////////////////////////////////////////////////////

typedef struct __DataBiSport{ // структура данных списка SPI

uint BiSportWrite[FIFO_INOUT_SPORT];// данные для передачи в СК

uint BiSportRead[FIFO_INOUT_SPORT];// данные считанные с СК

uint len_rw;

uint *pmsg;

uint tid; //дескриптор задачи, которая запросила обмен данными

int mu_i; //номер 1-го такта запуска обмена данными

uint fi; //частота запуска i-го обмена

uint j; //номер такта на котором должен запускаться обмен данными для i-ой задачи

uint NTask;//номер задачи

}_DataBiSport;

typedef struct __BiSPort{

_DataBiSport Data;

struct __BiSPort *pnext;

}_BiSPort;

Структура данных для обработчика прерывания от таймера драйвера SPORT

typedef struct __IrqSPORT{

uint IRQ_SPORT; //признак наличия прерывания

uint NIRQ_SPORT; //общее число прерываний

uint dt; // задержка **

uint ti; // номер i-го такта **

}_IrqSPORT;

Инициализация данных драйвера SPORT

· Настроить решистры цифрового интерфейса передачи данных SPORT и регистры DMA.

· Подключиться к обработчику прерывания SPORT при выдачи данных.

· Подключиться к обработчику прерывания от таймера.

· Подключиться к обработчику программного прерывания 1 для взаимодействия драйвера с другими задачами.

· Инициализация списка SPort0.

· Начальная инициализация структуры данных для обработчика прерывания _IrqSPORT.

Алгоритм работы драйвера SPORT запускается в обработчике прерывания от таймера.

Начало

IrqSPORT – указатель на структу IrqSPORT

IrqSPORT->ti++;

if(IrqSPORT->ti > IrqSPORT->dt){ Если наступило время запуска драйвера SPORT, то {

1 IrqSPORT->ti = 0; 2 IrqSPORT->IRQ_SPORT = 1; //признак наличия прерывания

3 IrqSPORT->NIRQ_HQUART ++; //общее число прерываний

4 j++; //j-й такт таймера

5 Запуск обменов данными

}

Конец

Запуск обменов данными

Начало

Цикл по списку запросов на обмен данными с СК {

Если i-й обмен данными должен выполниться на j-м такте таймера, то{

Зафиксировать элемент списка, для которо го надо выполнить обмен данными

Выйти из цикла

}

}

Запустить i-й обмен данными. В этом случае данные для передачи в СК выдаются в SPORT.

Конец

Обработчик прерывания SPORTa при выдачи данных.

Начало

Завершение i-го обмена данных.

В этом случае данные, считанные с SPORTа, записываются в массив данных считанных с СК.

Проверить,есть ли еще обмены данными, которые должны быть выполнены на j-м такте таймера. Для этого выполнить алгоритм Запуск обменов данными

Конец


Дата добавления: 2015-12-08; просмотров: 52 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.006 сек.)