Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная_записка.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
5.24 Mб
Скачать
        1. Выбор и инициализация таймера для установки скорости обмена данными по последовательному каналу

Для установки скорости обмена данными по последовательному каналу был выбран таймер T1. Таймер T1 был выбран в качестве генератора скорости передачи данных с помощью регистра SSTA0, см. пред. пункт. Инициализация таймера T1 также описана в п.4.3.5.8.

        1. Инициализация таймера для установки времени дискретизации входного сигнала

Для установки времени дискретизации использовался таймер T3. Его инициализация происходит в функции Timer3_Init().

Инициализация таймера T3 проходит по следующему алгоритму:

  1. запись значения 0x00 в регистр управления таймером TMR3CN (отключение таймера);

  2. запись значения 0x00 в регистр конфигурации таймера TMR3CF (установка частоты счетчика SYSCLK / 12);

  3. установка значения (0xFFFF-ReloadValue) в регистр RCAP3, где ReloadValue – значение частоты дискретизации (установка значения перезагрузки);

  4. запись значения 0xFFFF в регистр значения таймера TMR3 (переполняем таймер);

  5. запуск таймера T3 (установка бита TR3 в ‘1’).

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

TMR3CN = 0x00; // temporary turning off T3

TMR3CF |= 0x00; // Counter frequency = SYSCLK/12

RCAP3 =(0xFFFF-ReloadValue); // writing reload value

TMR3 = 0xFFFF; // making counter overflow to reload counter

TR3 = 1; // start T3

        1. Выбор режимов работы внешней памяти XRAM и ее интерфейса

Все порты для работы с внешней памятью (P4..P7) работают в режиме push-pull. Их настройка происходит в вышеописанной функции Port_Init().

        1. Инициализация прерываний

В функции отправки байта Send_Byte (unsigned char Byte) перед началом отправки данных флаг прерывания TI0 сбрасывается в ноль:

TI0=0;// Drop tramsmition interrupt flag

В функции получения байта Receive_Byte (void) перед началом получения данных флаг прерывания RI0 сбрасывается в ноль:

RI0=0; // drop receiving interrupt flag

        1. Формирование цифровых отсчетов и их сохранение во внешней памяти XRAM

Со стороны МК (Little format) Со стороны ПК (Big format)

        1. Передача данных на PC

Функция отправки байта на ПК void Send_Byte (unsigned char Byte) работает по следующему алгоритму:

  1. Разрешаем передачу информации через UART, сбрасывая флаг TI0

  2. Записываем байт в буфер UART

  3. Ждем, пока не закончится передача

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

void Send_Byte (unsigned char Byte)

{

char old_SFRPAGE = SFRPAGE;

SFRPAGE = UART0_PAGE; // Switch to UART0 page

TI0=0; // Drop tramsmition interrupt flag

SBUF0=Byte; // copy data to send to SBUF0

while(!TI0); // dalay while tramsmiting

SFRPAGE = old_SFRPAGE; // restore SFRPAGE

}

        1. Прием данных с pc

Функция приема байта с ПК unsigned char Receive_Byte (void) работает по следующему алгоритму:

  1. Разрешаем получение информации через UART, сбрасывая флаг RI0

  2. Устанавливаем флаг активного приема

  3. Ждем, пока прием не завершится

  4. Сохраняем полученную информацию

  5. Сбрасываем флаг активного приема

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

unsigned char Receive_Byte (void)

{

char old_SFRPAGE = SFRPAGE;

unsigned char rb;

SFRPAGE = UART0_PAGE;

RI0=0; // drop receiving interrupt flag

REN0=1; // receive enable

while(!RI0); // delay while receiving

rb = (unsigned char)SBUF0; // receive data from SBUF0

REN0=0; // receiving finished

SFRPAGE = old_SFRPAGE; // restore SFRPAGE

return rb;

}