ЛР1(в) > Використання Code Composer Studio: Підключення файлів вводу/виводу, Мова GEL

Тема: Підключення зовнішніх файлів для введення та виведення даних, особливості використання мови GEL для розширення можливостей Code Composer Studio

 

    Пробні точки – корисний інструмент при відпрацюванні розроблених алгоритмів. Вони дозволяють виконувати динамічну симуляцію операцій введення та виведення даних з/до зовнішніх пристроїв. Коли виконання програми досягає пробної точки, середовище CCS зчитує вказану кількість даних з файлу на головному ПК у пам’ять ЦСП, або записує оброблені дані до файлу на головному ПК. В наступному завданні розглядається спосіб встановлення пробної точки для передачі даних з програми у зовнішній файл.

  • Встановіть пробну точку в кінці циклу while{ }, у рядку розташування закритої фігурної дужки:

    while(l)

    {

        … …

    }        /*<-set probe point on this line*/

     

    (в даному місці програми вихідні дані готові для переміщення). Для цього, встановіть курсор на даному рядку програми та виберіть команду Toggle Probe Point в панелі інструментів. Синя позначка з лівого боку рядка покаже, що пробна точка встановлена (див. Рис.1.4.).

    – Виберіть команду FileFile I/O, відкриється діалогове вікно підключення зовнішнього файлу. Перейдіть до закладки File Output. Натисніть кнопку Add File та введіть ім’я вихідного файлу exp_out.dat, потім виберіть Open. В полі Address вкажіть ім’я вихідної змінної out_buffer, в полі Length вкажіть 40 – довжина блоку даних для переміщення. Така кількість даних буде виводитися до зовнішнього файлу при кожному проходженні програмою пробної точки. Тепер натисніть кнопку Add Probe Point для прив’язки пробної точки з вихідним файлом exp_out.dat, як показано на рис.1.5.


Рис.1.5. Підключення зовнішнього файлу: а) встановлення адреси та довжини блоку даних; б) з’єднання пробної точки з зовнішнім файлом.

 

– У вікні Probe Point виберіть пробну точку (розташована у 32 рядку програми). З випадаючого меню у вікні Connect To, виберіть FILE OUT:…exp_out.dat. Натисніть кнопку Replace. Підтвердіть вибір кнопкою ОК, та вийдіть з діалогового вікна підключення зовнішнього файлу.

  • Запустіть програму на виконання. Через деякий час зупиніть програму. За допомогою команди FileOpen відкрийте файл exp_out.dat, використовуючи вбудований редактор середовища CCS. Для перегляду чи редагування отриманого файлу можна використовувати інші редактори. Формат заголовку зовнішнього файлу даних (перший рядок файлу) показаний на рис.1.6. Дані відображаються у шістнадцятковому форматі з використанням відповідного синтаксису.


Рис.1.7. Формат заголовка файлу CCS.

 

 

Приклад фрагменту зовнішнього файлу, поданий нижче, має наступне значення:

1651 1 а8 1 28

0×01Е0

0×03С0

0×05А0

0×0740

0×08С0

0×0А00

0×0В20

0×0ВЕ0

 

 

– дані збережені в шістнадцятковому форматі, розміщувалися за початковою адресою 0×a8 на сторінці пам’яті даних, кожен збережений блок містить 40 (0×28h) значень змінних. Якщо потрібно використати пробну точку для підключення зовнішнього файлу з вхідними даними, то у цьому файлі повинен використовуватися той же формат для заголовку.

 

Використання мови GEL

 

    Середовище CCS використовує мову GEL для розширення своїх можливостей. GEL – це корисний засіб для створення налаштувань робочого простору з метою покращення зручності перевірки проекту.

    Відкрийте редактор середовища CCS, та створіть файл, представлений нижче:

 

menuitem “Gain_Control”

slider Gain(1,0×20,1,1,gainParam)

{

    Gain =gainParam;

 

}

Збережіть файл під назвою Gain.gel. Завантажте цей файл за допомогою команди FileLoad GEL. Винесіть панель інструментів Gain, вибравши команду GEL
Gain_ControlGain
. Запустіть програму на виконання в режимі анімації, та перевірте можливість зміни коефіцієнту підсилення за допомогою панелі інструментів Gain, рухаючи повзунок вгору та вниз.

 

Завдання для самостійної роботи

 

А. Перевірити вплив шуму на представлення сигналу.

1. Додати до вихідного сигналу випадковий сигнал (шум). Приклад такої програми надається нижче:

#include <stdlib.h>

 

#define    BUF_SIZE    40

 

const int sineTable[BUF_SIZE]=

{0x0000,0x000f,0x001e,0x002d,0x003a,0x0046,0x0050,0x0059,

0x005f,0x0062,0x0063,0x0062,0x005f,0x0059,0x0050,0x0046,

0x003a,0x002d,0x001e,0x000f,0x0000,0xfff1,0xffe2,0xffd3,

0xffc6,0xffba,0xffb0,0xffa7,0xffa1,0xff9e,0xff9d,0xff9e,

0xffa1,0xffa7,0xffb0,0xffba,0xffc6,0xffd3,0xffe2,0xfff1 };

 

int in_buffer[BUF_SIZE];

int out_buffer[BUF_SIZE];

int Gain, Noise;

 

void main()

{

int i, j;

    
 

Gain = 0x20;

Noise = 0;

 

while (1) {                      /* <- set profile point on this line */

for (i = BUF_SIZE – 1; i >= 0; i–) {

j = BUF_SIZE – 1 – i;

out_buffer[j] = 0;

in_buffer[j] = 0;

}

 

for (i = BUF_SIZE – 1; i >= 0; i–) {

j = BUF_SIZE – 1 – i;

in_buffer[i] = sineTable[i];        /* set breakpoint */

in_buffer[i] = 0 – in_buffer[i];

out_buffer[j] = Gain * in_buffer[i] + (rand() / (float)RAND_MAX * Noise);

}

    }                      /* <- set probe and profile point on this line */

}

2. Додати керування рівнем шуму за допомогою GEL-файлу. Приклад такої програми надається нижче:

 

 

menuitem “Gain_Control”

 

slider Gain(1, 0x20, 1, 5, gainParam)

{

    Gain = gainParam;

}

 

menuitem “Noise_Control”

slider Noise(0, 1000, 1, 100, noiseParam)

{

    Noise = noiseParam;

}

 

3. Запустити програму на виконання. Перевірити вплив співвідношення сигнал/шум на вихідну форму сигналу.

 

 

Б. Додати до сигналу постійну складову. Створити елемент керування постійною складовою сигналу.

 

В. Додати до сигналу інший сигнал (гармонійний, трикутний або прямокутний). Створити елементи керування співвідношенням амплітуд сигналів.