{"id":326552,"date":"2021-07-16T15:00:47","date_gmt":"2021-07-16T15:00:47","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=326552"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=326552","title":{"rendered":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u043d\u0430 ESP32"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42c\/6e6\/db5\/42c6e6db5fc03909b505a273156c7d61.jpg\" alt=\"\" title=\"\" width=\"2000\" height=\"500\"><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0420\u0430\u043d\u0435\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/521572\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b<\/a> \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0418\u0420\u0418\u0421. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b <a href=\"http:\/\/new.i-mt.su\/iris-o\/\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438<\/a> \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u00ab\u041f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c: \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0436\u0435 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00bb. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0444\u0440\u0430\u0437\u0430 \u00ab\u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 ESP32, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c 2 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u0431\u043e\u0440\u0435\u00bb. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d5d\/4e6\/80c\/d5d4e680c565e6fe1a1f8ed2808bb58d.png\" alt=\"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\" title=\"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\" width=\"1028\" height=\"963\"><figcaption>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/figcaption><\/figure>\n<h3>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a<\/h3>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u0440\u0438\u0431\u043e\u0440\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<\/td>\n<td>\n<p>\u0418\u0440\u0438\u0441 v1<\/p>\n<p>3\u0445 \u0444\u0430\u0437\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p>\u0418\u0440\u0438\u0441 v2 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<\/td>\n<td>\n<p>STM32H7 + ESP32<\/p>\n<\/td>\n<td>\n<p>ESP32<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u043b\u0435\u0448 (\u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b)<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>QSPI flash<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>I2C EEPROM<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0410\u0426\u041f<\/p>\n<\/td>\n<td>\n<p>\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 stm32<\/p>\n<\/td>\n<td>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u0432 (\u043c\u043e\u0434\u0443\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438   \u0432\u0445\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, ethernet IEC 60870-104 \/   61850MMS)<\/p>\n<\/td>\n<td>\n<p>-(*)<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0433<\/p>\n<\/td>\n<td>\n<p>&nbsp;<\/p>\n<\/td>\n<td>\n<p>\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/p>\n<\/td>\n<td>\n<p>\u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p>FreeRTOS<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>* \u0412 \u043f\u043b\u0430\u043d\u0430\u0445 \u0432\u044b\u043f\u0443\u0441\u043a \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u0432<\/em><\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/61d\/3a6\/195\/61d3a61956af52a573b47e5a4c7dff49.png\" alt=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430\" title=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430\" width=\"1427\" height=\"805\"><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b32\/e55\/95e\/b32e5595e91828d2bd2d1d33f4975b75.png\" alt=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430\" title=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430\" width=\"1920\" height=\"1080\"><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430<\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442.\u043a. \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<li>\n<p> \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e, \u0442.\u043a. \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<\/p>\n<\/li>\n<\/ul>\n<p> \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u0410\u0426\u041f<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0414\u041f\u0424, \u0421\u041a\u0417, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0438 \u0442.\u0434.)<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u0435\u043d\u044e (7 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443)<\/p>\n<p>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444<\/p>\n<p>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u043e\u0434\u0431\u0430\u0441 (RS485)<\/p>\n<p>6)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u043e\u0434\u0431\u0430\u0441 (BT)<\/p>\n<p>7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430<\/p>\n<p>8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u2026&nbsp;<\/p>\n<h3>\u0421\u0430\u043c\u043e\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430<\/h3>\n<p>\u0412 \u043f\u0440\u0438\u0431\u043e\u0440\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u0430\u043c\u043e\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u0442 \u0410\u0426\u041f<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043d\u043e<\/p>\n<p>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0417\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c (\u043a\u0443\u0447\u0430 \u0438\u043b\u0438 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430)<\/p>\n<p>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430\u043d\u0430\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 assert())<\/p>\n<p>\u0414\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0435\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 FreeRTOS \u0432\u044b\u0431\u0440\u0430\u0442\u044c: CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y<\/p>\n<p>\u041a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">static uint32_t s_taskFreeStack[TASK_COUNT]; static uint32_t s_minFreeHeap; static uint32_t s_internalErrLine;  void diag_setInternalErr(uint32_t lineNum) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_internalErrLine = lineNum; }  void diag_setStackUsage(uint32_t taskIdx, uint32_t freeStack) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (taskIdx &lt; TASK_COUNT) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_taskFreeStack[taskIdx] &gt; freeStack) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_taskFreeStack[taskIdx] = freeStack; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (freeStack &lt; MIN_FREE_STACK_THRESHOLD) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setError(ERR_FREE_STACK_ERROR, true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_dbg_printf(\"task %u freeStack %u\", taskIdx, freeStack); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint32_t minFreeHeap = xPortGetMinimumEverFreeHeapSize(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_minFreeHeap &gt; minFreeHeap) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_minFreeHeap = minFreeHeap; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_minFreeHeap &lt; MIN_FREE_HEAP_THRESHOLD) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setError(ERR_FREE_HEAP_ERROR, true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_dbg_printf(\"minFreeHeap %u\", s_minFreeHeap); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } }  \/\/... \/\/ \u0432\u044b\u0437\u043e\u0432 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0442\u043e\u043a\u0430 void task_func(void *arg) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(\/*..*\/){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: \/*..*\/ break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: \/*..*\/ break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setInternallErr(__LINE__); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setStackUsage(NINJA_TASK_DIAG, uxTaskGetStackHighWaterMark(NULL)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } }<\/code><\/pre>\n<h3>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 ESP32<\/h3>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 STM32 \u0432 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 ESP32-wroom32 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0444\u043b\u0435\u0448, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u043b\u0435\u0442\u0443 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 qspi \u0444\u043b\u0435\u0448. \u041e\u0442\u0441\u044e\u0434\u0430 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u0430 \u0447\u0438\u043f\u0430, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u0432\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c \u043a\u043e\u0434 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u041e\u0417\u0423, \u0442.\u043a. \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u0439 qspi \u0444\u043b\u0435\u0448 \u00ab\u0434\u043e\u0440\u043e\u0433\u043e\u0439\u00bb \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u043b\u0435\u0442\u0430\u0442\u044c \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<p>Guru Meditation Error: Core&nbsp; 0 panic&#8217;ed (Cache disabled but cached memory region accessed)<\/p>\n<p>Core 0 register dump:<\/p>\n<p>PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x400ddf74&nbsp; PS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00060034&nbsp; A0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x40082ac0&nbsp; A1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffbe320&nbsp; <\/p>\n<p>A2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000002&nbsp; A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x4008e788&nbsp; <\/p>\n<p>A6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x13020248&nbsp; A8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x80082eed&nbsp; A9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffbe300&nbsp; <\/p>\n<p>A10&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000001&nbsp; A11&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A12&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2cc&nbsp; A13&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2cc&nbsp; <\/p>\n<p>A14&nbsp;&nbsp;&nbsp;&nbsp; : 0x00843004&nbsp; A15&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2c8&nbsp; SAR&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000020&nbsp; EXCCAUSE: 0x00000007&nbsp; <\/p>\n<p>EXCVADDR: 0x00000000&nbsp; LBEG&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; LEND&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; LCOUNT&nbsp; : 0x00000000&nbsp; <\/p>\n<p>Core 0 was running in ISR context:<\/p>\n<p>EPC1&nbsp;&nbsp;&nbsp; : 0x40088321&nbsp; EPC2&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; EPC3&nbsp;&nbsp;&nbsp; : 0x40081be0&nbsp; EPC4&nbsp;&nbsp;&nbsp; : 0x400ddf74<\/p>\n<p>&nbsp;<\/p>\n<p>ELF file SHA256: 1a7ec99b2c553435<\/p>\n<p>&nbsp;<\/p>\n<p>Backtrace: 0x400ddf71:0x3ffbe320 0x40082abd:0x3ffbe340 0x4008831e:0x3ffb7db0 0x40082099:0x3ffb7dd0 0x4008e55d:0x3ffb7df0<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n<p>xtensa-esp32-elf-addr2line -e &lt;build_file_name&gt;.elf -a 0x400ddf71:0x3ffbe320 0x40082abd:0x3ffbe340 0x4008831e:0x3ffb7db0 0x40082099:0x3ffb7dd0 0x4008e55d:0x3ffb7df0<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GPIO \u0438\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e gpio_set_level(gpio_num_t gpio_num, uint32_t level), \u043d\u043e \u043e\u043d\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c IRAM_ATTR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432 \u041e\u0417\u0423. \u041f\u043e\u043a\u0430 \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u043c\u0430\u043b\u043e, \u043e\u043d \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0432 \u043a\u044d\u0448, \u043d\u043e \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">#include \"hal\/gpio_ll.h\" extern gpio_dev_t GPIO; IRAM_ATTR esp_err_t gpio_set_level2(gpio_num_t gpio_num, uint32_t level) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpio_ll_set_level(&amp;GPIO, gpio_num, level); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ESP_OK; }<\/code><\/pre>\n<h3>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0410\u0426\u041f<\/h3>\n<p>\u0421 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u043d\u043e\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c?<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0441 <s>\u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430<\/s> \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0410\u0426\u041f \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430\u0448\u0435\u043b\u0441\u044f \u0432 \u044f\u0434\u0440\u0435 \u043b\u0438\u043d\u0443\u043a\u0441\u0430. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 ESP32.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 esp-idf\\components\\driver\\spi_master.c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u0438 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0410\u0426\u041f \u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (2000 \u0413\u0446). \u041d\u0430\u0448\u043b\u0430\u0441\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f <a href=\"https:\/\/github.com\/loboris\/ESP32_SPI_MASTER_NODMA_EXAMPLE\/blob\/master\/components\/tft\/spi_master_nodma.h\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442.<\/p>\n<h3>\u0420\u044e\u043a\u0437\u0430\u043a\u0438 (\u043c\u043e\u0434\u0443\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0432\u0445\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u0438 Ethernet)<\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e61\/cc1\/bfe\/e61cc1bfe4b7dafaf9ab234cccdccdc6.png\" alt=\"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" title=\"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" width=\"600\" height=\"706\"><figcaption>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043d\u043e\u0433. \u041d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u043d\u043e\u0436\u043a\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430, \u043d\u043e \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a \u043d\u0430\u0448\u0435\u043b \u0432\u044b\u0445\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f\/\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e SPI.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0438\u0437 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0432 \u0440\u044e\u043a\u0437\u0430\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 SPI. \u041f\u0435\u0440\u0432\u0430\u044f \u043c\u044b\u0441\u043b\u044c: \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e\/\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043f\u043b\u044e\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439). <\/p>\n<p>\u0422\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 SPI-\u0446\u0435\u043f\u043e\u0447\u0435\u043a:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0441 \u0431\u0430\u0440\u0433\u0440\u0430\u0444\u043e\u043c \u0438 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0431\u0435\u0437 \u0431\u0430\u0440\u0433\u0440\u0430\u0444\u0430 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0422\u0440\u0435\u0445\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u043d\u0430\u0448\u0435\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u043e\u0449\u0435: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431 \u0434\u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0430 \u043e\u043d\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 (\u0432 1-\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 0, \u0432\u043e 2-\u043e\u043c 2 \u0431\u0430\u0439\u0442\u0430 \u0438 \u0432 3-\u0435\u043c 4 \u0431\u0430\u0439\u0442\u0430).<\/p>\n<h3>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 &#8212; \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 (\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438). \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430.<\/p>\n<p>\u0412 ESP32 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0444\u043b\u0435\u0448 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u00ab\u0441\u043b\u043e\u0442\u043e\u0432\u00bb \u043f\u043e\u0434 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u041f\u041e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0441\u043b\u043e\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432\u0441\u0451 API \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u0430\u043d\u0430\u043b\u0443 (<a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/system\/ota.html\" rel=\"noopener noreferrer nofollow\">OTA <\/a>\u2013 update over the air)<\/p>\n<p>\u0412 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c, \u0435\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430, \u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0442\/\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0439? \u041d\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u043e\u043a\u0438\u0440\u043f\u0438\u0447\u0438\u0442\u0441\u044f\u00bb? \u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u0443\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u043b\u0430\u0433, \u0442\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u043b\u043e\u0442\/\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u0412\u0430\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0434\u043b\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/317\/ffa\/ce3\/317fface3b7ecee2371fb5c48acf4e6a.png\" width=\"1920\" height=\"3052\"><figcaption><\/figcaption><\/figure>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u041f\u041e \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 esp_restart() \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e&nbsp; \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0421\u043e\u0437\u0434\u0430\u043b <a href=\"https:\/\/github.com\/espressif\/esp-idf\/issues\/6481\" rel=\"noopener noreferrer nofollow\">\u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442<\/a>, \u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b , \u043f\u043e\u0437\u0436\u0435 \u043d\u0430\u0448\u0435\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438).<\/p>\n<h3>\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h3>\n<p>\u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 ESP32 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043b\u044e\u0447\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u044c\u044e\u0437\u044b \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u041d\u0430 \u0444\u043b\u0435\u0448 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0435\u0442\u0443.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u043c\u0430\u043b\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u043e\u0437\u0434\u0430\u043b <a href=\"https:\/\/github.com\/espressif\/esp-idf\/issues\/6189\" rel=\"noopener noreferrer nofollow\">\u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442<\/a>. \u041e\u0442\u0432\u0435\u0442\u0430, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0440\u0446\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a esp32 \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0443\u0442\u0438: \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u043b\u043e\u0442\u0430\u0445.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u0443 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u043e \u0431\u0443\u0434\u044c\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u0433\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0442.\u0434. J (\u0441\u043c. \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435).<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>PS: \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0438\u0441\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u043b\u0435\u043d\u0433.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/568066\/\"> https:\/\/habr.com\/ru\/post\/568066\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0420\u0430\u043d\u0435\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/521572\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b<\/a> \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0418\u0420\u0418\u0421. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b <a href=\"http:\/\/new.i-mt.su\/iris-o\/\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438<\/a> \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u00ab\u041f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c: \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0436\u0435 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00bb. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0444\u0440\u0430\u0437\u0430 \u00ab\u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 ESP32, \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u043c 2 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u0431\u043e\u0440\u0435\u00bb. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\"><figcaption>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/figcaption><\/figure>\n<h3>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a<\/h3>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u0440\u0438\u0431\u043e\u0440\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<\/td>\n<td>\n<p>\u0418\u0440\u0438\u0441 v1<\/p>\n<p>3\u0445 \u0444\u0430\u0437\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p>\u0418\u0440\u0438\u0441 v2 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<\/td>\n<td>\n<p>STM32H7 + ESP32<\/p>\n<\/td>\n<td>\n<p>ESP32<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u043b\u0435\u0448 (\u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b)<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>QSPI flash<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>I2C EEPROM<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0410\u0426\u041f<\/p>\n<\/td>\n<td>\n<p>\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 stm32<\/p>\n<\/td>\n<td>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<td>\n<p>&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u0432 (\u043c\u043e\u0434\u0443\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438   \u0432\u0445\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, ethernet IEC 60870-104 \/   61850MMS)<\/p>\n<\/td>\n<td>\n<p>-(*)<\/p>\n<\/td>\n<td>\n<p>+<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0433<\/p>\n<\/td>\n<td>\n<p>&nbsp;<\/p>\n<\/td>\n<td>\n<p>\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"223\" width=\"223\">\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/p>\n<\/td>\n<td>\n<p>\u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p>FreeRTOS<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>* \u0412 \u043f\u043b\u0430\u043d\u0430\u0445 \u0432\u044b\u043f\u0443\u0441\u043a \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u0432<\/em><\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<figure class=\"full-width\"><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 3\u0445 \u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u043e\u0433\u043e \u0418\u0420\u0418\u0421\u0430<\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442.\u043a. \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<li>\n<p> \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e, \u0442.\u043a. \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<\/p>\n<\/li>\n<\/ul>\n<p> \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u0410\u0426\u041f<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0414\u041f\u0424, \u0421\u041a\u0417, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0438 \u0442.\u0434.)<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u0435\u043d\u044e (7 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443)<\/p>\n<p>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444<\/p>\n<p>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u043e\u0434\u0431\u0430\u0441 (RS485)<\/p>\n<p>6)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041c\u043e\u0434\u0431\u0430\u0441 (BT)<\/p>\n<p>7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430<\/p>\n<p>8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u2026&nbsp;<\/p>\n<h3>\u0421\u0430\u043c\u043e\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430<\/h3>\n<p>\u0412 \u043f\u0440\u0438\u0431\u043e\u0440\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u0430\u043c\u043e\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u0442 \u0410\u0426\u041f<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043e\u0442\u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u0430\u043d\u043e<\/p>\n<p>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0417\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c (\u043a\u0443\u0447\u0430 \u0438\u043b\u0438 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430)<\/p>\n<p>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430\u043d\u0430\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 assert())<\/p>\n<p>\u0414\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0442\u0435\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 FreeRTOS \u0432\u044b\u0431\u0440\u0430\u0442\u044c: CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y<\/p>\n<p>\u041a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">static uint32_t s_taskFreeStack[TASK_COUNT]; static uint32_t s_minFreeHeap; static uint32_t s_internalErrLine;  void diag_setInternalErr(uint32_t lineNum) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_internalErrLine = lineNum; }  void diag_setStackUsage(uint32_t taskIdx, uint32_t freeStack) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (taskIdx &lt; TASK_COUNT) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_taskFreeStack[taskIdx] &gt; freeStack) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_taskFreeStack[taskIdx] = freeStack; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (freeStack &lt; MIN_FREE_STACK_THRESHOLD) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setError(ERR_FREE_STACK_ERROR, true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_dbg_printf(\"task %u freeStack %u\", taskIdx, freeStack); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint32_t minFreeHeap = xPortGetMinimumEverFreeHeapSize(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_minFreeHeap &gt; minFreeHeap) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s_minFreeHeap = minFreeHeap; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s_minFreeHeap &lt; MIN_FREE_HEAP_THRESHOLD) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setError(ERR_FREE_HEAP_ERROR, true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_dbg_printf(\"minFreeHeap %u\", s_minFreeHeap); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } }  \/\/... \/\/ \u0432\u044b\u0437\u043e\u0432 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0442\u043e\u043a\u0430 void task_func(void *arg) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(\/*..*\/){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: \/*..*\/ break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: \/*..*\/ break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setInternallErr(__LINE__); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diag_setStackUsage(NINJA_TASK_DIAG, uxTaskGetStackHighWaterMark(NULL)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } }<\/code><\/pre>\n<h3>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 ESP32<\/h3>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 STM32 \u0432 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 ESP32-wroom32 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0444\u043b\u0435\u0448, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u043b\u0435\u0442\u0443 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 qspi \u0444\u043b\u0435\u0448. \u041e\u0442\u0441\u044e\u0434\u0430 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u0430 \u0447\u0438\u043f\u0430, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u0432\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c \u043a\u043e\u0434 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u041e\u0417\u0423, \u0442.\u043a. \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u0439 qspi \u0444\u043b\u0435\u0448 \u00ab\u0434\u043e\u0440\u043e\u0433\u043e\u0439\u00bb \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u043b\u0435\u0442\u0430\u0442\u044c \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<p>Guru Meditation Error: Core&nbsp; 0 panic&#8217;ed (Cache disabled but cached memory region accessed)<\/p>\n<p>Core 0 register dump:<\/p>\n<p>PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x400ddf74&nbsp; PS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00060034&nbsp; A0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x40082ac0&nbsp; A1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffbe320&nbsp; <\/p>\n<p>A2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000002&nbsp; A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x4008e788&nbsp; <\/p>\n<p>A6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x13020248&nbsp; A8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x80082eed&nbsp; A9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffbe300&nbsp; <\/p>\n<p>A10&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000001&nbsp; A11&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; A12&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2cc&nbsp; A13&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2cc&nbsp; <\/p>\n<p>A14&nbsp;&nbsp;&nbsp;&nbsp; : 0x00843004&nbsp; A15&nbsp;&nbsp;&nbsp;&nbsp; : 0x3ffca2c8&nbsp; SAR&nbsp;&nbsp;&nbsp;&nbsp; : 0x00000020&nbsp; EXCCAUSE: 0x00000007&nbsp; <\/p>\n<p>EXCVADDR: 0x00000000&nbsp; LBEG&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; LEND&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; LCOUNT&nbsp; : 0x00000000&nbsp; <\/p>\n<p>Core 0 was running in ISR context:<\/p>\n<p>EPC1&nbsp;&nbsp;&nbsp; : 0x40088321&nbsp; EPC2&nbsp;&nbsp;&nbsp; : 0x00000000&nbsp; EPC3&nbsp;&nbsp;&nbsp; : 0x40081be0&nbsp; EPC4&nbsp;&nbsp;&nbsp; : 0x400ddf74<\/p>\n<p>&nbsp;<\/p>\n<p>ELF file SHA256: 1a7ec99b2c553435<\/p>\n<p>&nbsp;<\/p>\n<p>Backtrace: 0x400ddf71:0x3ffbe320 0x40082abd:0x3ffbe340 0x4008831e:0x3ffb7db0 0x40082099:0x3ffb7dd0 0x4008e55d:0x3ffb7df0<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n<p>xtensa-esp32-elf-addr2line -e &lt;build_file_name&gt;.elf -a 0x400ddf71:0x3ffbe320 0x40082abd:0x3ffbe340 0x4008831e:0x3ffb7db0 0x40082099:0x3ffb7dd0 0x4008e55d:0x3ffb7df0<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GPIO \u0438\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e gpio_set_level(gpio_num_t gpio_num, uint32_t level), \u043d\u043e \u043e\u043d\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c IRAM_ATTR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432 \u041e\u0417\u0423. \u041f\u043e\u043a\u0430 \u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u043c\u0430\u043b\u043e, \u043e\u043d \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0432 \u043a\u044d\u0448, \u043d\u043e \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">#include \"hal\/gpio_ll.h\" extern gpio_dev_t GPIO; IRAM_ATTR esp_err_t gpio_set_level2(gpio_num_t gpio_num, uint32_t level) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpio_ll_set_level(&amp;GPIO, gpio_num, level); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ESP_OK; }<\/code><\/pre>\n<h3>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0410\u0426\u041f<\/h3>\n<p>\u0421 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u043d\u043e\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c?<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0441 <s>\u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430<\/s> \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0410\u0426\u041f \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430\u0448\u0435\u043b\u0441\u044f \u0432 \u044f\u0434\u0440\u0435 \u043b\u0438\u043d\u0443\u043a\u0441\u0430. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 ESP32.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 esp-idf\\components\\driver\\spi_master.c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u0438 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0410\u0426\u041f \u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 (2000 \u0413\u0446). \u041d\u0430\u0448\u043b\u0430\u0441\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f <a href=\"https:\/\/github.com\/loboris\/ESP32_SPI_MASTER_NODMA_EXAMPLE\/blob\/master\/components\/tft\/spi_master_nodma.h\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442.<\/p>\n<h3>\u0420\u044e\u043a\u0437\u0430\u043a\u0438 (\u043c\u043e\u0434\u0443\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0432\u0445\u043e\u0434\u0430\u043c\u0438\/\u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u0438 Ethernet)<\/h3>\n<figure class=\"full-width\"><figcaption>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043d\u043e\u0433. \u041d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u043d\u043e\u0436\u043a\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430, \u043d\u043e \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a \u043d\u0430\u0448\u0435\u043b \u0432\u044b\u0445\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f\/\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e SPI.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0438\u0437 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0432 \u0440\u044e\u043a\u0437\u0430\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 SPI. \u041f\u0435\u0440\u0432\u0430\u044f \u043c\u044b\u0441\u043b\u044c: \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e\/\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043f\u043b\u044e\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439). <\/p>\n<p>\u0422\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 SPI-\u0446\u0435\u043f\u043e\u0447\u0435\u043a:<\/p>\n<p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0441 \u0431\u0430\u0440\u0433\u0440\u0430\u0444\u043e\u043c \u0438 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0431\u0435\u0437 \u0431\u0430\u0440\u0433\u0440\u0430\u0444\u0430 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0422\u0440\u0435\u0445\u0444\u0430\u0437\u043d\u044b\u0439 \u0418\u0420\u0418\u0421 \u0441 \u0440\u044e\u043a\u0437\u0430\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043e\u0432<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u043d\u0430\u0448\u0435\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u043e\u0449\u0435: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431 \u0434\u043e \u0440\u044e\u043a\u0437\u0430\u043a\u0430 \u043e\u043d\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 (\u0432 1-\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 0, \u0432\u043e 2-\u043e\u043c 2 \u0431\u0430\u0439\u0442\u0430 \u0438 \u0432 3-\u0435\u043c 4 \u0431\u0430\u0439\u0442\u0430).<\/p>\n<h3>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 &#8212; \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 (\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438). \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430.<\/p>\n<p>\u0412 ESP32 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0444\u043b\u0435\u0448 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u00ab\u0441\u043b\u043e\u0442\u043e\u0432\u00bb \u043f\u043e\u0434 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u041f\u041e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0441\u043b\u043e\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432\u0441\u0451 API \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u0430\u043d\u0430\u043b\u0443 (<a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/system\/ota.html\" rel=\"noopener noreferrer nofollow\">OTA <\/a>\u2013 update over the air)<\/p>\n<p>\u0412 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u043c, \u0435\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430, \u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0442\/\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0439? \u041d\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u043e\u043a\u0438\u0440\u043f\u0438\u0447\u0438\u0442\u0441\u044f\u00bb? \u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u0443\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u043b\u0430\u0433, \u0442\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u043b\u043e\u0442\/\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u0412\u0430\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0434\u043b\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u041f\u041e \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 esp_restart() \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e&nbsp; \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0421\u043e\u0437\u0434\u0430\u043b <a href=\"https:\/\/github.com\/espressif\/esp-idf\/issues\/6481\" rel=\"noopener noreferrer nofollow\">\u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442<\/a>, \u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b , \u043f\u043e\u0437\u0436\u0435 \u043d\u0430\u0448\u0435\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438).<\/p>\n<h3>\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h3>\n<p>\u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 ESP32 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043b\u044e\u0447\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0444\u044c\u044e\u0437\u044b \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u041d\u0430 \u0444\u043b\u0435\u0448 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0435\u0442\u0443.<\/p>\n<p><strong>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/strong> \u043f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u043c\u0430\u043b\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u043e\u0437\u0434\u0430\u043b <a href=\"https:\/\/github.com\/espressif\/esp-idf\/issues\/6189\" rel=\"noopener noreferrer nofollow\">\u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442<\/a>. \u041e\u0442\u0432\u0435\u0442\u0430, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0440\u0446\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a esp32 \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0443\u0442\u0438: \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u043b\u043e\u0442\u0430\u0445.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0431\u0430\u0433\u0440\u0435\u043f\u043e\u0440\u0442 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u0443 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u043e \u0431\u0443\u0434\u044c\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e<\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-326552","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=326552"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326552\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=326552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=326552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=326552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}