- •Содержание
- •Понятие вычислительной системы
- •Организация микроконтроллерных систем управления
- •Микроконтроллеры. Основные сведения
- •Интерфейсы связи с датчиками Сигнальные интерфейсы и цифровые интерфейсы
- •Прием импульсно-дискретных сигналов
- •Демодуляция квадратурно-модулированного сигнала
- •Прием аналоговых сигналов
- •Схемотехника ацп
- •Ацп последовательного счета
- •Ацп последовательного приближения
- •Расширение разрядности. Метод передискретизации
- •Стандартные интерфейсы связи Интерфейсы связи
- •Топологии сетей
- •Последовательный интерфейс i2с
- •Состояние старт и стоп
- •Подтверждение
- •Адресация в шине i2c
- •Преимущества
- •Последовательный интерфейс spi Введение
- •Электрическое подключение
- •Протокол передачи
- •Cравнение с шиной i2c
- •Последовательный интерфейс rs-232
- •Can интерфейс
- •Описание стандарта
- •Контроль ошибок
- •Скорость передачи и длина сети
- •Методы выявления и устранения ошибок данных при передаче
- •Блоковые коды
- •Свёрточные коды
- •Коды обнаружения Циклический избыточный код (crc)
- •Бит чётности
- •Формализованный алгоритм расчёта crc16
- •Корректирующие коды
- •Каскадное кодирование. Итеративное декодирование
- •Выбор кода
- •Некоторые методы (алгоритмы) обработки сигналов
- •Калибровка сигнала
- •Компенсация сигнала
- •Табличные вычисления и тарировочные таблицы Табличные вычисления
- •Тарировочные таблицы
- •Коррекция нуля, обнуление
- •Фильтрация
- •Разностное уравнение дискретного фильтра
- •Рекурсивные (бих) и нерекурсивные (ких) фильтры
- •Устойчивость
- •Зависимости частотных свойств звеньев системы регулирования
- •Регуляторы
- •Регулятор типа п – пропорциональный
- •Регулятор типа пи – пропорционально-интегральный
- •Регулятор типа пид – пропорционально-интегрально-дифференциальный
- •Реализация регуляторов
- •Примерная реализация ядра регулятора на языке Си
- •Выбор длительности такта
- •Вычисления с плавающей и фиксированной точкой
- •Основы технологии разработки программного обеспечения Структура программы на языке Си
- •Компиляция программы
- •Директивы препроцессора
- •Присоединение файла
- •Макросы
- •Условная компиляция
- •Типы переменных
- •Математические операторы
- •Операторы цикла
- •Условный оператор
- •Оператор выбора
Основы технологии разработки программного обеспечения Структура программы на языке Си
#include <stdio.h> //подключение стандартного заголовочного файла
#include “my_lib.h” //подключение локального заголовочного файла
#define a 500 // - это команда препроцессора
int global_i = 0xA9; //формат записи 16тиричных чисел
float Global_i = 0.635;
/* ВАЖНО!
Синтаксис языка Си чувствителен к регистру букв,
т.е. а и А – две разные переменные!
*/
int Func1(void)
{
int local_i;
return local_i;
};
int main(void) // по сути main обычная функция
{
int fahr, celsius;
int lower, upper, step;
lower = 0; /* нижняя граница таблицы температур */ ,
upper = 300; /* верхняя граница */
step = 20; /* шаг */
fahr = lower;
while (fahr <= upper) {
Celsius = 5 * (fahr-32) / 9;
printf ("%d\t%d\n", fahr, celsius);
fahr = fahr + step;
};
return 0; // ExitCode. 0 – все хорошо, 1 – ошибка общего вида
}
Компиляция программы
Исходный текст > Работа препроцессор > Преобразованный исходный текст > Работа компилятора > Объектный файл (машинные коды) > Работа линковщика > Исполняемый файл (устанавливаются адреса вызова библиотечных процедур)
Директивы препроцессора
#define #include - препроцессорными директивами
препроцессор — это компьютерная программа, принимающая данные на входе, и выдающая данные, предназначенные для входа другой программы, например, такой как компилятор
Лексическими препроцессорами называют низкоуровневые препроцессоры, потому что они требуют только лексического анализа, то есть они обрабатывают только исходный текст перед парсингом, выполняя простую замену лексем и специальных символов заданными последовательностями символов, в соответствии с правилами, установленными пользователями. Обычно они выполняют замену макросов, текстовые вставки из других файлов, а также условную компиляцию или подключение файлов.
Наиболее широкое распространение среди лексических препроцессоров получил препроцессор языка Си, используемый в языках программирования Си и его потомка, C++. Этот препроцессор обспечивает использование стандартного набора возможностей:
Замена триграфов ?=, ??(, ??) символами #,[,]
Замена комментариев пустыми строками
Включение файла — #include
Макро-подстановки — #define
Условная компиляция — #if, #ifdef, #ifndef, #else, #endif
Важной областью применения препроцессоров С является условная компиляция. При подготовке программы к компиляции разработчик может с помощью нескольких изменений адаптировать программу к текущей ситуации (например, к определенной модели процессора).
Присоединение файла
#include - директива, которая полностью копируют содержимое указанного файла в файл, в котором указана эта директива, в месте вызова директивы. Эти файлы обычно (хотя скорее, всегда) содержат определение интерфейса для различных функций библиотек и типов данных, которые должны быть подключены перед их использованием; таким образом, директива #include обычно указывается в начале (заголовке) файла. По этой причине подключаемые файлы и называются заголовочными.
Макросы
#define - Макросы в языке Си преимущественно используются для определения небольших фрагментов кода. Во время обработки кода препроцессором, каждый макрос заменяется соответствующим ему определением. Если макрос имеет параметры, то они указываются в теле макроса; таким образом, макросы языка Си могут походить на Си-функции. Распространенная причина использования — избежание накладных расходов при вызове функции в простейших случаях, когда небольшого кода, вызываемого функцией, достаточно для ощутимого снижения производительности.