Академический Документы
Профессиональный Документы
Культура Документы
ОТЧЕТ по практике
СТУДЕНТ
/ Архипов А.Г.
/
(подпис (Фамилия и инициалы)
ь)
Группа Э-13м-21
(номер учебной группы)
ПРОМЕЖУТОЧНАЯ АТТЕСТАЦИЯ
ПО ПРАКТИКЕ
Отлично
(отлично, хорошо, удовлетворительно, неудовлетворительно,
зачтено, не зачтено)
/ /
(подпис (Фамилия и инициалы члена комиссии)
ь)
/ /
(подпис (Фамилия и инициалы члена комиссии)
ь)
1
Москва
2022
ОГЛАВЛЕНИЕ
Список сокращений...........................................................................................6
Введенеие............................................................................................................7
Лекция 1 Архитектура основных микропроцессорных устройств...............8
Микропроцессор............................................................................................8
Микроконтроллер..........................................................................................9
Программируемые логические интегральные схемы...............................10
Цифровой сигнальный процессор..............................................................11
Лекция 2. Программирование на языке С.....................................................13
Простой пример программы на языке С....................................................14
#include <stdio.h>......................................................................................14
int main(void).............................................................................................15
Комментарий............................................................................................16
Скобки, тело функции и блоки...............................................................16
Объявления...............................................................................................16
Функция printf()........................................................................................17
Оператор возврата....................................................................................17
Этапы сборки................................................................................................18
Типы данных................................................................................................22
Приведение типов........................................................................................24
Лекция 3 Освоение операций языка С на примерах задач...........................26
Структуры.....................................................................................................26
Указатели......................................................................................................27
Арифметика указателей...............................................................................29
Массивы........................................................................................................30
Арифметические операции.........................................................................30
Логические операции...................................................................................31
Циклы........................................................................................................32
Заключение. Выводы...................................................................................33
Лекция 4 Синтез логических схем..................................................................35
Булева алгебра..............................................................................................35
2
Стандарты на условные графические обозначения элементов цифровых
схем..........................................................................................................................36
Основные аксиомы и законы алгебры-логики..........................................38
Синтез цифровых комбинационных схем по произвольной таблице
истинности..............................................................................................................39
Совершенная дизъюнктивная нормальная форма................................39
Создание карты Карно, минимизация и приведение к базису И-НЕ. .41
Электронная схема на основе логических элементов..............................45
Электронная схема на основе микросхем..................................................47
Лекция 5 Интерфейсы для передачи данных................................................49
Введение.......................................................................................................49
Классификация интерфейсов......................................................................49
SPI..................................................................................................................52
RS-защелка................................................................................................52
Синхронная RS-защелка..........................................................................53
D-защелка..................................................................................................54
D-триггер..................................................................................................55
Принцип работы интерфейса..................................................................57
Типы подключения в шине SPI..............................................................60
UART..............................................................................................................62
Общие сведения.......................................................................................62
Асинхронность.........................................................................................63
Стартовые и стоповые биты....................................................................63
Биты данных.............................................................................................64
Контроль четности...................................................................................64
I2C..................................................................................................................65
Причины создания интерфейса I2C.......................................................65
Особенности I2C......................................................................................66
Программная часть I2C...........................................................................67
Достоинства и недостатки изученных интерфейсов................................71
SPI..............................................................................................................71
UART..........................................................................................................72
I2C..............................................................................................................73
3
Лекция 6. Вторичные измерительные преобразователи.............................74
Общие сведения...........................................................................................74
Входные преобразователи аналоговых-сигналов.....................................75
Требования к аналоговым входам МП устройств РЗА........................75
Трансформаторные схемы......................................................................77
Бестрансформаторные схемы.................................................................79
Лекция 7 Цифровая обработка сигналов.......................................................80
Обработка сигнала. Преобразование Фурье..............................................80
Основной недостаток преобразования Фурье. Решение — Вейвлет-
преобразование.......................................................................................................82
Понятие вейвлета и его сущности..............................................................85
Критерии вейвлетов.....................................................................................86
Примеры вейвлетов......................................................................................86
Преобразование Хаара для одномерного сигнала................................88
Получение семейства Вейвлетов................................................................89
Применение вейвлет-преобразования в энергосистемах.........................90
Лекция 8 Операционные системы..................................................................93
Что такое операционная система для микроконтроллера?......................93
Преимущества и недостатки ОСРВ для МК.............................................95
Обзор FreeRTOS...........................................................................................97
Основы работы ОСРВ..................................................................................98
Задачи..........................................................................................................103
4
СПИСОК СОКРАЩЕНИЙ
5
ВВЕДЕНЕИЕ
6
ЛЕКЦИЯ 1
АРХИТЕКТУРА ОСНОВНЫХ МИКРОПРОЦЕССОРНЫХ
УСТРОЙСТВ
Микропроцессор
7
Рисунок 1 – Структура цифрового устройства релейной защиты
Микроконтроллер
8
связанных с воспроизведением мультимедийных данных. Микроконтроллеры
бывают 4-, 8-, 16- и 32-разрядными.
Между универсальными микроконтроллерами, с одной стороны, и
стандартными ПК, с другой, наблюдаются существенные различия. Во-первых,
спрос на микроконтроллеры в максимальной степени обусловлен ценами на
них. Цены на микроконтроллеры определяются разрядностью, типом, емкостью
памяти и рядом других факторов.
Во-вторых, почти все микроконтроллеры работают в реальном времени.
За каждым входным сигналом должен следовать незамедлительный отклик. К
примеру, после нажатия пользователем кнопки во многих приборах включается
световой индикатор, причем между первым и вторым событием не должно быть
никаких пауз. Необходимость работы в реальном времени зачастую определяет
архитектурное решение микроконтроллеров.
В-третьих, встроенные системы зачастую ограничены по многим
электрическим и механическим параметрам, таким как размер, вес и
энергопотребление. С учетом этих ограничений и разрабатываются
микроконтроллеры, устанавливаемые в такого рода системах.
МК изначально программировались только на языке ассемблера, но
различные языки программирования высокого уровня, такие как C, Python и
JavaScript, в настоящее время также широко используются для работы с
микроконтроллерами.
Область применения МК довольно обширна: бытовые приборы,
медицинское оборудование, в робототехнике, военная техника, в
электроинструментах, в игрушках и других встроенных системах.
10
Специальные режимы адресации;
Специальные возможности программного автомата;
Специализированная периферия и интерфейсы.
11
ЛЕКЦИЯ 2.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С
12
#include <stdio.h>
int main(void) /* первая программа */
{
int year;
year = 2022;
printf("Hello World!\n");
printf("This manual was written in %d", year);
return 0;
}
#include <stdio.h>
#include <stdio.h> включить другой файл
int main(void)
int main (void) имя
Комментарий
/* первая программа */ комментарий
14
Фигурные скобки определяют границы функции main(). В общем случае
все функции языка С используют фигурные скобки для обозначения начала и,
соответственно, конца тела функции.
Объявления
Для хранения информации программы используют переменные.
Функция printf()
printf("Hello World!\n");
15
printf("This manual was written in %d", year);
Оператор возврата
Для возврата целочисленного значения перед завершением функции
main() добавляется строка
return 0; оператор возврата
Этапы сборки
1
Для более детального понимания предлагается ознакомиться с понятием «форматированный вывод в
языке Си»
16
требуется скомпилировать в исполняемый файл.
Какие действия выполняет компилятор, чтобы превратить исходный текст
в исполняемый файл?
Существуют следующие этапы сборки кода
1. Препроцессинг
На этом этапе удаляются из текста все комментарии, выполняются
директивы, начинающиеся с символа #, заменяются макросы ( #define) их
значениями, выбрав нужные фрагменты кода в соответствии с условиями #if,
#ifdef и #ifndef.
На выходе получается препроцессированный код в файле расширения .i
Посмотреть результат работы препроцессора можно через команду
$ gcc -E main.c
18
Рисунок 2 – Фазы сборки программного продукта
Типы данных
19
int — целый;
float — вещественный;
Размер в Специ-
Тип Интервал изменения
байтах фикатор
char 1 %c [-128…+127]
unsigned char 1 %c [0...255]
short int 2 %hi [-32 768…+32 767]
unsigned short int 2 %hu [0...65 535]
int 2(4)2 %d (%i) [-32768…+32 767]
unsigned int 2(4) %hu [0...65 535]
2
Размер переменной типа int в стандарте языка С не определен. В большинстве систем
программирования размер переменной типа int соответствует размеру целого машинного слова. Например, в
компиляторах для 16-разрядных процессоров переменная типа int имеет размер 2 байта, а для 32-разрядных —
4 байта.
20
long int 4 %li [-2 147 483 648…+2 147 483 647]
unsigned long int 4 %lu [0…+4 294 967 295]
[−9 223 372 036 854 775 808...
long long int 8 %lld(%lli)
+9 223 372 036 854 775 807]
unsigned long long [0…
8 %llu
int 18 446 744 073 709 551 615]
float 4 %f [3.4Е-38...3.4Е+38]
double 8 %ld [1.7Е-308...1.7Е+308]
long double 10 %Lf [3.4Е-4932...3.4Е+4932]
Приведение типов
3
На все эти вопросы стоит обращать особое внимание, так как по невнимательности в результате
неявных преобразований можно случайно потерять значимую информацию, что иногда приводит к
трудноуловимым ошибкам.
22
ЛЕКЦИЯ 3
ОСВОЕНИЕ ОПЕРАЦИЙ ЯЗЫКА С НА ПРИМЕРАХ ЗАДАЧ
Прототипы функций
Структуры
23
умолчанию public.
Объявление структуры представляет собой общее описание,
показывающие, из каких частей состоит структура. Объявление структуры в
данном примере имеет следующий вид:
struct book {
char title [МAXTITL];
char author [МAXAUTL];
float value;
};
24
Указатели
int* вместе задают тип переменной pa, т.е. «*» показывает, что pa
25
является не просто переменной типа int, а указателем на
переменную типа int.
В качестве присваиваемого значения указателя pa будет &a — адрес,
который будет хранить данный указатель. Чтобы получить адрес
переменной используется унарный оператор « &» и он ставится
перед именем той переменной, адрес которой необходимо получить.
Описанный выше код можно представить, как это проиллюстрировано на
Рисунок 3.
Массивы
Арифметика указателей
27
интерпретировать как «перейти к ячейке памяти mas, пройти через i единиц и
там найти нужное значение».
Получается, что в общем случае массивы и указатели тесно связаны друг с
другом. Если mas есть массив, то выражения mas[i] и *(mas + i)
эквивалентны.
Таким образом, добавление к указателю 1 увеличивает его значение на
величину размера типа в байтах переменной, на которую он указывает.
Однако не стоит путать, к примеру, *(mas+2) и *mas + 2. Операция
разыменования (*) имеет более высокий приоритет, чем «+», следовательно,
последнее выражение означает (*mas) + 2:
28
*(mas + 2) /* значение третьего элемента массива mas */
*mas + 2 /* 2 прибавляется к значению первого элемента */
ЛЕКЦИЯ 4
СИНТЕЗ ЛОГИЧЕСКИХ СХЕМ
Булева алгебра
29
Все возможные логические функции нескольких переменных можно
образовать с помощью трех основных операций:
30
Логический элемент «ИЛИ»
(OR)
Логический элемент
«ИСКЛЮЧАЮЩЕЕ ИЛИ»
(eXclusive OR или XOR)
Логический элемент
«ИСКЛЮЧАЮЩЕЕ ИЛИ-
НЕ» (NOT eXclusive OR)
0 0 1
A
«ИЛИ» B
0 1
1 1 1
31
«И» A
0 1
0 1
0 1 1
0 0 0
B
B
1 1 0
1 0 1
«ИЛИ-НЕ» A
0 1 «исключающе A
е ИЛИ»
0 1 0 0 1
B
1 0 0 0 0 1
B
1 1 0
«И-НЕ» A
32
«исключающе A
е ИЛИ-НЕ»
0 1
0 1 0
B
1 0 1
«НЕ» A
0 1
1 0
0 ∙ A=0
1+ A=1
1 ∙ A=1
Аксиомы(тождества) 0+ A= A
A ∙ A= A
A+ A= A
A=A
Законы коммутативности A+ B=B+ A
(переместительности) A ∙ B=B ∙ A
Законы ассоциативности A+ B+C= A+ ( B+C )
(сочетательности) A ∙ B ∙ C=A ∙ (B ∙ C)
Законы дистрибутивности A ∙ ( B+C )=( A ∙ B ) + ( A ∙C )
(распределительности) A+ ( B ∙C )=( A+ B ) ∙( A+ C)
A+ A=1
Законы отрицания A ∙ A=0
Á=A
33
A+ B=A ∙ B
Законы Де-Моргана
A ∙ B=A
A+ A ∙ B= A
Законы поглощения
A ∙( A+ B)= A
Входы Выходы
№
A B C D F
1 0 0 0 0 0
2 0 0 0 1 0
3 0 0 1 0 0
4 0 0 1 1 0
5 0 1 0 0 1
6 0 1 0 1 1
7 0 1 1 0 0
8 0 1 1 1 0
9 1 0 0 0 0
10 1 0 0 1 1
11 1 0 1 0 1
12 1 0 1 1 1
13 1 1 0 0 0
14 1 1 0 1 0
15 1 1 1 0 0
16 1 1 1 1 1
35
В итоге получается следующая СДНФ
F= A BCD ∪ A B C D ∪ A BC D∪ A B C D ∪ A B CD ∪ ABCD
Так как количество переменных в каждом терме (ранг терма) данного
логического выражения равно, то такое логическое выражение называется
совершенным (СКНФ).
Как и в формуле, каждая строка (терм) реализуется своим логическим
элементом «И», затем выходы этих логических элементов объединяются при
помощи логического элемента «ИЛИ». Количество входов логического
элемента «И» (ранг минтерма) в СДНФ однозначно определяется количеством
входных сигналов в таблице истинности. Количество этих элементов, а значит и
количество входов в логическом элементе «ИЛИ» определяется количеством
строк с единичным сигналом на реализуемом выходе цифровой схемы.
Более наглядное изображение представлено на Рисунок 5.
37
Итак, приступим к синтезу нашего устройства, руководствуясь
вышеизложенной теорией.
Три шага для построения карт Карно
38
Рисунок 7 – Карта Карно с образованными группами
39
интегральные схемы, такие как программируемые логические матрицы (ПЛМ),
программируемые матрицы логики ПМЛ или CPLD.
40
ЛЕКЦИЯ 5
ИНТЕРФЕЙСЫ ДЛЯ ПЕРЕДАЧИ ДАННЫХ
Введение
Классификация интерфейсов
42
Рисунок 11 – а) Симплексный, б) Полудуплексный, в) Дуплексный, г) Мультиплексный
43
SPI
RS-защелка
SPI (Serial Peripheral Interface — последовательный периферийный
интерфейс, шина SPI) — последовательный синхронный стандарт передачи
данных, предназначенный для обеспечения простого и недорогого
высокоскоростного сопряжения микроконтроллеров и периферии. Однако для
понимания работы SPI предварительно следует рассмотреть устройство
простейшей ячейки памяти — RS-защелку.
Рисунок 12 – RS-защелка
S (set) R (reset) Q Q
1 0 1 0
0 1 0 1
1 1 0 0
0 0 Q Q
44
заключить, что на его выходе будет логическая единица, а соответственно на
выходе верхнего логического элемента будет логический ноль.
Синхронная RS-защелка
Состояние, когда на вход R и S приходят единицы считается
запрещенным, так как при одновременном исчезновении этих единиц (переход
в режим хранения) значение на выходе может быть как «1», так и «0», т.е. при
переходе к хранению состояние выхода будет не определено. Такое может
происходить из-за не согласованного по времени поступления информации на
входы, это явление называется «гонкой». Это приводит к наложению одного
сигнала на другой. Вызвано это разным временем быстродействия элементов,
45
через которые проходит сигнал, прежде чем попасть на входы триггера, в
данном случае на R или S. Чтобы избавиться от этого явления, был придуман
вариант подачи синхросигнала.
S (set) R (reset) Q Q
1 0 1 0
0 1 0 1
1 1 0 0
0 0 Q Q
D-защелка
Теперь перейдем к рассмотрению элемента памяти емкостью в один бит
— D-защелку (D — Delay от англ. «задержка»). Схема D-защелки приведена
Рисунок 15.
46
Рисунок 15 – Схема D-защелки
Стоит отметить, что в данном случае схема работает по уровню, т.е. когда
на тактовый вход приходит уровень логической единицы, то значение со входа
D дублируется на выход Q, и принципиально в данной схеме входной
переходный процесс может беспрепятственно проходить на выход защелки,
поэтому там, где это важно, необходимо сокращать длительность импульса
синхронизации до минимума. Чтобы преодолеть такое ограничение были
разработаны триггеры, работающие по фронту.
D-триггер
47
Рисунок 17 –Схема асинхронного D-триггера
48
Рисунок 20 – Временные диаграммы
49
Теперь перейдем к рассмотрению непосредственно самого SPI,
основываясь на том, что было изучено выше. На Рисунок 21 изображено
упрощенное соединение двух устройств по SPI. Прямоугольниками изображены
D-триггеры, которые сохраняют значения по фронту тактового сигнала, по
этому же сигналу все значения сдвигаются на один бит. Как можно заметить,
данные от ведущего передаются ведомому старшим битом вперед. Также на
рисунке имеются выводы Qi, с которых можно считать значение конкретного
бита в данный момент, или в которые можно передавать значения.
50
Рисунок 23 – Процесс передачи данных
MOSI — выход ведущего, вход ведомого (англ. Master Out Slave In).
Служит для передачи данных от ведущего устройства ведомому;
MISO — вход ведущего, выход ведомого (англ. Master In Slave Out).
Служит для передачи данных от ведомого устройства ведущему;
SCLK или SCK — последовательный тактовый сигнал (англ. Serial Clock).
Служит для передачи тактового сигнала для ведомых устройств;
CS или SS — выбор микросхемы, выбор ведомого (англ. Chip Select, Slave
Select). С помощью CS физически подключаем/отключаем ведомое
устройство.
CS — то же самое, но состояние инверсное.
Также стоит отметить, что существуют 4 варианта изменения фронта
импульса, которые представлены на Рисунок 24.
51
Рисунок 24 – Варианты изменения фронта импульса
52
Рисунок 25 – Простейшее подключение к шине SPI
53
Рисунок 27 – Каскадное подключение к шине SPI
UART
Общие сведения
Универсальный асинхронный приёмопередатчик (Univsersal Asynchronos
Reciever-Transmitter) — определяет протокол или набор правил для обмена
последовательными данными между двумя устройствами. UART — очень
простой протокол, в котором используется только два провода между
передатчиком и приемником для передачи и приема в обоих направлениях. Оба
конца также имеют заземление. Связь в UART может быть симплексной,
полудуплексной, или полнодуплексной. Данные в UART передаются в виде
кадров. У каждого устройства, поддерживающего UART, обычно обозначены
два вывода: RX и TX. TX — означает transmit (передаю), RX — receive
(принимаю). Отсюда становится понятно, что RX одного устройства нужно
подключать к TX другого. Если подключить RX одного устройства к RX другого,
то оба устройства будут слушать друг друга. Если соединить TX и TX — это уже
более опасно, это выходы низкого сопротивления устройств и, если на одном
будет логическая единица, а на втором ноль — по проводу пойдёт ток
короткого замыкания (это зависит от конкретной программной или аппаратной
реализации). Далее приведено краткое описание и объяснены формат и
содержимое этих кадров.
54
Рисунок 28 – Схема подключения двух устройств по UART
Асинхронность
Одним из больших преимуществ UART является его асинхронность —
передатчик и приемник не используют общий тактовый сигнал. Хотя это
значительно упрощает протокол, данное свойство предъявляет определенные
требования к передатчику и приемнику. Поскольку у них нет общего тактового
сигнала, оба конца должны передавать с одинаковой заранее заданной
скоростью, чтобы иметь одинаковую синхронизацию битов. Наиболее
распространенные скорости передачи данных UART, используемые сегодня:
4800, 9600, 19,2 кбит/с, 57,6 кбит/с и 115,2 кбит/с. Помимо одинаковой скорости
передачи данных, обе стороны UART-соединения также должны использовать
одинаковую структуру и параметры кадра.
Биты данных
Биты данных являются пользовательскими данными или «полезными»
битами и идут сразу после стартового бита. Может быть от 5 до 9 битов
пользовательских данных, хотя чаще всего используется 7 или 8 битов. Эти
биты данных обычно передаются в формате с первым младшим значащим
битом.
Контроль четности
Многие реализации UART имеют возможность автоматически проверять
целостность данных методом контроля битовой чётности. Когда эта функция
включена, минимальная посылка информационных битов дополняется
конечным битом контроля чётности. При передаче посылки логическое
устройство подсчитывает число единичных битов в информационной части
посылки и по этому числу устанавливает бит контроля чётности в одно из
состояний, в зависимости от числа единичных бит и заданного текущего
режима проверки на чётность.
Существуют режимы контроля на чётность (англ. Even parity) и
нечётность (англ. Odd parity). При Even parity бит чётности выставляется в такое
состояние, чтобы сумма единичных бит в посылке (включая данные и сам бит
четности) являлась чётным числом. При Odd parity бит контроля чётности
выставляется так, чтобы сумма всех битов посылки являлась нечётной, как
показано в Таблица 7.
Таблица 7 – Контроль четности
56
11111110 7 1 0
I2C
57
компоненты устройства, при этом используя минимум линий для передачи
данных. В дальнейшем будет нелишним всегда помнить об этом, потому что в
противном случае протокол I2C будет казаться необоснованно сложным и
привередливым.
Особенности I2C
Прежде чем углубиться в какие-либо подробности, необходимо
перечислить основные особенности интерфейса I2C:
Шина I2C является синхронной (тактируемой);
Независимо от количества устройств на шине, для передачи
информации всегда используется только две линии: линия данных
SDA (Data Line) и линия тактовых импульсов SCL (Clock Line).
Такты на линии SCL всегда генерирует мастер;
58
являются зарезервированными). Мастер должен знать эти адреса для
связи с конкретным ведомым устройством;
Начало любого обмена данными инициируется и завершается
мастером. Мастер может как записывать данные в одно или несколько
ведомых устройств, так и запрашивать у них данные. Обмен
информацией между двумя ведомыми невозможен;
Понятия «Мастер» и «Ведомый» по своей природе непостоянны: в
теории любое устройство на шине I2C может функционировать как
ведущее или ведомое, если ему это позволяет сделать аппаратная часть
и/или прошивка. Иными словами, рассматриваемая шина
поддерживает режим мультимастера. Однако на практике системы на
базе I2C чаще всего строятся по архитектуре, в которой есть только
один мастер, отправляющий команды нескольким ведомым
устройствам и собирающий с них данные;
Данные загружаются (Updated) на линию SDA по заднему фронту
тактовых импульсов на линии SCL и считываются (Sampled) по
переднему фронту SCL;
59
• Данные передаются побайтово, за каждым байтом следует бит
подтверждения, называемый битом ACK/NACK (подтверждено или не
подтверждено).
60
что формирование стартового бита — это обязанность мастера. После того, как
старт-бит сформирован, ведущий опускает линию SCL в нуль и выставляет на
линию SDA старший бит первого байта сообщения, после чего линия SCL
устанавливается в единицу. Обратите внимание на то, что данные,
передаваемые по линии SDA, считаются действительными только во время
высокого состояния тактового импульса (т.е. при SCL = 1), а изменения на
линии SDA допускаются исключительно при SCL = 0. При этом данные с линии
SDA считываются по переднему фронту тактового сигнала, а обновляются
обычно по его заднему фронту. После отправки старшего бита передаваемого
байта, на линию данных поочередно выставляются все остальные его биты,
вплоть до младшего. Таким образом, обмен информацией по шине I2C
происходит побайтово (количество байт в сообщении не ограничено). При этом
за каждым байтом следует бит подтверждения («ACK») или не подтверждения
(«NACK»), выставляемый на шину приемником. Отметим, что «ACK»
соответствует низкому логическому уровню, а «NACK» — высокому. Так
сделано из-за того, что единица — это рецессивное состояние шины I2C, и если
приемник «заглючил», то сигнал сам по себе поднимется до «NACK». Поэтому
подтверждение «ACK» может быть передано только в том случае, когда
приемное устройство может прижать линию SDA к массе, что свидетельствует
о его работоспособности.
Заканчивается транзакция стоповым битом, определяемым как передний
фронт импульса SDA, в то время как сигнал SCL установлен в единицу. Любая
I2C-посылка должна заканчиваться стоп-битом, однако может возникнуть
ситуация, при которой стоповому биту предшествует не один, а несколько
стартовых битов. Как и в случае стартового бита, формирование стоп-бита
является обязанностью мастера. Через некоторое время после возникновения
стопового бита шина считается освободившейся. Последовательность событий
при передаче данных по I2C будет такой:
мастер генерирует стартовый бит, чтобы инициировать транзакцию;
в первом байте сообщения мастер передает 7-битный адрес,
соответствующий ведомому устройству, с которым он хочет связаться.
Последний бит в этом байте — это индикатор чтения/записи. Если мастер
хочет считать данные с ведомого устройства, он устанавливает данный
61
бит в единицу, если же данные должны быть записаны, то последний бит
первого байта сбрасывается;
следующий байт — это байт данных. Он может исходить как от ведущего,
так и от ведомого, в зависимости от состояния бита чтения/записи в
первом байте. Напомним, что данные передаются по 8 бит, начиная со
старшего;
за байтом данных следует бит подтверждения, равный «ACK» или
«NACK». Если осуществляется процедура считывания данных, то бит
подтверждения генерируется мастером. Если же производится запись
данных, то бит подтверждения должно генерировать ведомое устройство.
Отметим, что процесс формирования бита ACK/NACK в случае шины I2C
заслуживает особенного внимания, поэтому чуть ниже он будет
рассмотрен более подробно;
после формирования бита подтверждения по шине можно передавать
следующий байт данных (напомним, что количество передаваемых байт
неограниченно);
посылка завершается стоп-битом, сгенерированным мастером;
после этого шина считается готовой к осуществлению новой транзакции.
Как было сказано выше, процесс формирования бита подтверждения в
случае шины I2C является нетривиальным. В том случае, когда мастером
осуществляется запись данных в ведомое устройство, бит подтверждения
генерирует ведомый. При этом на время импульса подтверждения мастер
отпускает (переводит в высокое состояние) линию SDA, а ведомое устройство
должно формировать сигнал «ACK», удерживая данную линию в низком уровне
всё время, пока импульс синхронизации SCL равен единице. В том случае, когда
ведомый не может ответить ведущему (например, когда он выполняет в данный
момент какие-либо функции реального времени), линия данных SDA должна
быть оставлена им в высоком состоянии, что будет соответствовать сигналу
«NACK». При возникновении подобной ситуации у мастера остается
возможность выдать стоповый бит для прерывания пересылки данных. В
62
случае, когда мастер считывает данные с ведомого, бит подтверждения после
каждого принятого байта он должен формировать сам. При этом возможны два
варианта. Если ведомый (по мнению мастера) передал еще не всю информацию,
ведущий должен сгенерировать сигнал «ACK». Если же мастер считает
принятый байт последним в посылке, то в этом случае вместо «ACK»
выставляется сигнал «NACK», сообщающий ведомому об окончании транзакции
и требующий от него освободить шину. Подобный подход является крайне
эффективным в тех случаях, когда мастер получает от ведомого (например, от
датчика температуры) непрерывный поток данных. В этом случае ведущему не
нужно для считывания нового значения постоянно начинать новую транзакцию
— достаточно просто не прерывать старую, раз за разом выставляя «ACK» в
ответ на принятые данные. Если же мастеру нужно отвлечься на что-то еще, он
может сформировать «NACK» после приема очередного байта и начать новую
транзакцию только тогда, когда он будет к этому готов. Отметим, что для
описанной работы интерфейса I2C ведомый, передающий данные мастеру,
должен отпускать (т.е. переводить в высокое состояние) линию данных SDA на
время формирования ведущим бита подтверждения.
SPI
Достоинства SPI:
63
ведомым устройствам не нужен уникальный адрес, в отличие от I2C;
Однонаправленный характер сигналов позволяет при необходимости
легко организовать гальваническую развязку между ведущим и
ведомыми устройствами;
Максимальная тактовая частота ограничена только быстродействием
устройств, участвующих в обмене данными.
Недостатки SPI:
Необходимо больше выводов, чем для интерфейса I2C;
Ведомое устройство не может управлять потоком данных;
Нет подтверждения приема данных со стороны ведомого устройства
(ведущее устройство может передавать данные «в никуда»);
Нет определенного стандартом протокола обнаружения ошибок;
Отсутствие официального стандарта, что делает невозможным
сертификацию устройств;
По дальности передачи данных интерфейс SPI уступает таким стандартам,
как UART;
Наличие множества вариантов реализации интерфейса.
UART
Достоинства UART:
Простота реализации;
Наличие всего лишь двух проводов для создания соединения;
Хорошая помехозащищенность;
Возможность передавать данные на относительно большие расстояния
(порядка 1 км);
Встроенный в протокол способ обнаружения ошибок передачи.
64
Недостатки UART:
I2C
Основными достоинствами шины I2C являются следующие:
Поддержка сравнительного большого количества устройств (до 112);
Даже при большом количестве устройств на шине для ее реализации
достаточно всего двух линий — SDA и SCL;
На шину легко повесить ведомые устройства разного типа;
Одновременная поддержка несколько мастеров на одной шине;
Наличие бита подтверждения (ACK/NACK), облегчающего обработку
ошибок.
К недостаткам рассматриваемой шины можно отнести:
Увеличение сложности прошивки МК или усложнение аппаратной
части;
Наличие битов подтверждения снижает максимальную пропускную
способность шины;
Для нормальной работы шины требуются подтягивающие резисторы,
которые ограничивают тактовую частоту и занимают место на
печатной плате (что особенно критично в системах с ограниченным
свободным пространством). Кроме того, подтягивающие резисторы
увеличивают энергопотребление устройства в целом.
65
ЛЕКЦИЯ 6.
ВТОРИЧНЫЕ ИЗМЕРИТЕЛЬНЫЕ ПРЕОБРАЗОВАТЕЛИ
Общие сведения
68
Наименование показателя Значение
длительно 2
кратковременно (1 с) 40
Каналы тока и напряжения (аналоговые
входы устройства) должны обеспечивать
гальваническую изоляцию внешних цепей +
от внутренних цепей МП устройства РЗА
Мощность, потребляемая по каждому
аналоговому входу при номинальном токе и
напряжении сигнала, не более
по цепям тока при I ном, ВА 0,5 (при I ном=1,0 А) / 2,0 (при I ном=5,0 А)
по цепям напряжения, ВА 0,5
Трансформаторные схемы
Преобразование информации в один вид и масштабирование наиболее
часто осуществляются посредством промежуточных ТТ и ТН (Рисунок 34).
Несмотря на то, что такие трансформаторы имеют нелинейные передаточные
69
характеристики, определённый разброс параметров, некоторую температурную
нестабильность, они всё же приемлемы для построения устройств релейной
защиты.
К входным преобразователям предъявляются следующие требования:
минимальные значения амплитудной и фазовой погрешности (особенно в
области низких частот); осуществление требуемого уровня гальванической
развязки первичных и вторичных цепей; габаритные минимальные размеры;
обеспечение необходимой помехозащищенности и пр.
70
снижению межобмоточной ёмкости, по которой возможно попадание
импульсных помех внутрь устройства. С этой целью секционируют вторичную
обмотку или помещают между первичной и вторичной обмотками экранную.
Для защиты электронных элементов от возможных перенапряжений широко
применяют варисторы RU.
Отдельным вопросом применения трансформаторных преобразователей
тока является точность передачи ими апериодических слагающих входных
сигналов, поскольку большинство современных микропроцессорных устройств
РЗА являются одновременно и регистраторами (осциллографами). Не требует
особых объяснений тот факт, что для повышения точности
осциллографирования требуется максимально возможная индуктивность цепи
намагничивания промежуточных ТТ. После использования всех остальных
средств этого можно добиться только увеличением габаритных размеров
трансформаторов.
Бестрансформаторные схемы
71
преобразования переменного напряжения и тока в двоичный код, так и для
преобразования постоянного тока и напряжения.
72
ЛЕКЦИЯ 7
ЦИФРОВАЯ ОБРАБОТКА СИГНАЛОВ
73
Рисунок 37 – Амплитудно-временное представление стационарного6 сигнала
6
Понятие стационарного сигнала будет пояснено далее.
74
Рисунок 38 – Наглядная демонстрация преобразования Фурье
77
Как видим, что на обоих графиках (Рисунок 40 и Рисунок 42) видны две
частотные составляющие 50 и 120 Гц. Кроме неодинаковости амплитуд,
различий спектров нет. Это побочный эффект того, что, используя фильтр
Фурье, нельзя узнать, в какой именно момент времени существует та или иная
частота, поэтому он не пригоден для анализа нестационарных сигналов.
Эффективным решением будет использование Вейвлет-преобразования,
которое позволяет получить частотно-временное представление сигнала.
Критерии вейвлетов
∫ ψ ( t ) dt =0
−∞
2. Ограниченность
Квадрат нормы функции должен быть конечным или, иными словами,
функция должна быть локализована на временной оси
∞
‖ψ‖ =∫ |ψ (t )| dt< ∞
2 2
−∞
Примеры вейвлетов
79
Рисунок 44 – Получение вейвлета Морле
{
1 , 0≤ x <1/2
ψ [ x ] = −1 , 1/2≤ x< 1
0 , x ∉ [ 0 ,1 ) .
Иллюстрация выражения представлена на Рисунок 46.
и .
Повторяя данную операцию для каждого элемента исходного сигнала, на
выходе получают два сигнала, один из которых является огрубленной версией
входного сигнала — , а второй содержит детализирующую информацию,
необходимую для восстановления исходного сигнала. Аналогично,
преобразование Хаара может быть применено к полученному сигналу и т.д.
Рассмотрим разложение сигнала из 8 значений
81
Можно заметить, что — показывает постоянную составляющую, а
—среднее значение за период.
82
результат.
83
случае, если сигнал на каком-либо участке похож на заданный вейвлет с
заданным масштабом, мы увидим всплеск функции.
84
ЛЕКЦИЯ 8
ОПЕРАЦИОННЫЕ СИСТЕМЫ
Низкая производительность.
Малый объем ОЗУ и ПЗУ.
Отсутствие блока управления памятью (Memory management unit,
MMU), используемого большинством современных ОС, например
Windows и UNIX-подобными.
Отсутствие аппаратных средств поддержки многозадачности
(например, средств быстрого переключения контекста).
88
Обзор FreeRTOS
90
Планировщик (Scheduler) — это часть ядра ОСРВ, которая определяет,
какая из задач, готовых к выполнению, выполняется в данный конкретный
момент времени. Планировщик может приостанавливать, а затем снова
возобновлять выполнение задачи в течение всего ее жизненного цикла (то есть с
момента создания задачи до момента ее уничтожения).
Алгоритм работы планировщика (Scheduling policy) — это алгоритм, по
которому функционирует планировщик для принятия решения, какую задачу
выполнять в данный момент времени. Алгоритм работы планировщика в ОС
общего назначения заключается в предоставлении каждой задаче процессорного
времени в равной пропорции. Алгоритм работы планировщика в ОСРВ
отличается и будет описан ниже.
Среди всех задач в системе в один момент времени может выполняться
только одна задача. Говорят, что она находится в состоянии выполнения.
Остальные задачи в этот момент не выполняются, ожидая, когда планировщик
выделит каждой из них процессорное время. Таким образом, задача может
находиться в двух основных состояниях: выполняться и не выполняться.
Кроме того, что выполнение задачи может быть приостановлено
планировщиком принудительно, задача может сама приостановить свое
выполнение. Это происходит в двух случаях. Первый — это когда задача
«хочет» задержать свое выполнение на определенный промежуток времени (в
таком случае она переходит в состояние сна (sleep)). Второй — когда задача
ожидает освобождения какого-либо аппаратного ресурса (например,
последовательного порта) или наступления какого-то события (event), в этом
случае говорят, что задача блокирована (block). Блокированная или «спящая»
задача не нуждается в процессорном времени до наступления
соответствующего события или истечения определенного интервала времени.
Функции измерения интервалов времени и обслуживания событий берет на себя
ядро ОСРВ.
Пример перехода задачи в блокированное состояние показан на Рисунок
50.
91
Рисунок 50 – Переключение между задачами, которые используют один и тот же аппаратный
ресурс
92
регистры Reg1 и Reg2 (инструкции LDI). Пусть перед инструкцией сложения
ADD ядро приостановило задачу 1 и отдало управление задаче 2, которая
использует регистры Reg1 и Reg2 для своих нужд (б). В какой-то момент
времени ядро возобновит выполнение задачи 1 с места, где она была
приостановлена: с инструкции ADD (в). Однако для задачи 1 изменение ее
контекста (регистров Reg1 и Reg2) останется незамеченным, произойдет
сложение, но его результат «с точки зрения» задачи 1 окажется неверным.
Таким образом, одна из основных функций ядра ОСРВ — это обеспечение
идентичности контекста задачи до ее приостановки и после ее восстановления.
Когда ядро приостанавливает задачу, оно должно сохранить контекст задачи, а
при ее восстановлении — восстановить. Процесс сохранения и восстановления
контекста задачи называется переключением контекста (context switching).
Немаловажным понятием является квант времени работы планировщика (tick)
— это жестко фиксированный отрезок времени, в течение которого
планировщик не вмешивается в выполнение задачи. По истечении кванта
времени планировщик получает возможность приостановить текущую задачу и
возобновить следующую, готовую к выполнению. Далее квант времени работы
планировщика будет называться системным квантом. Для отсчета системных
квантов в МК обычно используется прерывание от таймера/счетчика.
Системный квант используется как единица измерения интервалов времени
средствами ОСРВ.
93
Рисунок 51 – Переключение между задачами без переключения контекста
Подводя итог, можно выделить три основные функции ядра любой ОСРВ:
94
1. Работа планировщика, благодаря которой создается эффект
параллельного выполнения нескольких задач за счет быстрого
переключения между ними.
2. Переключение контекста, благодаря которому выполнение одной
задачи не сказывается на остальных задачах (задачи работают
независимо).
3. Временная база, основанная на системном кванте как единице
измерения времени.
Задачи
96
времени, однако, в отличие от блокированного состояния, переход в
приостановленное состояние и выход из него осуществляется в явном виде
вызовом API-функций vTaskSuspend() и xTaskResume(). Тайм-аут для
приостановленного состояния не предусмотрен, и задача может оставаться
приостановленной сколь угодно долго.
В любой программе реального времени есть как менее, так и более
ответственные задачи. Под «ответственностью» задачи здесь понимается время
реакции программы на внешнее событие, которое обрабатывается задачей.
Например, ко времени реакции на срабатывание датчика в производственной
установке предъявляются куда более строгие требования, чем ко времени
реакции на нажатие клавиши на клавиатуре. Для обеспечения преимущества на
выполнение более ответственных задач во FreeRTOS применяется механизм
приоритетов задач (Task priorities). Среди всех задач, находящихся в состоянии
готовности, планировщик отдаст управление той задаче, которая имеет
наивысший приоритет. Задача будет выполняться до тех пор, пока она не будет
блокирована или приостановлена или пока не появится готовая к выполнению
задача с более высоким приоритетом.
97