Содержание
- 2. Микроконтроллер Микросхема, содержащая в себе функционально законченный компьютер – с ядром (процессором), памятью и периферийными устройствами.
- 3. Для обработки информации и принятия решений, необходимо: Превратить входную информацию в данные, пригодные для хранения в
- 4. Программа Алгоритм Типы и структуры данных Интерфейс с внешним миром
- 5. Элементы алгоритмов Следование. Последовательность действий, выполняющихся друг за другом. Условие. Точка принятия решения, после которой выполнение
- 6. Числа Двоичная система используется для хранения чисел в памяти компьютера, для их обработки в процессоре и,
- 7. Числа Размер ячеек памяти как правило кратен восьми двоичным разрядам (восьми битам): Зачастую удобнее использовать шестнадцатеричную
- 8. Взаимодействие вычислительной системы с внешним миром Устройства ввода: Кнопки, клавиши, переключатели, энкодеры; Датчики; Источники потоковых данных
- 9. Взаимодействие вычислительной системы с внешним миром Все внешние устройства, как правило, представлены для ядра в виде
- 10. Параллельный вывод Память Ячейка (регистр) PORT_DATA Выводы микросхемы микроконтроллера Ядро D0 D7 Запись числа в ячейку
- 11. Параллельный ввод Память Ячейка (регистр) PORT_DATA Выводы микросхемы микроконтроллера Ядро D0 D7 Чтение числа из ячейки
- 12. Последовательный ввод/вывод Память Регистр данных SERIAL_DATA Сдвиговый регистр Ядро RX Опрос готовности Регистр состояния SERIAL_STATE Чтение/запись
- 13. Потоковый вывод Память Массив видеопамяти Дисплей Ядро
- 14. Язык Си Программа на языке Си представляет собой набор текстовых файлов (в простейшем случае – один
- 15. Переменные Переменная – это область в памяти компьютера, которая имеет имя и хранит некоторое значение. Значение
- 16. Объявление переменных Объявление переменной – это описание переменной, которая в дальнейшем будет использоваться в программе. Переменная
- 17. Объявление переменной Синтаксис оператора объявления: имя_типа имя_переменной; Тип переменной определяет, какие данные в ней хранятся В
- 18. Типы переменных Тип переменной (и вообще тип любых данных) – указание компилятору на то, сколько памяти
- 19. Типы скалярных переменных Слова «unsigned» / «signed» можно не указывать, однако в этом случае результирующий тип
- 20. Функция получения размера переменной В языке Си есть специальная встроенная функция sizeof(), которая может посчитать размер
- 21. Константы Запись чисел (числовых констант) в Си: 255 // десятичное число 0xFF // шестнадцатеричное число ’x’
- 22. Оператор присваивания Присваивание – это запись значения в переменную Result = 1; Average = (a +
- 23. Переменные – регистры управления Все периферийные устройства микроконтроллера управляются при помощи набора регистров, находящихся в общем
- 24. Переменные – регистры управления Например, в микроконтроллере LPC2368 состояние порта ввода-вывода управляется регистрами FIOnPIN, где n
- 25. Выражения в языке C Везде, где согласно правилу написания того или иного оператора требуется присутствие того
- 26. Арифметические операции
- 27. Сложные типы данных Сложные типы состоят из нескольких простых (скалярных) типов. Сложные типы в Си –
- 28. Массивы Массив или вектор – переменная, хранящая ряд значений одного типа t0, t1, t2, …, tN
- 29. Массивы Массив объявляется так же, как и простая (скалярная) переменная, однако после имени в квадратных скобках
- 30. Работа с элементами массивов Для доступа к элементу массива в квадратных скобках после имени указывают номер
- 31. Работа с элементами массивов Для того, чтобы посчитать количество элементов массива, можно воспользоваться функцией sizeof(), разделив
- 32. Строки символов Строка символов в языке Си считается массивом из 8-разрядных чисел (значений типа char). [На
- 33. Строковые функции
- 34. Строки символов Так как в конце строки стоит признак конца строки (символ с кодом 0), то
- 35. Структуры Язык Си позволяет объединять переменные разных типов в структуры: struct Point { signed short x;
- 36. Структуры Для объявления переменной типа структуры пишут ключевое слово struct, затем имя структуры, а затем имя
- 37. Расположение структур в памяти Элементы структуры хранятся последовательно, друг за другом, но с учетом выравнивания по
- 38. Структуры с битовыми полями Для доступа к отдельным битам и просто для экономии памяти можно указать
- 39. Объединения Объединения – это способ описать одну и ту же область памяти по разному. Объединение занимает
- 40. Объединения Объединения удобно использовать для работы с пакетами данных. struct Message_str { unsigned char Header unsigned
- 41. Операции доступа к данным
- 42. Указатели Указатели – это переменные, хранящие адреса других переменных (то есть адреса ячеек в памяти).
- 43. Указатели Указатель – это переменная, которая хранит адрес ячейки памяти. Память 10 0000 1256 char a
- 44. Объявление переменных-указателей При объявлении обычно задают тип данных, на которые будет указывать переменная: имя_типа* имя_переменной; Например:
- 45. Операции с указателями Для доступа к содержимому ячейки, на которую указывает указатель, перед именем переменной-указателя пишут
- 46. Операции с указателями Для доступа к полю структуры, на которую указывает указатель, между именем переменной-указателя именем
- 47. Операции с указателями Указатели используют для работы с массивами и буферами. // поиск максимального числа в
- 48. Операции с указателями После имени переменной-указателя можно поставить квадратные скобки с индексом и работать с указателем
- 49. Указатель на физическую ячейку Можно объявить указатель, указывающий на ячейку с заданным адресом. Делается это при
- 50. Указатель на неопределённый тип В ряде случаев бывает нужна переменная, которая просто хранит адрес ячейки, без
- 51. Функции работы с памятью Библиотека string.h, помимо функций работы со строками, содержит средства для работы с
- 52. Управление битами При управлении внешними устройствами, входящими в состав микроконтроллеров, часто встает задача управления отдельными битами
- 53. Битовые операции
- 55. Блоки операторов в Си Это способ описания действий
- 56. Блок операторов Операторы могут быть сгруппированы в блоки или составные операторы: { (последовательность операторов) } Блок
- 57. Функции Функция – основная единица программы в языке Си. В функциях описываются действия, которые должна выполнять
- 58. Функции Функция определяется следующим образом: тип_функции имя_функции (список_параметров) { тело_функции } Имя типа, стоящее перед именем
- 59. Функции Функция может получать параметры и возвращать значения: double GetAverage(double a, double b) { double result
- 60. Функции Если функция не возвращает ничего, вместо типа пишут «void»: void BlinkLED (unsigned char period) {
- 61. Объявление переменных и область видимости Язык Си позволяет объявлять переменные в любом месте файла с исходным
- 62. Непосредственно перед компиляцией текст программы обрабатывается специальным текстовым процессором – т.н. «препроцессором». Препроцессор
- 63. Препроцессор Непосредственно перед компиляцией текст программы обрабатывается специальным текстовым процессором – «препроцессором». Любая строка, начинающееся с
- 64. Препроцессор Типичный пример использования макросов (макроподстановок) – замена константы на символическое имя: #define PI 3.14 Если
- 65. Препроцессор Пример. В программе необходимо в разных местах мигать лампочкой 12 раз. Тогда в начале текста
- 66. Препроцессор #include #include “Project_Def.h” int main() { // текст программы } Команды #include “имя_файла” или #include
- 67. Заголовочные файлы #include “prj_def.h” void flash_lamp() { int i; for (i = 0; i { switch_lamp_on();
- 68. #include “motor.h” void door_mng(void) { switch(door_status) { case OPEN: motor_control(M_MOVE_CCW); break; case CLOSE: motor_control(M_MOVE_CW); break; case
- 69. #include “prj_def.h” char system_state; void main(void) { system_state = SS_START; system_init(); ... if (sensor_ready()) system_state =
- 70. Взаимодействие между модулями (файлами) ПО Обмен данными между разными файлами проекта происходит при помощи: Глобальных переменных
- 71. Взаимодействие между модулями (файлами) ПО static char system_state; void main(void) { ... } char get_system_state(void) {
- 72. Перечисления (перечислимый тип) Используется, если переменная может принимать строго определённый (перечислимый) набор значений.
- 73. Перечисления Язык Си позволяет ограничить набор возможных значений переменной и назвать каждое из них: enum Motor_cmd
- 74. Перечисления Для объявления переменной перечисляемого типа пишут ключевое слово enum, затем имя типа и имя переменной:
- 75. Приёмы программирования встроенных систем При написании ПО для микроконтроллеров используют ряд стандартных решений
- 76. Приемы программирования встроенных систем Нисходящее и восходящее программирование: правильное проектирование набора функций Повсеместное использование машин состояний
- 77. Проектирование набора функций Функции управления в программе могут встречаться в трех разных местах: Функции главного цикла
- 78. Функции главного цикла Функции главного цикла вызываются из главного бесконечного цикла программы. Частота вызова – максимально
- 79. Функции периодических действий Функции периодических действий вызываются либо из прерывания от таймера либо из главного цикла
- 80. Функции обработки событий Функция обработки событий вызываются либо из прерывания от устройства либо из главного цикла
- 81. Проектирование набора функций Кроме функций управления в программе должны присутствовать и иные функции – функции вычислений
- 82. Задачи программирования встроенных систем Управление устройством (объектом) Взаимодействие с пользователем Регулирование Обмен данными: С внешними устройствами
- 83. Машина состояний В основе программирования систем управления лежит прием, называемый программирование машины состояний. Машина состояний –
- 84. Пример задачи с машиной состояний Рассмотрим задачу управления автоматическими дверьми (например, воротами гаража и т.п.) Есть
- 85. Пример задачи с машиной состояний Управление осуществляется с помощью всего одной кнопки, которая открывает закрытую дверь,
- 86. Пример задачи с машиной состояний Построим граф переходов для нашей задачи CLOSED OPENING OPEN CLOSING Нажата
- 87. Пример задачи с машиной состояний while (1) // все происходит { // в бесконечном цикле switch
- 88. Именование состояний Для того, чтобы наш пример с программой управления воротами скомпилировался, необходимо описать все символические
- 89. Именование состояний Описать символические имена можно и с помощью перечислимого типа: // состояния системы enum Gate_State
- 90. Сокращенное объявление сложных типов в Си Чтобы каждый раз не писать «struct» или «enum» при объявлении
- 91. Сокращенное объявление сложных типов в Си // состояния системы typedef enum { CLOSED, OPENING, OPEN, CLOSING
- 92. Переменные-флаги Вырожденным случаем машины состояний является система с двумя состояниями. Переменная, которая описывает такую систему, называется
- 93. Переменные-флаги Пример: модуль интерфейса термостата. Устанавливает флаг «новая температура», когда пользователь заканчивает выбор нового значения температуры.
- 94. Пример с интерфейсом пользователя: управляемый светофор В программе, как правило, присутствуют несколько машин состояний, так как
- 95. Машина состояний светофора GREEN BLINKING_GREEN YELLOW RED ? YELLOW_GREEN Gt секунд 5 секунд 3 секунды Rt
- 96. Машина состояний пульта Помимо основной машины состояний, в нашем устройстве будет еще одна машина, отвечающая за
- 97. Машина состояний пульта MAIN EDIT_GREEN EDIT_RED Кнопка «Время З» 10 секунд после отпускания «⇧» или «⇩»
- 98. Использование переменных-таймеров Для нашего светофора нужно выдерживать (измерять) много разных временных интервалов. «Простой» подход – для
- 99. Использование переменных-таймеров У «простого» подхода два недостатка: Плодятся глобальные переменные, причем модуль таймера должен «знать» о
- 100. Использование переменных-таймеров unsigned int Clock_Counter = 0; void Timer0AIntHandler(void) { TIMER0_ICR_R = TIMER_ICR_TATOCINT; Clock_Counter++; } void
- 101. Задачи взаимодействия устройств Взаимодействие сводится к обмену данными между устройствами при помощи цифровых интерфейсов В результате
- 102. Взаимодействие устройств ПК Устройство Команды Ответы Периферийное оборудование
- 103. Функции коммуникационного ПО Функции приема и передачи данных через интерфейсные устройства Функции разбора принятых пакетов данных
- 104. Функции коммуникационного ПО Функция приема пакета Приемный буфер Функция разбора пакета Основное ПО Функция отправки пакета
- 105. Прием пакета Основная задача – синхронизация между медленными интерфейсами, редкими, асинхронными событиями приёма и быстрым ядром.
- 106. Прием пакета Опрос бита готовности: в каждом устройстве (контроллеры SPI, UART, I2C,...) есть регистр статуса, в
- 107. Прием пакета Прерывание: событие приёма байта вызывает прерывание ядра. Данные читаются из устройства в функции обработки
- 108. Прием пакета #define PACKET_LEN 6 unsigned int rx_counter = PACKET_LEN; unsigned char rx_buffer[PACKET_LEN]; void rx_mng(void) {
- 109. Двойная буферизация Функция приема пакета Приёмный буфер 1 Функция разбора пакета Интерфейс Приёмный буфер 2 Флаг
- 110. Двойная буферизация #define PACKET_LEN 6 unsigned int rx_counter = 0; unsigned char rx_buffer1[PACKET_LEN]; unsigned char rx_buffer2[PACKET_LEN];
- 111. Отправка пакета Основная задача, которая здесь решается – синхронизация быстрого ядра и медленного интерфейса: данные отправляются
- 112. Отправка пакета #define PACKET_LEN 6 unsigned int tx_counter = PACKET_LEN; unsigned char tx_buffer[PACKET_LEN]; void tx_mng(void) {
- 113. Взаимодействие систем
- 114. Взаимодействие систем
- 115. Взаимодействие систем
- 116. Упрощенный стек протоколов В простых системах часть уровней «сливаются» друг с другом.
- 117. Упрощенный стек протоколов Пример:
- 118. Задачи, решаемые на разных уровнях стека Прикладной уровень: Поддержка основной функциональности устройства (команды, ответы на них,
- 119. Задачи, решаемые на разных уровнях стека: прикладной уровень Как правило, программно реализуется при помощи структур и
- 120. Задачи, решаемые на разных уровнях стека: прикладной уровень Как правило, программно реализуется при помощи структур и
- 121. Задачи, решаемые на разных уровнях стека: уровень сессии Уровень сессии как самостоятельная сущность реализуется только если
- 122. Задачи, решаемые на разных уровнях стека: транспортный уровень Синхронизация источника и приемника: В начало пакета добавляется
- 123. Задачи, решаемые на разных уровнях стека: транспортный уровень В итоге транспортный пакет может выглядеть так: Или
- 124. Реализация протокола
- 125. Реализация протокола RX_HEADER RX_ADDR RX_LEN RX_DATA RX_CSUM Правильный заголовок Наш адрес Правильная длина Все данные получены
- 127. Скачать презентацию




























































































































Кинозал Рассвет Ичалковский район
Мастер SMM. Оповещения о событиях с помощью Автопилота
Тест. Представление информации
Безопасный интернет
Правила создания дизайна баннеров
Функции работы со строками в MS SQL SERVER
Мастер класс. Файл. Файловая система
Алгоритм Перевозчик
Кроссворд в ms excel
Программные продукты, используемые в стоимостной оценке
Основы медиаобразования
Презентация на тему Измерение количества информации
Основные устройства персонального компьютера
Лабораторная работа
Презентация на тему Операционная система Линукс и её приложения
История развития электронновычислительной техники
Цветовая модель
Процедура загрузки документов KYC
Как работает Маркетплейс
Разработка информационного портала для поддержки творческих идей молодёжи
Кодирование информации. Двоичное кодирование информации
Системы счисления
Безопасный интернет
Аппаратная реализация компьютера
Движение манипулятора. Программа автоматического управления манипулятором
Алгоритм получения доступа к Электронному дневнику
Социальная сеть как основа современной социальной структуры
Работа с документами в Microsoft Exel