{"id":321926,"date":"2021-04-22T21:00:36","date_gmt":"2021-04-22T21:00:36","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=321926"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=321926","title":{"rendered":"\u0414\u0435\u043b\u0430\u0435\u043c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f PS1"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/510\/d6f\/9c8\/510d6f9c85df5173f1af7d6005862f2c.jpg\"><br \/>  PS1 (\u043e\u043d\u0430 \u0436\u0435 PSX, \u043e\u043d\u0430 \u0436\u0435 PS One) \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 PlayStation \u043e\u0442 Sony \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u044f\u0442\u043e\u043c\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044e \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 2\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u043e\u0434 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f CD. \u0422\u0430\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043c\u0435\u0440\u043a\u0430\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0438\u0433\u0440\u043e\u0434\u0435\u043b\u0430\u043c \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0438\u0433\u0440, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0433\u0440\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a. \u0410 \u0435\u0449\u0451, \u0438\u0433\u0440\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438. \u0418 \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0438\u0433\u0440\u0430 \u0437\u0430 \u0440\u0435\u0434\u043a\u0438\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044f\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0437\u0430 \u043e\u0434\u043d\u0443 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e, \u0442\u043e \u0441 \u0438\u0433\u0440\u0430\u043c\u0438 PS1 \u0432\u0441\u0451 \u043e\u0431\u0441\u0442\u043e\u044f\u043b\u043e \u0438\u043d\u0430\u0447\u0435. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430 \u0443 PlayStation \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438: \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 PlayStation 1, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0418\u0442\u0430\u043a, \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 PS1 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u043a\u0430\u043a \u0438 \u0432\u0435\u0441\u044c \u0437\u043e\u043e\u043f\u0430\u0440\u043a \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u043e\u0432, \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e40\/16e\/ec6\/e4016eec6df5ed53fddabc7bf3be6dd4.jpg\"><br \/>  <i>\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043f\u0435\u0447\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 15 \u0431\u043b\u043e\u043a\u043e\u0432<\/i><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0444\u043e\u0442\u043e, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043a\u0430\u0440\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 NOR FLASH. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 15 \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0433\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e 15 \u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u043e \u0442\u0443\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u0442: \u043e\u0434\u0438\u043d \u0431\u043b\u043e\u043a \u043e\u0442\u0434\u0430\u043d \u043f\u043e\u0434 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043a\u043e\u043d\u043a\u0438, \u043f\u0440\u044f\u043c \u043a\u0430\u043a \u043f\u043e\u0442\u043e\u043a\u0438 \u0443 NTFS. \u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 8 \u041a\u0438\u0411, 16 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432 \u0441\u0443\u043c\u043c\u0435 \u044d\u0442\u043e 128 \u041a\u0438\u0411, \u0447\u0442\u043e \u0438 \u0432\u0438\u0434\u043d\u043e \u043f\u043e \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435 FLASH \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0444\u043e\u0442\u043e \u0432\u044b\u0448\u0435.<\/p>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u043e\u0440\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432\u0441\u0435\u043c, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0437\u0430 \u0440\u0430\u0437. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b, \u0432\u0440\u043e\u0434\u0435 Sega GT, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 4-5 \u0431\u043b\u043e\u043a\u043e\u0432, \u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Constructor\" rel=\"nofollow noopener noreferrer\">Constructor<\/a> \u0442\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u044e \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 15 \u0431\u043b\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u043b\u043e \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u0430\u0440\u0442 \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0433\u0440\u043e\u0437\u0438\u043b\u0430 \u0441\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441 \u0434\u0438\u0441\u043a\u0435\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u0440\u0438\u0434\u0436\u0430\u043c\u0438. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u0438\u0441\u044c \u043f\u0438\u0440\u0430\u0442\u044b \u0438 \u0441\u0442\u0430\u043b\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u044b \u043d\u0430 2, 4 \u0438\u043b\u0438 8 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0440\u0430\u0437\u043e\u043c. \u0418 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043b\u0438\u0431\u043e \u043f\u043e \u0445\u0438\u0442\u0440\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043d\u0430 \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u0435, \u043b\u0438\u0431\u043e \u044f\u0432\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u0440\u0430\u0432\u0434\u0430, \u0432 \u043a\u0430\u0440\u0442\u0430\u0445 \u0431\u043e\u043b\u0435\u0435 2\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0441\u0436\u0430\u0442\u0438\u0435, \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u044b\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0440\u0442\u044b \u043c\u043e\u0433\u043b\u0438 \u0442\u0443\u043f\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0418 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e, \u043d\u043e \u043d\u0430 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0448\u043b\u0438 \u0438\u0433\u0440\u043e\u043a\u0438 \u0440\u0430\u0434\u0438 \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0439. \u0412\u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043a\u0430\u0440\u0442 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6c4\/562\/db1\/6c4562db116fd4d0b26b3b04145389a6.jpg\"><br \/>  <i>\u0421\u043b\u0435\u0432\u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 2 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 8. \u0423 \u043f\u0440\u0430\u0432\u043e\u0439 \u0435\u0441\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0435\u0440\u0435\u043b\u0438\u0441\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u0447\u0438\u0441\u043b\u043e \u043e\u0442 1 \u0434\u043e 8, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u0440\u044b\u0442 \u0437\u0430 \u0442\u0451\u043c\u043d\u044b\u043c \u0441\u0442\u0435\u043a\u043b\u043e\u043c<\/i><\/p>\n<h4>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432 2001\u043c \u0433\u043e\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 \u044f \u043a\u0443\u043f\u0438\u043b \u0447\u0443\u0434\u043e \u0434\u0438\u0441\u043a \u0434\u043b\u044f \u041f\u041a \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u0412\u0441\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0438 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b PS1 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435: \u044d\u0442\u043e \u0431\u044b\u043b\u0438 Bleem! \u0438 \u0440\u0430\u043d\u043d\u0438\u0439 ePSXe. \u0418 \u043c\u043e\u0439 \u0442\u043e\u0433\u0434\u0430\u0448\u043d\u0438\u0439 \u043a\u043e\u043c\u043f \u0434\u0430\u0436\u0435 \u0441\u043c\u043e\u0433 \u0438\u0433\u0440\u0430\u0431\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043e\u0438 \u0434\u0438\u0441\u043a\u0438 \u043e\u0442 PS1! \u0410 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043c\u043e\u0434\u0435\u043c \u0438 \u044f \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e <a href=\"https:\/\/www.zophar.net\/joy\/direct-pad-pro.html\" rel=\"nofollow noopener noreferrer\">DirectPad Pro<\/a>. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 (\u043f\u0443\u0441\u0442\u044c \u0438 \u0447\u0435\u0440\u0435\u0437 LPT) \u043c\u043d\u043e\u0433\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442. \u0418 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u0430\u043a \u043d\u0430 9\u0445 \u0442\u0430\u043a \u0438 \u043d\u0430 XP! \u0410 \u0435\u0449\u0451 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0443\u0436\u0435 \u0432 2002\u043c \u044f \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e <a href=\"https:\/\/gamesx.com\/mccap\/\" rel=\"nofollow noopener noreferrer\">Memory Card Capture Sakura<\/a>! \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0451 \u0442\u0443 \u0436\u0435 \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f DirectPad Pro. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e\u00bb \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0430 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041d\u043e \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u044b, \u0438 \u0438\u0434\u0435\u044f \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u044c \u0438\u0434\u0435\u0435\u0439, \u0442\u0435\u043f\u043b\u044f\u0441\u044c \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0437\u0430\u0434\u0432\u043e\u0440\u043a\u0430\u0445 \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u041f\u0440\u043e\u0448\u043b\u043e \u043f\u043e\u0447\u0442\u0438 9 \u043b\u0435\u0442 \u043a\u0430\u043a \u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u043d\u0430\u044e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438 \u0438\u043c\u0435\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0443\u0442 \u0432\u0441\u0442\u0443\u043f\u0438\u043b \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0430\u043a\u0442\u043e\u0440 \u2013 \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u0438 \u0432\u0441\u0451 \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043e. \u0412\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0445\u043e\u0431\u0431\u0438 \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435, \u0437\u0430\u0431\u043e\u0442 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435. \u0418 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u043c\u043e\u0433\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0445\u043e\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 Proof of Concept.<\/p>\n<h4>\u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432 \u043d\u0451\u043c 6, \u0432\u043e\u0442 \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li><b>SEL0<\/b> \u2013 \u0421\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430, \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u0438\u0439<\/li>\n<li><b>SEL1<\/b> \u2013 \u0421\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0431\u043e\u0440\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430, \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u0438\u0439;<\/li>\n<li><b>CLK<\/b> \u2013 \u0422\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u043f\u043e \u0441\u043f\u0430\u0434\u0443 \u0441\u0434\u0432\u0438\u0433, \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 \u0437\u0430\u0449\u0451\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u0435;<\/li>\n<li><b>CMD<\/b> \u2013 \u0421\u0438\u0433\u043d\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043a \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438;<\/li>\n<li><b>DAT<\/b> \u2013 \u0421\u0438\u0433\u043d\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438;<\/li>\n<li><b>ACK<\/b> \u2013 \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0445\u044d\u043d\u0434\u0448\u0435\u0439\u043a, \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u0438\u0439.<\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f: 3.3\u0432 \u0438 7.6\u0432. \u0412\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043a\u0440\u043e\u043c\u0435 <b>SEL0<\/b> \u0438 <b>SEL1<\/b> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043b\u0438 \u0434\u0436\u043e\u0439\u043f\u0430\u0434 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u043e\u0442\u0443 \u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c, \u0445\u043e\u0442\u044f \u043f\u043e\u0441\u043b\u0435 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0445 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a \u044d\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c. \u042f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0436\u0435 \u0443\u0437\u043d\u0430\u043b\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <b>SPI<\/b> \u2013 \u0432\u0441\u0451 \u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c. \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u0438\u0433\u043d\u0430\u043b <b>ACK<\/b> \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430. \u0412\u043e\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u0445 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8c\/op\/kb\/8copkbj9ajqvtag9xww-axfie4s.jpeg\"><br \/>  <i>\u041e\u0442\u0440\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 5\u0442\u0438 \u0432\u043e\u043b\u044c\u0442\u043e\u0432\u044b\u043c FLASH<\/i><\/p>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<pre>        ___   ___________________________   ____ \u0414\u0430\u043d\u043d\u044b\u0435     \\ \/                           \\ \/      \u0438\u043b\u0438        X                             X \u041a\u043e\u043c\u0430\u043d\u0434\u0430 ___\/ \\___________________________\/ \\____         ___                  ____________                   \\                \/            \\       \u0422\u0430\u043a\u0442\u044b       \\              \/              \\                   \\____________\/                \\____             |                             |             |           tck               |             |&lt;---------------------------&gt;|  +-------+-------+------+-------+ |       | \u043c\u0438\u043d.  | \u0442\u0438\u043f. | \u043c\u0430\u043a\u0441. | +-------+-------+------+-------+ | tck   | 1\u043c\u043a\u0441  | 4\u043c\u043a\u0441 |   -   | +-------+-------+------+-------+  \u0422\u0430\u0439\u043c\u0438\u043d\u0433 ACK:      ____                                                SEL-     |______________________________________________      ______        __________        ___________         CLK        ||||||||          ||||||||           ||||||||                   |                 | ACK- -----------------------|_|-------------|_|---------                   |   ta1   | |     |  ta2  |                   |&lt;-------&gt;| |     |&lt;-----&gt;|                             | |  ap                            &gt;|-|&lt;-----  +-----+------+-------+--------+ |     | \u043c\u0438\u043d. |  \u0442\u0438\u043f. |  \u043c\u0430\u043a\u0441. | +-----+------+-------+--------+ | ta1 | 0\u043c\u043a\u0441 |   -   | 100\u043c\u043a\u0441 | \u041f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442-\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 +-----+------+-------+--------+ | ta2 |      | 10\u043c\u043a\u0441 |   1\u043c\u0441  | \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 +-----+------+-------+--------+ |  ap | 2\u043c\u043a\u0441 |       |        | \u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c ACK +-----+------+-------+--------+<\/pre>\n<p>  \u0418\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <b>CLK<\/b> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 250\u043a\u0413\u0446, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 4 \u043c\u043a\u0441 \u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434. \u0421 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u041e\u043f\u044b\u0442\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0434\u0436\u043e\u0439\u043f\u0430\u0434 \u0438 \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0430\u0440\u0431\u0438\u0442\u0440\u0430\u0436. \u041f\u043e\u0441\u043b\u0435 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <b>SELn<\/b> \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043c\u043e\u043b\u0447\u0430\u0442\u044c, \u043d\u043e \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0431\u0430\u0439\u0442 \u0440\u0430\u0432\u0435\u043d 0x01, \u0442\u043e \u0434\u0430\u043b\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0436\u043e\u0439\u043f\u0430\u0434, \u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043c\u043e\u043b\u0447\u0430\u0442\u044c \u0434\u043e \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432\u044b\u0431\u043e\u0440\u0430. \u0410 \u0435\u0441\u043b\u0438 \u0431\u0430\u0439\u0442 \u0431\u044b\u043b 0x81, \u0442\u043e \u0432\u0441\u0451 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0430 \u0434\u0436\u043e\u0439\u043f\u0430\u0434 \u043c\u043e\u043b\u0447\u0438\u0442. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0445\u043e\u0441\u0442 \u0436\u0434\u0451\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <b>ACK<\/b> \u043d\u0430 \u044d\u0442\u043e\u0442 \u0431\u0430\u0439\u0442 \u0430\u0440\u0431\u0438\u0442\u0440\u0430\u0436\u0430 \u0438 \u0436\u0434\u0451\u0442 \u043d\u0435\u0434\u043e\u043b\u0433\u043e. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u043f\u0435\u0442\u044c \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e, \u0435\u0441\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0438 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u043b\u0443\u0447\u0430, \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043a\u0430\u043a <b>VBlank<\/b>. \u0422\u0430\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u043e, \u0447\u0442\u043e \u0438\u0433\u0440\u044b \u0432 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0445 \u0434\u043e 5-\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u044b \u043d\u0430 \u044d\u0442\u043e\u0442 \u0442\u0430\u0439\u043c\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0432\u0435\u043d \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043a\u0430\u0434\u0440\u043e\u0432. \u0410 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430 \u0438 \u043d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0430: 50\u0413\u0446 \u0434\u043b\u044f PAL \u0438 60\u0413\u0446 \u0434\u043b\u044f NTSC. \u0422.\u0435., \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u043f\u0440\u043e\u0441\u0430 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u043e\u0432 \u0438 \u043a\u0430\u0440\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0432\u0435\u043d 20\u043c\u0441 \u0434\u043b\u044f PAL \u0438\u043b\u0438 16\u043c\u0441 \u0434\u043b\u044f NTSC.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0441 \u0430\u0440\u0431\u0438\u0442\u0440\u0430\u0436\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u041a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 PS1? \u0414\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u0445 \u0432\u0441\u0435\u0433\u043e 3.<\/p>\n<ul>\n<li><b>R<\/b> \u2013 0x52 \u0438\u043b\u0438 <b>Read<\/b>. \u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438;<\/li>\n<li><b>W<\/b> \u2013 0x57 \u0438\u043b\u0438 <b>Write<\/b>. \u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438;<\/li>\n<li><b>S<\/b> \u2013 0x53 \u0438\u043b\u0438 <b>Status<\/b>. \u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438.<\/li>\n<\/ul>\n<p>  \u0412\u0441\u044f \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430. \u041e\u0434\u0438\u043d \u0441\u0435\u043a\u0442\u043e\u0440 128 \u0431\u0430\u0439\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 128\u041a\u0438\u0411 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f 0x400 \u0438\u043b\u0438 1024 \u0441\u0435\u043a\u0442\u043e\u0440\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0446\u0435\u043b\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u0434\u0440 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438. \u0422.\u0435., \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440, \u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u0438\u043d. \u041a \u0441\u043b\u043e\u0432\u0443, \u0432\u0441\u044f\u043a\u0438\u0435 \u00ab\u0412\u0437\u043b\u043e\u043c\u0449\u0438\u043a\u0438 \u043a\u043e\u0434\u043e\u0432\u00bb \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h4>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/h4>\n<p>  \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<blockquote><p><b>\u0427\u0442\u0435\u043d\u0438\u0435:<\/b>  <\/p>\n<pre>CMD 0x81 0x52 0x00 0x00 MSB LSB 0x00 0x00 0x00 0x00 0x00 ... 0x00 0x00 0x00 DAT ---- FLAG 0x5A 0x5D PRV PRV 0x5C 0x4D  MSB  LSB DATA ... DATA  CHK  ACK<\/pre>\n<\/blockquote>\n<p>  <\/p>\n<blockquote><p><b>\u0417\u0430\u043f\u0438\u0441\u044c:<\/b>  <\/p>\n<pre>CMD 0x81 0x57 0x00 0x00 MSB LSB DATA ... DATA CHK 0x00 0x00 0x00  DAT ---- FLAG 0s5A 0x5D PRV PRV  PRV ...  PRV PRV 0x5C 0x5D  ACK<\/pre>\n<\/blockquote>\n<p>  <\/p>\n<blockquote><p><b>\u0421\u0442\u0430\u0442\u0443\u0441:<\/b>  <\/p>\n<pre>CMD 0x81 0x53 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 DAT ---- FLAG 0x5A 0x5D 0x5C 0x5D 0x04 0x00 0x00 0x80<\/pre>\n<\/blockquote>\n<p>  <b>\u041b\u0435\u0433\u0435\u043d\u0434\u0430:<\/b><\/p>\n<p>  <b>CMD<\/b> \u2014 \u0414\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0441\u0442 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0435.<br \/>  <b>DAT<\/b> \u2014 \u0414\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0440\u0442\u0430 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u0445\u043e\u0441\u0442\u0443.<br \/>  <b>FLAG<\/b> \u2014 \u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u0444\u043b\u0430\u0433\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<br \/>  <b>PRV<\/b> \u2014 \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0432 \u043a\u0430\u0440\u0442\u0435.<br \/>  <b>MSB<\/b> \u2014 \u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430.<br \/>  <b>LSB<\/b> \u2014 \u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430.<br \/>  <b>DATA<\/b> \u2014 \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>  <b>CHK<\/b> \u2014 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0431\u043b\u043e\u043a\u0430.<br \/>  <b>ACK<\/b> \u2014 \u0424\u043b\u0430\u0433 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0411\u0430\u0439\u0442 \u0444\u043b\u0430\u0433\u043e\u0432 <b>FLAG<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0442\u044b:<\/p>\n<ul>\n<li><b>D5<\/b> \u2013 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u043e\u0442 Sony. \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e.<\/li>\n<li><b>D3<\/b> \u2013 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0434\u0430\u0447\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438.<\/li>\n<li><b>D2<\/b> \u2013 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0437\u0430\u043f\u0438\u0441\u0438, \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u0430\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f <b>FLAG<\/b> \u0440\u0430\u0432\u0435\u043d 0x08. \u0418 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u043d \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442\u0441\u044f. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 PS1 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0441\u0435\u043a\u0442\u043e\u0440 0x003F \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0438\u0437\u043d\u043e\u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430. \u041d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u043a\u0442\u043e\u0440\u0435 \u043d\u0435\u0442. \u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 <b>MSB<\/b>:<b>LSB<\/b> 10 \u0431\u0438\u0442 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043e\u0442 0x0000 \u0434\u043e 0x03FF. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 <b>CHK<\/b> \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <b>XOR<\/b> \u0432\u0441\u0435\u0445 128 \u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 + <b>MSB<\/b> \u0438 <b>LSB<\/b>. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 <b>ACK<\/b> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u043e 3 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: <b>G<\/b> 0x47, <b>E<\/b> 0x43 \u0438 0xFF. <b>G<\/b> = <b>Good<\/b> \u0438\u043b\u0438 \u00ab\u041e\u041a\u00bb. <b>E<\/b> = <b>Error<\/b>. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0438\u0437 \u043a\u0430\u0440\u0442\u044b <b>ACK<\/b> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d <b>G<\/b>, \u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 <b>G<\/b> = \u041e\u041a, <b>E<\/b> = \u043e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u0430 0xFF \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430. \u041f\u0440\u0430\u0432\u0434\u0430, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u0430\u0440\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0431\u0438\u0442\u044b \u0432 \u0441\u0442\u0430\u0440\u0448\u0435\u043c \u0431\u0430\u0439\u0442\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 0xFF. \u0427\u0438\u0441\u043b\u0430 0x0400 \u0438 0x0080 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043d\u0430\u0432\u043e\u0434\u044f\u0442 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u043d\u043e \u0434\u043e\u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u041d\u0443 \u0432\u043e\u0442 \u043c\u044b \u0438 \u043c\u044b \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443:<\/p>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u044d\u0442\u0430 \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f PS1. \u041f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:<\/p>\n<ol>\n<li>\u041f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445. \u041c\u0435\u0436\u0434\u0443 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 4 \u0431\u0430\u0439\u0442\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u0442\u044c <b>ACK<\/b>. \u041a \u0441\u043b\u043e\u0432\u0443, \u0443 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 NOR FLASH \u0432\u0441\u0435 <b>ACK<\/b> \u0438\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e, \u0443 \u043a\u0430\u0440\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 SPI FLASH \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 <b>LSB<\/b> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 <b>ACK<\/b>, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 SPI FLASH \u0438 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043d \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e \u0445\u043e\u0434\u0443 \u043e\u0431\u043c\u0435\u043d\u0430.<\/li>\n<li>\u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u0442\u0443\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u0434\u0430\u0451\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443.<\/li>\n<\/ol>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0442\u043e \u0443 \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u043e\u0432 3,3\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0430 7,6\u0432 \u0434\u043b\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043c\u043e\u0442\u043e\u0440\u0447\u0438\u043a\u043e\u0432. \u0423 \u043a\u0430\u0440\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u043f\u0438\u0442\u0430\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u043e\u0438\u0442 5\u0432 FLASH, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 7,6\u0432 \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u0442 3,3\u0432 FLASH, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 3,3\u0432. <\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0430 STM32F407VG, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442 3,3\u0432, \u0438\u043c\u0435\u0435\u0442 SPI \u0434\u043b\u044f PSIO, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 SDIO \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0437 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f, \u0440\u0435\u0448\u0430\u044f \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ru\/gh\/ld\/rughld0ehbthw3j8r5u3re7tcei.jpeg\"><br \/>  <i>\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 STM32F407<\/i><\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u0430\u0434\u0435\u0436\u043d\u043e, \u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e. \u0410 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0435\u0448\u0435\u0432\u043b\u0435? \u041d\u0443, \u0447\u0442\u043e-\u0436, \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u0437\u0430\u0434\u0430\u0447\u0438, \u044f \u0432\u044b\u0431\u0440\u0430\u043b STM32F042F6. \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yd\/xe\/mq\/ydxemqanxnv6tkmuy8hxtj5nppo.jpeg\"><br \/>  <i>\u0412\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u043e\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 STM32F042<\/i><\/p>\n<p>  \u041a\u0430\u0440\u0442\u0430 \u0443 \u043d\u0430\u0441 \u0432\u0435\u0434\u043e\u043c\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043a\u0432\u0430\u0440\u0446\u0435\u0432\u044b\u043c \u0440\u0435\u0437\u043e\u043d\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 SPI \u0443 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043e\u0434\u0438\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0435\u0433\u043e \u043e\u0442\u0434\u0430\u043b SD \u043a\u0430\u0440\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442. PSIO \u0442\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439.<\/p>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 SD \u043a\u0430\u0440\u0442\u043e\u0439 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SPI. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0441\u043e\u0431\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c, \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0440\u0430\u0437\u0436\u0451\u0432\u0430\u043d\u043e \u0438 \u0440\u0430\u0441\u0442\u0430\u0441\u043a\u0430\u043d\u043e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u041a\u043e\u0434 \u0438\u043d\u0438\u0442\u0430, \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043d\u0438\u0436\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Card_Init()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 TCardType Card_Init( void ) {\t\/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \tTCardType Res; \tuint32_t Cnt,OCR; \tuint8_t Dat, Resp; \t\/\/ \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \tCARD_OFF; Res = ctNone; \t\/\/ \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c SPI \u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c PCLK\/128: 48\/128 = 0,375\u041c\u0413\u0446 \tSPI1-&gt;CR1 &amp;= ~SPI_CR1_SPE; \tSPI1-&gt;CR1 = SPI_CR1_MSTR | SPI_LOW_SPEED; \tSPI1-&gt;CR1 |= SPI_CR1_SPE; \t\/\/ \u0422\u043e\u043f\u0447\u0435\u043c\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \tHAL_Delay( 1 ); \t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0438\u043d\u0438\u0442 256 \u0431\u0430\u0439\u0442 \tfor (Cnt = 0;Cnt &lt; 256;Cnt++ ) \t{\t\/\/ \u041f\u043e\u0441\u043b\u044b\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u043e \t\tCard_SPI( 0xFF ); \t} \t\/\/ \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u0430\u0440\u0442\u044b \tCARD_ON; \t\/\/ \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \tdo \t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c 0xFF \t\tDat = Card_SPI( 0xFF ); \t} while ( Dat != 0xFF ); \t\/\/ CMD0: GO_IDLE_STATE \tCard_SendCMD( &amp;CARD_CMD0[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, DISABLE, 128 ); \t\/\/ \u041a\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d? \tif ( Resp == 0x01 ) \t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u0432\u043e\u0448\u043b\u0430 \u0432 IDLE_STATE, \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c CMD8: SEND_IF_COND \t\tCard_SendCMD( &amp;CARD_CMD8[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, ENABLE, 128 ); \t\t\/\/ \u0415\u0441\u043b\u0438 \u0431\u044b\u043b \u0434\u0430\u043d \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0441\u043f\u043e\u043d\u0441 \t\tif ( Resp != 0x01 ) \t\t{\t\/\/ \u042d\u0442\u043e \u0432\u0435\u0442\u043a\u0430 SDv1\/MMC \t\t\tdo \t\t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c ACMD41: APP_SEND_OP_COND \t\t\t\tCard_SendCMD( &amp;CARD_ACMD41[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, ENABLE, 128 ); \t\t\t} while ( Resp == 0x01 ); \t\t\t\/\/ \u041a\u0430\u043a\u043e\u0432 \u0431\u044b\u043b \u043e\u0442\u0432\u0435\u0442? \t\t\tif ( Resp == 0x00 ) \t\t\t{\t\/\/ \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043a\u0430\u0440\u0442\u0430 SD v1 \t\t\t\tRes = ctSD1; \t\t\t} \t\t\telse \t\t\t{\t\/\/ \u042d\u0442\u043e \u0432\u0435\u0442\u043a\u0430 MMC, \u043d\u0430\u043c \u0435\u0451 \u043d\u0435\u043a\u0443\u0434\u0430 \u0432\u0442\u044b\u043a\u0430\u0442\u044c \t\t\t\tRes = ctUnknown; \t\t\t} \t\t} \t\telse \t\t{\t\/\/ \u042d\u0442\u043e \u0432\u0435\u0442\u043a\u0430 SDv2 \t\t\tif ( (OCR &amp; 0x0001FF) == 0x0001AA ) \t\t\t{\t\/\/ \u042d\u0442\u043e \u043a\u0430\u0440\u0442\u0430 SDv2 \t\t\t\tdo \t\t\t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c ACMD55: APP_CMD \t\t\t\t\tCard_SendCMD( &amp;CARD_CMD55[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, DISABLE, 128 ); \t\t\t\t\t\/\/ \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \t\t\t\t\tif ( Resp == 0x01 ) \t\t\t\t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c ACMD41: APP_SEND_OP_COND \t\t\t\t\t\tCard_SendCMD( &amp;CARD_ACMD41[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, ENABLE, 128 ); \t\t\t\t\t} \t\t\t\t} while ( Resp == 0x01 ); \t\t\t\t\/\/ \u041a\u0430\u043a\u043e\u0432 \u0431\u044b\u043b \u043e\u0442\u0432\u0435\u0442? \t\t\t\tif ( Resp == 0x00 ) \t\t\t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c CMD58: READ_OCR \t\t\t\t\tCard_SendCMD( &amp;CARD_CMD58[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, ENABLE, 128 ); \t\t\t\t\t\/\/ \u041a\u0430\u043a\u043e\u0432 \u043e\u0442\u0432\u0435\u0442? \t\t\t\t\tif ( Resp == 0x00 ) \t\t\t\t\t{\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c OCR \t\t\t\t\t\tif ( (OCR &amp; 0x40000000) == 0x00000000 ) \t\t\t\t\t\t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \t\t\t\t\t\t\tRes = ctSD2; \t\t\t\t\t\t} \t\t\t\t\t\telse \t\t\t\t\t\t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \t\t\t\t\t\t\tRes = ctSD3; \t\t\t\t\t\t} \t\t\t\t\t} \t\t\t\t\telse \t\t\t\t\t{\t\/\/ \u042d\u0442\u0430 \u043a\u0430\u0440\u0442\u0430 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u0430 \t\t\t\t\t\tRes = ctUnknown; \t\t\t\t\t} \t\t\t\t} \t\t\t\telse \t\t\t\t{\t\/\/ \u042d\u0442\u0430 \u043a\u0430\u0440\u0442\u0430 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u0430 \t\t\t\t\tRes = ctUnknown; \t\t\t\t} \t\t\t} \t\t\telse \t\t\t{\t\/\/ \u042d\u0442\u0430 \u043a\u0430\u0440\u0442\u0430 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u0430 \t\t\t\tRes = ctUnknown; \t\t\t} \t\t} \t} \telse \t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \t\tif ( Res != 0xFF ) { Res = ctUnknown; } \t} \t\/\/ \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u0430\u0440\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \tif ( (Res == ctSD1) || (Res == ctSD2) ) \t{\t\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 512 \u0431\u0430\u0439\u0442 \t\t\/\/ CMD16: SET_BLOCKLEN \t\tCard_SendCMD( &amp;CARD_CMD16[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( &amp;OCR, DISABLE, 128 ); \t\t\/\/ \u041a\u0430\u043a\u043e\u0432 \u043e\u0442\u0432\u0435\u0442? \t\tif ( Resp != 0x00 ) \t\t{\t\/\/ \u042d\u0442\u0430 \u043a\u0430\u0440\u0442\u0430 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u0430 \t\t\tRes = ctUnknown; \t\t} \t} \t\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \twhile ( (SPI1-&gt;SR &amp; SPI_SR_BSY) != 0x0000 ) { } \tCARD_OFF; \t\/\/ \u0415\u0441\u043b\u0438 \u043a\u0430\u0440\u0442\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \tif ( (Res != ctNone) &amp;&amp; (Res != ctUnknown) ) \t{\t\/\/ \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c SPI \u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c PCLK\/2: 48\/2 = 24\u041c\u0413\u0446 \t\tSPI1-&gt;CR1 &amp;= ~SPI_CR1_SPE; \t\tSPI1-&gt;CR1 = SPI_CR1_MSTR; \t\tSPI1-&gt;CR1 |= SPI_CR1_SPE; \t} \t\/\/ \u0412\u044b\u0445\u043e\u0434\u0438\u043c \treturn Res; }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Card_Read()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0437 DMA FunctionalState Card_Read( TCardType CardType, uint8_t *Buf, uint32_t *Loaded, uint32_t Addr ) {\t\/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \tFunctionalState Res; \tuint8_t Cmd[ 6 ]; \tuint8_t Dat,Resp; \tuint32_t Cnt; \t\/\/ \u0418\u043d\u0438\u0442 \tRes = DISABLE; \t\/\/ \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e? \tif ( *(Loaded) != Addr ) \t{\t\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \t\t*(Loaded) = Addr; \t\t\/\/ \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u0430\u0440\u0442 \t\tif ( (CardType == ctSD1) || (CardType == ctSD2) ) \t\t{\t\/\/ \u0423 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u0430\u0440\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043c\u0435\u0441\u0442\u043e LBA \t\t\tAddr *= 0x00000200; \t\t} \t\t\/\/ \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \t\twhile ( 1 ) \t\t{\t\/\/ \u0415\u0441\u043b\u0438 \u0442\u0438\u043f \u043a\u0430\u0440\u0442\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 - \u0432\u044b\u0445\u043e\u0434\u0438\u043c \t\t\tif ( CardType == ctNone ) { break; } \t\t\tif ( CardType == ctUnknown ) { break; } \t\t\t\/\/ \u0413\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \t\t\tCmd[ 0 ] = CARD_CMD17; \t\t\tCmd[ 1 ] = Addr &gt;&gt; 24; \t\t\tCmd[ 2 ] = Addr &gt;&gt; 16; \t\t\tCmd[ 3 ] = Addr &gt;&gt; 8; \t\t\tCmd[ 4 ] = Addr; \t\t\tCmd[ 5 ] = 0xFF; \t\t\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \t\t\tCARD_ON; \t\t\t\/\/ \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \t\t\tdo \t\t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c 0xFF \t\t\t\tDat = Card_SPI( 0xFF ); \t\t\t} while ( Dat != 0xFF ); \t\t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f \t\t\tCard_SendCMD( &amp;Cmd[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( (uint32_t *)&amp;Cmd[ 0 ], DISABLE, 128 ); \t\t\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \t\t\tif ( Resp != 0x00 ) { break; } \t\t\t\/\/ \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\tCnt = 2048; \t\t\tdo \t\t\t{\t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\t\t\tDat = Card_SPI( 0xFF ); \t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u0430\u0435\u043c \t\t\t\tCnt--; \t\t\t} while ( (Dat == 0xFF) &amp;&amp; (Cnt &gt; 0) ); \t\t\t\/\/ \u0422\u0430\u0439\u043c\u0430\u0443\u0442? \t\t\tif ( Cnt == 0 ) { break; } \t\t\t\/\/ \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u043e\u043a\u0435\u043d\u0435? \t\t\tif ( Dat != CARD_DATA_TOKEN ) { break; } \t\t\t\/\/ \u041d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \t\t\tfor (Cnt = 0;Cnt &lt; 512;Cnt++) \t\t\t{\t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\t\t\t*(Buf) = Card_SPI( 0xFF ); Buf++; \t\t\t} \t\t\t\/\/ \u0414\u043e\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c CRC \t\t\tCmd[ 0 ] = Card_SPI( 0xFF ); \t\t\tCmd[ 1 ] = Card_SPI( 0xFF ); \t\t\t\/\/ \u0411\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \t\t\tRes = ENABLE; \t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\tbreak; \t\t} \t} \telse \t{\t\/\/ \u0411\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \t\tRes = ENABLE; \t} \t\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \twhile ( (SPI1-&gt;SR &amp; SPI_SR_BSY) != 0x0000 ) { } \tCARD_OFF; \t\/\/ \u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043e\u0431\u043d\u0443\u043b\u0438\u043c \u043d\u043e\u043c\u0435\u0440 \tif ( Res == DISABLE ) { *(Loaded) = 0xFFFFFFFF; } \t\/\/ \u0412\u044b\u0445\u043e\u0434 \treturn Res; }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Card_Write()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0437 DMA FunctionalState Card_Write( TCardType CardType, uint8_t *Buf, uint32_t *Loaded, uint32_t Addr ) {\t\/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \tFunctionalState Res; \tuint8_t Cmd[ 6 ]; \tuint8_t Dat,Resp; \tuint32_t Cnt; \t\/\/ \u0418\u043d\u0438\u0442 \tRes = DISABLE; \t\/\/ \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u0430\u0440\u0442 \tif ( (CardType == ctSD1) || (CardType == ctSD2) ) \t{\t\/\/ \u0423 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u0430\u0440\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043c\u0435\u0441\u0442\u043e LBA \t\tAddr *= 0x00000200; \t} \t\/\/ \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \twhile ( 1 ) \t{\t\/\/ \u0415\u0441\u043b\u0438 \u0442\u0438\u043f \u043a\u0430\u0440\u0442\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 - \u0432\u044b\u0445\u043e\u0434\u0438\u043c \t\tif ( CardType == ctNone ) { break; } \t\tif ( CardType == ctUnknown ) { break; } \t\t\/\/ \u0413\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \t\tCmd[ 0 ] = CARD_CMD24; \t\tCmd[ 1 ] = Addr &gt;&gt; 24; \t\tCmd[ 2 ] = Addr &gt;&gt; 16; \t\tCmd[ 3 ] = Addr &gt;&gt; 8; \t\tCmd[ 4 ] = Addr; \t\tCmd[ 5 ] = 0xFF; \t\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \t\tCARD_ON; \t\t\/\/ \u041e\u0436\u0438\u0434\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \t\tdo \t\t{\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c 0xFF \t\t\tDat = Card_SPI( 0xFF ); \t\t} while ( Dat != 0xFF ); \t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f \t\tCard_SendCMD( &amp;Cmd[ 0 ], CMD_LENGTH ); Resp = Card_WaitResp( (uint32_t *)&amp;Cmd[ 0 ], DISABLE, 128 ); \t\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \t\tif ( Resp != 0x00 ) { break; } \t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u0445 \t\tCard_SPI( CARD_DATA_TOKEN ); \t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435 \t\t\/\/ \u041d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \t\tfor (Cnt = 0;Cnt &lt; 512;Cnt++) \t\t{\t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\t\tCard_SPI( *(Buf) ); Buf++; \t\t} \t\t\/\/ \u0414\u043e\u0441\u044b\u043b\u0430\u0435\u043c CRC \t\tCard_SPI( 0xFF ); \t\tCard_SPI( 0xFF ); \t\t\/\/ \u0411\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \t\tRes = ENABLE; \t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\tbreak; \t} \t\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \twhile ( (SPI1-&gt;SR &amp; SPI_SR_BSY) != 0x0000 ) { } \tCARD_OFF; \t\/\/ \u0423\u0441\u043f\u0435\u0448\u043d\u043e? \tif ( Res == ENABLE ) \t{\t\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \t\t*(Loaded) = Addr; \t} \telse \t{\t\/\/ \u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \t\t*(Loaded) = 0xFFFFFFFF; \t} \t\/\/ \u0412\u044b\u0445\u043e\u0434 \treturn Res; }<\/code><\/pre>\n<\/div><\/div>\n<p>  \u041a\u0430\u0440\u0442\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 375\u043a\u0413\u0446 (PCLK\/128), \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 24\u041c\u0413\u0446 (PCLK\/2). \u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u0445 \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e SDv1 \u0438 SDHC \u043e\u0442\u0434\u0430\u044e\u0442 \u0441\u0435\u043a\u0442\u043e\u0440 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 2,8\u043c\u0441 \u043d\u0430 \u0432\u0441\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0442.\u043a. \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f PSIO.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 PSIO. \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043e\u043d \u0443 \u043d\u0430\u0441 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439. \u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430: <b>SEL<\/b> \u0438 <b>CLK<\/b>. \u041f\u0435\u0440\u0432\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0431\u043e\u0438\u043c \u0444\u0440\u043e\u043d\u0442\u0430\u043c \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043c\u0435\u043d\u0443 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">EXTI2_3_IRQHandler()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u0443 SEL void EXTI2_3_IRQHandler( void ) {\t\/\/ \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \tEXTI-&gt;PR = 0x00000004; \t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 SEL \tif ( MEM_SEL ) \t{\t\/\/ SEL = 1 \t\tEXTI-&gt;IMR &amp;= 0xFFFFFFFE; \t\tState.PSIO.Mode = mdSync; \t\t\/\/ \u0422\u0443\u0448\u0438\u043c \u0437\u0435\u043b\u0451\u043d\u0443\u044e \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0443 \t\tLED_GREEN_OFF; \t} \telse \t{\t\/\/ SEL = 0 \t\tEXTI-&gt;IMR |= 0x00000001; \t\tState.PSIO.Bits = 7; \t\t\/\/ \u0422\u0443\u0448\u0438\u043c \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \t\tLED_GREEN_OFF; LED_RED_OFF; \t} \t\/\/ \u041e\u0431\u0435\u0441\u0442\u043e\u0447\u0438\u0432\u0430\u0435\u043c \tMEM_DAT1; MEM_nACK; }<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0421\u0438\u0433\u043d\u0430\u043b <b>CLK<\/b> \u0431\u0443\u0434\u0435\u043c \u043b\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e STM32F042 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430 48\u041c\u0413\u0446 \u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u043b\u043e\u0432\u0430\u0442\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0418 \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043e\u0431\u043e\u0438\u043c \u0444\u0440\u043e\u043d\u0442\u0430\u043c, \u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438 \u0431\u0430\u0439\u0442\u0430 \u043e\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0432\u044b\u043b\u0435\u0437\u0430\u0435\u0442 \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0432\u0430\u044f \u0441\u0431\u043e\u0438. \u0410 \u0435\u0441\u043b\u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0444\u0440\u043e\u043d\u0442, \u0430 \u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043f\u043e \u0441\u043f\u0430\u0434\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0442\u043e \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0437\u0430 55% \u043e\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 <b>CLK<\/b>, \u0432\u0435\u0434\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c. \u0423\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u043e\u043d \u0441\u043c\u043e\u0433 \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u043e \u043e\u0431\u043e\u0438\u043c \u043f\u0435\u0440\u0435\u043f\u0430\u0434\u0430\u043c. \u0412\u043e\u0442 \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">EXTI0_1_IRQHandler()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 CLK void EXTI0_1_IRQHandler( void ) {\t\/\/ \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \tEXTI-&gt;PR = 0x00000001; \t\/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \tuint16_t AckTime; \t\/\/ \u0418\u043d\u0438\u0442 \tAckTime = 0; \t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \tState.PSIO.DataIn &gt;&gt;= 1; \tif ( MEM_CMD ) \t{\t\/\/ \u041f\u0440\u0438\u043d\u044f\u0442\u0430 1 \t\tState.PSIO.DataIn |= 0x80; \t} \telse \t{\t\/\/ \u041f\u0440\u0438\u043d\u044f\u0442 0 \t\tState.PSIO.DataIn &amp;= 0x7F; \t} \t\/\/ \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u0431\u0438\u0442\u044b \tif ( State.PSIO.Bits &gt; 0 ) \t{\t\/\/ \u0415\u0449\u0451 \u0435\u0441\u0442\u044c \u0431\u0438\u0442\u044b \t\tState.PSIO.Bits--; \t} \telse \t{\t\/\/ \u041a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u0431\u0438\u0442\u044b? \t\tif ( State.PSIO.Bits == 0 ) \t\t{\t\/\/ \u0411\u0438\u0442\u044b \u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \t\t\tState.PSIO.Bits = 7; \t\t\t\/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \t\t\tState.PSIO.DataOut = State.PSIO.DataIn; \t\t\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \t\t\tswitch ( State.PSIO.Mode ) \t\t\t{\t\/\/ \u0420\u0435\u0436\u0438\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \t\t\t\tcase mdSync : {\t\/\/ \u041f\u0440\u0438\u043d\u044f\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \t\t\t\t\t\t\t\tif ( State.PSIO.DataIn == 0x81 ) \t\t\t\t\t\t\t\t{\t\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u044b \t\t\t\t\t\t\t\t\tState.PSIO.Mode = mdCmd; \t\t\t\t\t\t\t\t\t\/\/ \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \t\t\t\t\t\t\t\t\tState.PSIO.DataOut = State.MemCard.Status; \t\t\t\t\t\t\t\t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c ACK \t\t\t\t\t\t\t\t\tAckTime = AckNormal; \t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\telse \t\t\t\t\t\t\t\tif ( State.PSIO.DataIn == 0x01 ) \t\t\t\t\t\t\t\t{\t\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430  \t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t} \t\t\t\t\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \t\t\t\tcase mdCmd : {\t\/\/ \u041c\u0435\u043d\u044f\u0435\u043c \u0440\u0435\u0436\u0438\u043c \t\t\t\t\t\t\t\tState.PSIO.Mode = mdParam; \t\t\t\t\t\t\t\t\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0431\u0430\u0439\u0442 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0431\u0443\u0444\u0435\u0440 \t\t\t\t\t\t\t\tState.MemCard.Cmd = State.PSIO.DataIn; \t\t\t\t\t\t\t\tState.MemCard.Bytes = 0; \t\t\t\t\t\t\t\t\/\/ \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \t\t\t\t\t\t\t\tState.PSIO.DataOut = 0x5A; \t\t\t\t\t\t\t\t\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c ACK \t\t\t\t\t\t\t\tAckTime = AckNormal; \t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t} \t\t\t\t\/\/ \u0420\u0435\u0436\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \t\t\t\tcase mdParam : {\t\/\/ \u041f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 ACK \t\t\t\t\t\t\t\t\tAckTime = AckNormal; \t\t\t\t\t\t\t\t\t\/\/ \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Cmd ) \t\t\t\t\t\t\t\t\t{\t\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0447\u0442\u0435\u043d\u0438\u044f: R \t\t\t\t\t\t\t\t\t\tcase 0x52 : {\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0431\u0430\u0439\u0442\u044b \t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Bytes ) \t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0 : { State.PSIO.DataOut = 0x5D; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1 : { break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 2 : { State.MemCard.Sector = State.PSIO.DataIn * 0x0100; State.MemCard.Check = State.PSIO.DataIn; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3 : { State.MemCard.Sector += State.PSIO.DataIn; State.MemCard.Check ^= State.PSIO.DataIn; State.PSIO.DataOut = 0x5C; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   State.SDCard.CardOp = coRead; AckTime = AckDelayed; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 4 : { State.PSIO.DataOut = 0x5D; AckTime = AckDelayed; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 5 : { State.PSIO.DataOut = State.MemCard.Sector &gt;&gt; 8; AckTime = AckDelayed; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 6 : { State.PSIO.DataOut = State.MemCard.Sector; AckTime = AckDelayed; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   State.PSIO.Mode = mdRdData; State.MemCard.Bytes = 0; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; AckTime = 0; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0421\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0447\u0442\u0435\u043d\u0438\u0435\u043c \t\t\t\t\t\t\t\t\t\t\t\t\t\tLED_GREEN_ON; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0438: W \t\t\t\t\t\t\t\t\t\tcase 0x57 : {\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0431\u0430\u0439\u0442\u044b \t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Bytes ) \t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0 : { State.PSIO.DataOut = 0x5D; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1 : { break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 2 : { State.MemCard.Sector = State.PSIO.DataIn * 0x0100; State.MemCard.Check = State.PSIO.DataIn; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3 : { State.MemCard.Sector += State.PSIO.DataIn; State.MemCard.Check ^= State.PSIO.DataIn; \/\/ break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   State.PSIO.Mode = mdWrData; State.MemCard.Bytes = 0; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; AckTime = 0; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0421\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c\u044e \t\t\t\t\t\t\t\t\t\t\t\t\t\tLED_RED_ON; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: S \t\t\t\t\t\t\t\t\t\tcase 0x53 : {\t\/\/ \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0430\u0439\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Bytes ) \t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0 : { State.PSIO.DataOut = 0x5D; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1 : { State.PSIO.DataOut = 0x5C; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 2 : { State.PSIO.DataOut = 0x5D; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3 : { State.PSIO.DataOut = 0x04; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 4 : { State.PSIO.DataOut = 0x00; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 5 : { State.PSIO.DataOut = 0x00; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 6 : { State.PSIO.DataOut = 0x80; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; AckTime = 0; break; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\/\/ \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; break; } \t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \t\t\t\t\t\t\t\t\tif ( State.PSIO.Mode == mdParam ) { State.MemCard.Bytes++; } \t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t} \t\t\t\t\/\/ \u0420\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \t\t\t\tcase mdRdData : {\t\/\/ \u041f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 ACK \t\t\t\t\t\t\t\t\tAckTime = AckNormal; \t\t\t\t\t\t\t\t\t\/\/ \u0421\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442 \t\t\t\t\t\t\t\t\tif ( State.MemCard.Bytes &lt; 128 ) \t\t\t\t\t\t\t\t\t{\t\/\/ \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\t\t\t\t\t\t\t\tState.PSIO.DataOut = State.MemCard.Data[ State.MemCard.Bytes ]; State.MemCard.Check ^= State.PSIO.DataOut; \t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\telse \t\t\t\t\t\t\t\t\t{\t\/\/ \u042d\u0442\u043e \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Bytes ) \t\t\t\t\t\t\t\t\t\t{\t\/\/ \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \t\t\t\t\t\t\t\t\t\t\tcase 128 : { State.PSIO.DataOut = State.MemCard.Check; break; } \t\t\t\t\t\t\t\t\t\t\t\/\/ \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \t\t\t\t\t\t\t\t\t\t\tcase 129 : { State.PSIO.DataOut = 0x47; break; } \t\t\t\t\t\t\t\t\t\t\t\/\/ \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \t\t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; AckTime = 0; LED_GREEN_OFF; break; } \t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u0430\u0435\u043c \t\t\t\t\t\t\t\t\tState.MemCard.Bytes++; \t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t} \t\t\t\t\/\/ \u0420\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0451\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \t\t\t\tcase mdWrData : {\t\/\/ \u041f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 ACK \t\t\t\t\t\t\t\t\tAckTime = AckNormal; \t\t\t\t\t\t\t\t\t\/\/ \u0421\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442 \t\t\t\t\t\t\t\t\tif ( State.MemCard.Bytes &lt; 128 ) \t\t\t\t\t\t\t\t\t{\t\/\/ \u042d\u0442\u043e \u043f\u0440\u0438\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\t\t\t\t\t\t\t\tState.MemCard.Data[ State.MemCard.Bytes ] = State.PSIO.DataIn; State.MemCard.Check ^= State.PSIO.DataIn; \t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\telse \t\t\t\t\t\t\t\t\t{\t\/\/ \u042d\u0442\u043e \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\t\t\t\t\t\t\t\tswitch ( State.MemCard.Bytes ) \t\t\t\t\t\t\t\t\t\t{\t\/\/ \u042d\u0442\u043e \u043f\u0440\u0438\u0451\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \t\t\t\t\t\t\t\t\t\t\tcase 128 : {\t\/\/ \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0438 \u0432\u044b\u043d\u043e\u0441\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( State.MemCard.Check == State.PSIO.DataIn ) { State.MemCard.Check = 0x47; } else { State.MemCard.Check = 0x4E; } \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0451\u043c \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tState.PSIO.DataOut = 0x5C; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434\u0438\u043c \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\/\/ \u042d\u0442\u043e \u0445\u0432\u043e\u0441\u0442\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \t\t\t\t\t\t\t\t\t\t\tcase 129 : { State.PSIO.DataOut = 0x5D; break; } \t\t\t\t\t\t\t\t\t\t\t\/\/ \u042d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \t\t\t\t\t\t\t\t\t\t\tcase 130 : {\t\/\/ \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0441\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u043d \u0432\u0435\u0440\u043d\u043e \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( State.MemCard.Sector &lt; 0x4000 ) \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u0421\u0435\u043a\u0442\u043e\u0440 \u0432\u0435\u0440\u0435\u043d, \u043e\u0442\u0434\u0430\u0451\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tState.PSIO.DataOut = State.MemCard.Check; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u041a\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438? \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( State.MemCard.Check == 0x47 ) \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u0417\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tState.SDCard.CardOp = coWrite; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tState.MemCard.Status &amp;= ~StateNew; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\t\/\/ \u0421\u0435\u043a\u0442\u043e\u0440 \u043e\u0448\u0438\u0431\u043e\u0447\u0435\u043d, \u0432\u044b\u0434\u0430\u0451\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tState.PSIO.DataOut = 0xFF; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\t\t\/\/ \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \t\t\t\t\t\t\t\t\t\t\tdefault : { State.PSIO.Mode = mdDone; AckTime = 0; break; } \t\t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u0430\u0435\u043c \t\t\t\t\t\t\t\t\tState.MemCard.Bytes++; \t\t\t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\t\t\t\t\t\t\t\tbreak; \t\t\t\t\t\t\t\t} \t\t\t\t\/\/ \u0417\u0430\u0433\u043b\u0443\u0448\u043a\u0430, \u0442\u0443\u043f\u0438\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \t\t\t\tcase mdDone : { break; } \t\t\t\t\/\/ \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \t\t\t\tdefault : { State.PSIO.Mode = mdSync; break; } \t\t\t} \t\t} \t} \t\/\/ \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \tif ( State.PSIO.Mode != mdSync ) \t{\t\/\/ \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u0438\u0442 \u0432\u044b\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \t\tif ( State.PSIO.DataOut &amp; 0x01 ) \t\t{\t\/\/ \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c 1 \t\t\tMEM_DAT1; \t\t} \t\telse \t\t{\t\/\/ \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c 0 \t\t\tMEM_DAT0; \t\t} \t\t\/\/ \u0421\u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\tState.PSIO.DataOut &gt;&gt;= 1; \t} \t\/\/ \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f ACK? \tif ( AckTime &gt; 0 ) \t{\t\/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c CNT \t\tTIM3-&gt;CNT = AckTime; \t\t\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \t\tState.PSIO.Ack = DISABLE; \t\t\/\/ \u0421\u0431\u0440\u043e\u0441\u0438\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \t\tTIM3-&gt;SR = 0x0000; \t\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 \t\tTIM3-&gt;CR1 |= TIM_CR1_CEN; \t} }<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0422\u0430\u0439\u043c\u0435\u0440 TIM3 \u0431\u0443\u0434\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e <b>ACK<\/b>. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u044f\u0434\u0440\u043e \u0431\u044b\u043b\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SD \u043a\u0430\u0440\u0442\u043e\u0439. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439:  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">TIM3_IRQHandler()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 TIM3 void TIM3_IRQHandler( void ) {\t\/\/ \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \tTIM3-&gt;SR = 0x0000; \t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0436\u0438\u043c \tif ( State.PSIO.Ack == ENABLE ) \t{\t\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b ACK \t\tMEM_nACK; \t} \telse \t{\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b ACK \t\tMEM_ACK; \t\t\/\/ \u041f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \t\tState.PSIO.Ack = ENABLE; \t\t\/\/ \u041d\u043e\u0432\u044b\u0439 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \t\tTIM3-&gt;CNT = 0; \t\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 \t\tTIM3-&gt;CR1 |= TIM_CR1_CEN; \t} } <\/code><\/pre>\n<\/div><\/div>\n<p>  \u041a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0432 \u043e\u0441\u043e\u0431\u043e\u043c \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f. \u041e\u0442\u043c\u0435\u0447\u0443 \u043b\u0438\u0448\u044c \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0441 SD \u043a\u0430\u0440\u0442\u044b \u0434\u043b\u044f \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main(). \u0418 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e 4 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 <b>ACK<\/b> \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u0443\u0434\u043b\u0438\u043d\u0451\u043d\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. \u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vo\/fg\/74\/vofg74vwgnse0aeh1rk8nkvlqu0.png\"><br \/>  <i>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f 4 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438<\/i><\/p>\n<p>  \u0412 \u0441\u0443\u043c\u043c\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 3,5\u043c\u0441 \u0438 \u044d\u0442\u043e\u0433\u043e \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0443\u0441\u043f\u0435\u043b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0442\u043e\u0442 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0442.\u0435. \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u044d\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0430\u0443\u0437\u044b. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u043b\u0430\u0433 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0438 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u0430\u0451\u0442 \u043a\u0430\u0440\u0442\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043f\u043e\u043c\u0435\u0445 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u043a\u043e\u0434 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430.  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">main()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\t\/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \twhile ( 1 ) \t{\t\/\/ \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \t\tif ( CARD_nCD == 0 ) \t\t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \t\t\tif ( State.SDCard.CardType == ctNone ) \t\t\t{\t\/\/ \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0435\u043b\u0451\u043d\u0443\u044e \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0443 \t\t\t\tLED_GREEN_ON; LED_RED_OFF; \t\t\t\t\/\/ \u041a\u0430\u0440\u0442\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438, \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \t\t\t\tState.SDCard.CardType = Card_Init(); \t\t\t\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430? \t\t\t\tif ( State.SDCard.CardType != ctUnknown ) \t\t\t\t{\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u0430\u0440\u0442\u044b \t\t\t\t\tif ( Card_FSInit( &amp;State.SDCard, &amp;CARD_IMAGE[ 0 ] ) == ENABLE ) \t\t\t\t\t{\t\/\/ \u0424\u0430\u0439\u043b\u043e\u0430\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u043f\u043e\u0437\u043d\u0430\u043d\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \t\t\t\t\t\tEXTI-&gt;IMR |= 0x00000004; \t\t\t\t\t\t\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \t\t\t\t\t\tLED_GREEN_OFF; LED_RED_OFF; \t\t\t\t\t} \t\t\t\t\telse \t\t\t\t\t{\t\/\/ \u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u043e\u043f\u043e\u0437\u043d\u0430\u043d\u0430 \t\t\t\t\t\tState.SDCard.CardType = ctUnknown; \t\t\t\t\t\t\/\/ \u0417\u0430\u0436\u0438\u0433\u0430\u0435\u043c \u043e\u0431\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \t\t\t\t\t\tLED_GREEN_ON; LED_RED_ON; \t\t\t\t\t} \t\t\t\t} \t\t\t\telse \t\t\t\t{\t\/\/ \u0417\u0430\u0436\u0438\u0433\u0430\u0435\u043c \u043e\u0431\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \t\t\t\t\tLED_GREEN_ON; LED_RED_ON; \t\t\t\t} \t\t\t} \t\t} \t\telse \t\t{\t\/\/ \u041a\u0430\u0440\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \t\t\tif ( State.SDCard.CardType != ctNone ) \t\t\t{\t\/\/ \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u043b\u0438, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c PSIO \t\t\t\tEXTI-&gt;IMR &amp;= 0xFFFFFFFA; \t\t\t\t\/\/ \u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \t\t\t\tState.PSIO.Mode = mdSync; State.PSIO.Bits = 0; State.PSIO.DataIn = 0x00; State.PSIO.DataOut = 0; State.PSIO.Ack = DISABLE; \t\t\t\tState.MemCard.Status = StateNew; \t\t\t\tState.SDCard.CardType = ctNone; State.SDCard.CardOp = coIdle; State.SDCard.LoadedLBA = 0xFFFFFFFF; \t\t\t} \t\t\t\/\/ \u041f\u043e\u0442\u0443\u0448\u0438\u043c \u043e\u0431\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \t\t\tLED_GREEN_OFF; LED_RED_OFF; \t\t} \t\t\/\/ \u0415\u0441\u043b\u0438 \u043a\u0430\u0440\u0442\u0430 \u0435\u0441\u0442\u044c \t\tif ( (State.SDCard.CardType != ctNone) &amp;&amp; (State.SDCard.CardType != ctUnknown) ) \t\t{\t\/\/ \u0417\u0430\u043a\u0430\u0437\u0430\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c? \t\t\tif ( State.SDCard.CardOp == coWrite ) \t\t\t{\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u043a\u0435 \t\t\t\tOfs = State.MemCard.Sector &amp; 0x03FF; \t\t\t\tLBA = (Ofs &gt;&gt; 2) &amp; 0x000000FF; \t\t\t\tOfs = (Ofs &lt;&lt; 7) &amp; 0x00000180; \t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0432 \u0431\u0443\u0444\u0435\u0440 \t\t\t\tCard_Read( State.SDCard.CardType, &amp;State.SDCard.CardBuf[ 0 ], &amp;State.SDCard.LoadedLBA, State.SDCard.CardList[ LBA ] ); \t\t\t\t\/\/ \u041f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0448 \u0441\u0435\u043a\u0442\u043e\u0440 \t\t\t\tfor (Cnt = 0;Cnt &lt; 128;Cnt++) \t\t\t\t{\t\/\/ \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\t\t\t\tState.SDCard.CardBuf[ Ofs + Cnt ] = State.MemCard.Data[ Cnt ]; \t\t\t\t} \t\t\t\t\/\/ \u041f\u0438\u0448\u0435\u043c \u0441\u0435\u0442\u043e\u0440 \u043d\u0430\u0437\u0430\u0434 \t\t\t\tCard_Write( State.SDCard.CardType, &amp;State.SDCard.CardBuf[ 0 ], &amp;State.SDCard.LoadedLBA, State.SDCard.CardList[ LBA ] ); \t\t\t\t\/\/ \u041f\u043e\u0442\u0443\u0448\u0435\u043c \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0443 \t\t\t\tLED_RED_OFF; \t\t\t\t\/\/ \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \t\t\t\tState.SDCard.CardOp = coIdle; \t\t\t} \t\t\t\/\/ \u0417\u0430\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0442\u0435\u043d\u0438\u0435? \t\t\tif ( State.SDCard.CardOp == coRead ) \t\t\t{\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u043a\u0435 \t\t\t\tOfs = State.MemCard.Sector &amp; 0x03FF; \t\t\t\tLBA = (Ofs &gt;&gt; 2) &amp; 0x000000FF; \t\t\t\tOfs = (Ofs &lt;&lt; 7) &amp; 0x00000180; \t\t\t\t\/\/ \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u0432 \u0431\u0443\u0444\u0435\u0440 \t\t\t\tCard_Read( State.SDCard.CardType, &amp;State.SDCard.CardBuf[ 0 ], &amp;State.SDCard.LoadedLBA, State.SDCard.CardList[ LBA ] ); \t\t\t\t\/\/ \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \t\t\t\tfor (Cnt = 0;Cnt &lt; 128;Cnt++) \t\t\t\t{\t\/\/ \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \t\t\t\t\tState.MemCard.Data[ Cnt ] = State.SDCard.CardBuf[ Ofs + Cnt ]; \t\t\t\t} \t\t\t\t\/\/ \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \t\t\t\tState.SDCard.CardOp = coIdle; \t\t\t} \t\t} \t}<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0412 \u0432\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f SD \u043a\u0430\u0440\u0442\u044b. \u0415\u0441\u043b\u0438 \u0435\u0451 \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u043d\u0430 \u0445\u043e\u0434\u0443, \u0442\u043e \u043a\u043e\u0434 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442 PSIO \u0438 PS1 \u00ab\u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u00bb \u043a\u0430\u0440\u0442\u0443. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043a\u0430\u0440\u0442\u0443 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439), \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 Card_Init(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u0442\u0438\u043f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 SDv1 \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 SDHC\/SDXC \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438. \u0421\u0430\u043c \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043d\u0435 \u043d\u0435\u0441\u0451\u0442 \u0438 \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0432 \u043a\u0443\u0447\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e FatFS \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u043e\u043c \u0437\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0445\u0438\u0442\u0440\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Card_FSInit(). \u042d\u0442\u043e \u2013 \u0441\u0430\u043c\u0430\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u0438\u0448\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e STM32F042 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u0438 \u043f\u043e\u0442\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 FatFS \u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434: \u0444\u0430\u0439\u043b \u043e\u0431\u0440\u0430\u0437\u0430 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 128\u041a\u0438\u0411, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 256 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u043e 512 \u0431\u0430\u0439\u0442, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u043e\u0432\u043d\u043e 4 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 PS1. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ol>\n<li>\u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 LBA=#0 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 MBR. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e MBR, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f MBS.<\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e MBS (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c #0, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 MBR \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0447\u0438\u0441\u043b\u043e, \u0435\u0441\u043b\u0438 MBR \u0435\u0441\u0442\u044c) \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 FAT: FAT12, FAT16, FAT32 \u0438\u043b\u0438 vFAT.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0448\u0451\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0442\u043e \u043c\u044b \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0438\u0449\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u2018MEMCRD00.BIN\u2019.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u2013 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d 0x20000 \u0431\u0430\u0439\u0442. \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430, \u0442\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 LBA \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0433\u0434\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437. \u041f\u0440\u043e\u0431\u0435\u0433\u0430\u044f \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 FAT \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u0437 MBS, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437 256 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 LBA \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432.<\/li>\n<\/ol>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f PSIO \u0438 PS1 \u0443\u0432\u0438\u0434\u0438\u0442 \u0441\u0432\u043e\u044e \u043a\u0430\u0440\u0442\u0443 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0443\u044e. \u0415\u0441\u043b\u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u043b\u0438\u0431\u043e \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0437\u0430\u0433\u043e\u0440\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0434\u043e \u0441\u043d\u044f\u0442\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u044b SD \u043a\u0430\u0440\u0442\u044b. \u0412\u043e\u0442 \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Card_FSInit()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">\/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e FAT16 FunctionalState Card_FSInit( TSDCard *SDCard, const uint8_t *FName ) {\t\/\/ \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \tFunctionalState Res; \tuint8_t *Buf; \tuint8_t Pos; \tuint16_t ClustSize,Reserv,RootSize,FATSize,Cluster; \tuint32_t Cnt,LBA,SysOrg,FATOrg,RootOrg,DataOrg; \tint Compare; \t\/\/ \u0418\u043d\u0438\u0442 \tRes = DISABLE; SysOrg = 0; Cluster = 0xFFFF; \t\/\/ \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \twhile ( 1 ) \t{\t\/\/ \u0412\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 0 \t\tif ( Card_Read( SDCard-&gt;CardType, &amp;SDCard-&gt;CardBuf[ 0 ], &amp;SDCard-&gt;LoadedLBA, SysOrg ) == DISABLE ) { break; } \t\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 #0 \u043d\u0430 MBR \t\tif ( *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x01FE ]) != 0xAA55 ) { break; } \t\t\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 MBR \t\tif ( ((SDCard-&gt;CardBuf[ 0x01BE ] == 0x00) || (SDCard-&gt;CardBuf[ 0x01BE ] == 0x80)) &amp;&amp; \t\t\t ((SDCard-&gt;CardBuf[ 0x01CE ] == 0x00) || (SDCard-&gt;CardBuf[ 0x01CE ] == 0x80)) &amp;&amp; \t\t\t ((SDCard-&gt;CardBuf[ 0x01DE ] == 0x00) || (SDCard-&gt;CardBuf[ 0x01DE ] == 0x80)) &amp;&amp; \t\t\t ((SDCard-&gt;CardBuf[ 0x01EE ] == 0x00) || (SDCard-&gt;CardBuf[ 0x01EE ] == 0x80)) ) \t\t{\t\/\/ \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 MBR, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \t\t\tfor (Cnt = 0;Cnt &lt; 4;Cnt++) \t\t\t{\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \t\t\t\tif ( (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C2 ] == 0x01) ||\t\/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 0x01: FAT12 \t\t\t\t\t (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C2 ] == 0x04) ||\t\/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 0x04: FAT16 \t\t\t\t\t (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C2 ] == 0x06) ||\t\/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 0x06: Big FAT16 \t\t\t\t\t (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C2 ] == 0x0E) )\t\t\/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 0x0E: vFAT \t\t\t\t{\t\/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u043e\u0448\u043b\u0430, \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 MBS \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \t\t\t\t\tSysOrg = SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C6 ]; \t\t\t\t\tSysOrg += (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C7 ] * 0x00000100); \t\t\t\t\tSysOrg += (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C8 ] * 0x00010000); \t\t\t\t\tSysOrg += (SDCard-&gt;CardBuf[ (Cnt * 0x0010) + 0x01C9 ] * 0x01000000); \t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434\u0438\u043c \t\t\t\t\tbreak; \t\t\t\t} \t\t\t} \t\t} \t\t\/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e MBS \t\tif ( Card_Read( SDCard-&gt;CardType, &amp;SDCard-&gt;CardBuf[ 0 ], &amp;SDCard-&gt;LoadedLBA, SysOrg ) == DISABLE ) { break; } \t\t\/\/ \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u043d\u0430 MBS \t\tif ( *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x01FE ]) != 0xAA55 ) { break; } \t\tif ( SDCard-&gt;CardBuf[ 0x000D ] == 0x00 ) { break; } \t\tif ( (SDCard-&gt;CardBuf[ 0x0010 ] == 0x00) || (SDCard-&gt;CardBuf[ 0x0010 ] &gt; 0x02) ) { break; } \t\tif ( SDCard-&gt;CardBuf[ 0x0015 ] != 0xF8 ) { break; } \t\tif ( *((uint32_t *)&amp;SDCard-&gt;CardBuf[ 0x001C ]) != SysOrg ) { break; } \t\tif ( SDCard-&gt;CardBuf[ 0x0026 ] != 0x29 ) { break; } \t\tif ( *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x0036 ]) != 0x4146 ) { break; } \t\tif ( *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x0038 ]) != 0x3154 ) { break; } \t\tif ( SDCard-&gt;CardBuf[ 0x003A ] != 0x36 ) { break; } \t\t\/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \t\tClustSize = SDCard-&gt;CardBuf[ 0x000D ]; \t\tReserv = *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x000E ]); \t\tRootSize = (SDCard-&gt;CardBuf[ 0x0012 ] * 0x0100) + SDCard-&gt;CardBuf[ 0x0011 ]; \t\tFATSize = *((uint16_t *)&amp;SDCard-&gt;CardBuf[ 0x0016 ]); \t\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b FAT \u0438 ROOT \t\tFATOrg = SysOrg + Reserv; \t\tRootOrg = FATOrg + (FATSize * 2); \t\tDataOrg = RootOrg + (RootSize \/ 16 ); \t\t\/\/ \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043f\u043e\u0438\u0441\u043a\u0443 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0438\u043c\u0438\u0434\u0436\u0430 \t\tfor (LBA = 0;LBA &lt; (RootSize \/ 16);LBA++) \t\t{\t\/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \t\t\tif ( Card_Read( SDCard-&gt;CardType, &amp;SDCard-&gt;CardBuf[ 0 ], &amp;SDCard-&gt;LoadedLBA, RootOrg + LBA ) == ENABLE ) \t\t\t{\t\/\/ \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c 16 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0435\u043a\u0442\u043e\u0440\u0435 \t\t\t\tfor (Cnt = 0;Cnt &lt; 16;Cnt++) \t\t\t\t{\t\/\/ \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0438\u043c\u044f \t\t\t\t\tCompare = memcmp( &amp;SDCard-&gt;CardBuf[ Cnt * 32 ], &amp;CARD_IMAGE[ 0 ], 11 ); \t\t\t\t\tif (  Compare == 0 ) \t\t\t\t\t{\t\/\/ \u0424\u0430\u0439\u043b \u043d\u0430\u0439\u0434\u0435\u043d, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \t\t\t\t\t\tif ( *((uint32_t *)&amp;SDCard-&gt;CardBuf[ (Cnt * 32) + 0x001C ]) == 0x00020000 ) \t\t\t\t\t\t{\t\/\/ \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\t\t\t\tCluster = *((uint16_t *)&amp;SDCard-&gt;CardBuf[ (Cnt * 32) + 0x001A ]); \t\t\t\t\t\t\t\/\/ \u0411\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \t\t\t\t\t\t\tRes = ENABLE; \t\t\t\t\t\t\t\/\/ \u0412\u044b\u0445\u043e\u0434\u0438\u043c \t\t\t\t\t\t\tbreak; \t\t\t\t\t\t} \t\t\t\t\t} \t\t\t\t} \t\t\t\t\/\/ \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0430\u0439\u0434\u0435\u043d - \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e \t\t\t\tif ( Res == ENABLE ) { break; } \t\t\t} \t\t\telse \t\t\t{\t\/\/ \u043e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 - \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \t\t\t\tbreak; \t\t\t} \t\t} \t\t\/\/ \u0424\u0430\u0439\u043b \u043d\u0430\u0439\u0434\u0435\u043d, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \t\tif ( Res == ENABLE ) \t\t{\t\/\/ \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0433\u043e\u0442\u043e\u0432\u0438\u043c\u0441\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \t\t\tPos = 0; \t\t\tdo \t\t\t{\t\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\tif ( Cluster &lt; 0x0002 ) \t\t\t\t{\t\/\/ \u041e\u0448\u0438\u0431\u043a\u0430, \u0432\u044b\u0445\u043e\u0434\u0438\u043c \t\t\t\t\tRes = DISABLE; break; \t\t\t\t} \t\t\t\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c LBA \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\tLBA = DataOrg + ((Cluster - 2) * ClustSize); \t\t\t\t\/\/ \u0412 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \t\t\t\tfor (Cnt = 0;Cnt &lt; ClustSize;Cnt++) \t\t\t\t{\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c LBA \u0441\u0435\u043a\u0442\u0440\u043e\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\t\tSDCard-&gt;CardList[ Pos ] = LBA + Cnt; \t\t\t\t\t\/\/ \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \t\t\t\t\tPos++; if ( Pos == 0 ) { break; } \t\t\t\t} \t\t\t\t\/\/ \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\t\/\/ \u0410 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u043a\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \t\t\t\tif ( Pos != 0 ) \t\t\t\t{\t\/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\t\tLBA = FATOrg; Reserv = Cluster; \t\t\t\t\twhile ( Reserv &gt; 256 ) { LBA++; Reserv -= 256; } \t\t\t\t\t\/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0441\u0435\u043a\u0442\u043e\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \t\t\t\t\tif ( Card_Read( SDCard-&gt;CardType, &amp;SDCard-&gt;CardBuf[ 0 ], &amp;SDCard-&gt;LoadedLBA, LBA ) == ENABLE ) \t\t\t\t\t{\t\/\/ \u0417\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \t\t\t\t\t\tCluster = *((uint16_t *)&amp;SDCard-&gt;CardBuf[ Reserv * 2 ]); \t\t\t\t\t} \t\t\t\t\telse \t\t\t\t\t{\t\/\/ \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \t\t\t\t\t\tRes = DISABLE; break; \t\t\t\t\t} \t\t\t\t} \t\t\t} while ( (Cluster != 0xFFFF) &amp;&amp; (Pos != 0) ); \t\t} \t\t\/\/ \u0412\u044b\u0445\u043e\u0434 \t\tbreak; \t} \t\/\/ \u0412\u044b\u0445\u043e\u0434 \treturn Res; }<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0421\u043a\u0430\u0436\u0443 \u0447\u0435\u0441\u0442\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c PoC, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e\u0438\u0441\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0443 FAT16. FAT12, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u2013 microSD \u0442\u0430\u043a\u0438\u0445 \u043c\u0430\u043b\u044b\u0445 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442. \u0410 \u0432\u043e\u0442 FAT32 \u0438\u043b\u0438 vFAT \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p>  \u0418\u043c\u044f \u043e\u0431\u0440\u0430\u0437\u0430 \u2018MEMCRD00.BIN\u2019 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u043e\u0431\u0440\u0430\u0437\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043a\u0430\u0440\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u0435: \u043f\u0440\u0438 \u0437\u0430\u0436\u0430\u0442\u043e\u043c SELECT \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043d\u0430 L1\/R1. \u0418 \u043c\u0435\u043d\u044f\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c 100 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043e\u0442 \u2018MEMCRD00.BIN\u2019 \u0434\u043e \u2018MEMCRD99.BIN\u2019. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0435\u043b \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e <b>SCK<\/b> \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 PSIO, \u0432\u0435\u0442\u043a\u0430 \u0433\u0434\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0434\u0436\u043e\u0439\u043f\u0430\u0434\u0443. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u0444\u0444\u0435\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0442, \u043d\u043e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0443 PS1 \u0431\u043e\u0433\u0430\u0442\u0430\u044f \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0445 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442. <a href=\"https:\/\/github.com\/HardWrMan\/PS1MemoryCard\" rel=\"nofollow noopener noreferrer\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u0443\u0442.<\/a> \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0441\u0435\u043c \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  P.S. \u042f \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u043e \u0443\u0432\u044b \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041c\u043d\u043e\u0433\u043e\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0441\u043b\u0443\u0448\u0430\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u041a\u043e\u0435-\u0447\u0442\u043e \u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u0432\u0438\u0434\u0435 TXT \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043e\u0431\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u043e PS1 \u0431\u043e\u043b\u0435\u0435 15 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440. \u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u043c\u043e\u0451\u043c \u0436\u0451\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435. \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0438\u043b \u0432\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 15 \u043b\u0435\u0442.<\/p><\/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\/553842\/\"> https:\/\/habr.com\/ru\/post\/553842\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/510\/d6f\/9c8\/510d6f9c85df5173f1af7d6005862f2c.jpg\"><br \/>  PS1 (\u043e\u043d\u0430 \u0436\u0435 PSX, \u043e\u043d\u0430 \u0436\u0435 PS One) \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 PlayStation \u043e\u0442 Sony \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u044f\u0442\u043e\u043c\u0443 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044e \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0432\u043e\u043e\u0431\u0449\u0435. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 2\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u043e\u0434 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f CD. \u0422\u0430\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043c\u0435\u0440\u043a\u0430\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0438\u0433\u0440\u043e\u0434\u0435\u043b\u0430\u043c \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0438\u0433\u0440, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0433\u0440\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a. \u0410 \u0435\u0449\u0451, \u0438\u0433\u0440\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438. \u0418 \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u0438\u0433\u0440\u0430 \u0437\u0430 \u0440\u0435\u0434\u043a\u0438\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044f\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u0430 \u0437\u0430 \u043e\u0434\u043d\u0443 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e, \u0442\u043e \u0441 \u0438\u0433\u0440\u0430\u043c\u0438 PS1 \u0432\u0441\u0451 \u043e\u0431\u0441\u0442\u043e\u044f\u043b\u043e \u0438\u043d\u0430\u0447\u0435. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430 \u0443 PlayStation \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438: \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 PlayStation 1, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\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-321926","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/321926","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=321926"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/321926\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=321926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=321926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=321926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}