01. C/C++ Типы данных, переменные
C/C++ Типы данных, переменные Для того чтобы программировать — нам надо уметь создавать и оперировать с числами. В языках программирования C и C++ для этого существуют некие контейнеры/оболочки предоставляющие доступ к наиболее удобным типам данных: bool: логический тип. Может принимать одну из двух значений true (истина) и false (ложь). Размер занимаемой памяти для этого типа точно не определен. […]
00. Введение C/C++
Небольшое введение и описание языков C и C++ Впервые с языком C++ я познакомился в году 2016, но по ряду причин не использовал его Мне более интересно программирование м/к и подход c++ с высокой абстракцией от железа и зачастую «решение проблем более мощным железом» меня малость омрачал… Также из программистов с которыми я знаком «высокоуровневые […]
Распаковка CC1350 LaunchPad
Давно хотел заняться микроконтроллерами с субгигагерцовыми приемо-передатчиками. Долго душила жаба, но в итоге заказал и купил на TI.com отладочную плата (launchpad) LAUNCHXL-CC1350US за 29$ + около 7$ за доставку. В чем плюс этой платы — на борту распаян контроллер + антенны + программатор, т.е. плата является аналогом discovery от STMicroelectronics. Почему именно CC1350 — хотел […]
18. ESP8266 AP (точка доступа) RTOS
Код для создания точки доступа будет делаться на основе кода для станции, опишем изменения: В файле user_config.h добавим дефайны //—————————————————— #define WiFi_Client_SSID «SSID1» #define WiFi_Client_Password «123456789» #define WIFI_AP_SSID «SSID1» #define WIFI_AP_PASSWORD «123456789» #define WIFI_AP_IP «192.168.0.1» //ip #define WIFI_AP_GW «192.168.0.1» //gateway — шлюз #define WIFI_AP_NETMASK «255.255.255.0» //маска подсети //пул адресов #define WIFI_AP_IP_CLIENT_START «192.168.0.100» #define WIFI_AP_IP_CLIENT_END «192.168.0.105» […]
17. ESP8266 STA (станция) RTOS
Для реализации режима станции создадим 2 файла wifi.c и wifi.h Внутри файла wifi.h добавим: #ifndef MAIN_H_ #define MAIN_H_ //———————————————— #include «esp_common.h» #include «freertos/FreeRTOS.h» #include «freertos/task.h» #include «freertos/queue.h» #include «uart.h» #include «gpio.h» #include «wifi.h» //———————————————— WIFI_MODE ICACHE_FLASH_ATTR init_esp_wifi(); bool ICACHE_FLASH_ATTR start_wifi_station(const char * ssid, const char * pass); //———————————————— //#include «esp_system.h» //———————————————— #endif /* MAIN_H_ */ […]
16. Uart (Receive) FreeRTOS
В операционной системе FreeRTOS необходимо в прерывании создать специальную очередь, в нее передать данные и уже в определенной задаче эти данные «забирать из очереди». После #incude xQueueHandle xQueueUart; //создаем указатель на очередь Далее пишем: Функция «прерывания» по uart0 LOCAL void uart0_rx_intr_handler(void *para) { uint8 fifo_len = 0; //переменная — длина буфера uint8 buf_idx = 0; […]
Усиление полигонов и экранировка
Усиление полигонов и экранировка: Наиболее интересной возможностью в Altium Designer на мой взгляд является возможность автоматического создания переходных отверстий (усиление полигона и/или экранировка ВЧ цепей) и добавление в правила отдельных директив по заливке этих переходных отверстий. Чтобы создать усиление (Stitching) или экранировку (Shielding) необходимо: для усиления полигона: инструменты->VIA stitching/shielding->Add Stitching to Net для экранировки: инструменты->VIA […]
4. Стек в ОСРВ FreeRTOS
Описание организации стека в осрв.
6. Прерывания в FreeRTOS
Рассмотрим механизм прерываний в FreeRTOS
5. Мьютексы, семафоры, очереди
Рассмотрим механизмы, позволяющие упорядочить взаимодействие между задачами: Мьютексы, семафоры, очереди