diff --git a/README.md b/README.md index 23ba3bc..b1134bb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,126 @@ -Δβΰ ςπΈυσπξβνεβϋυ θνβεπςξπΰ οθςΰώς δβσυξαμξςξχνϋι ΰρθνυπξννϋι δβθγΰςελό. +# MATLAB 23550 + **Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•** +- [ΠžΠ±Ρ‰Π°Ρ структура симулятора](#общая-структура-симулятора) +- [ОписаниС стуктуры симулятора](#описаниС-стуктуры-симулятора) + - [ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° МК](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΌΠΊ) + - [ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) + - [Код ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ](#ΠΊΠΎΠ΄-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) + - [Бимуляция ΠΏΠ»Π°Ρ‚](#симуляция-ΠΏΠ»Π°Ρ‚) +- [Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ](#инструкция) + - [ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°](#ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅-ΠΊΠΎΠ΄Π°) + - [Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄](#ΠΊΠ°ΠΊ-ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ-ΠΊΠΎΠ΄) + - [Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ](#ΠΊΠ°ΠΊ-Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ-ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ) + - [Ошибки ΠΏΡ€ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ](#ошибки) +## ΠžΠ±Ρ‰Π°Ρ структура симулятора +Код для компиляции S-Function Π»Π΅ΠΆΠΈΡ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅ ***Inu***. Π’ Π½Π΅ΠΉ содСрТатся: +- **ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° МК ([Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΡ€Π½Π΅](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΌΠΊ))**: ΠΊΠΎΠ΄ S-Function, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ +- **ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ([_app_wrapper_](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹))**: связываСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ S-Function +- **ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° МК ([_Src_](#ΠΊΠΎΠ΄-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ))**: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для симуляции +- **Бимуляция ΠΏΠ»Π°Ρ‚ (beta) ([_xilinx_wrapper_](#симуляция-ΠΏΠ»Π°Ρ‚))**: ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ внСшниС ΠΏΠ»Π°Ρ‚Ρ‹ (ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ШИМ) + +Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° структура симулятора. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ для портирования Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² MATLAB ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° [Π½ΠΈΠΆΠ΅](#инструкция) + +## ОписаниС стуктуры симулятора +Π—Π΄Π΅ΡΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΡŒΡΡ описаниС Ρ‚Ρ€Π΅Ρ… Π±Π»ΠΎΠΊΠΎΠ² симулятора: +- [ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° МК](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΌΠΊ) +- [ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) +- [Код ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ](#ΠΊΠΎΠ΄-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) +- [Бимуляция ΠΏΠ»Π°Ρ‚ (beta)](#симуляция-ΠΏΠ»Π°Ρ‚) + +### ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° МК +Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΡŒΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° (Π°Π½Π³Π». wrapper) для запуска ΠΈ контроля симуляции ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π² MATLAB (любого МК, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TMS). ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° прСдставляСт собой S-Function - Π±Π»ΠΎΠΊ Π² Simulink, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ скомпилированому ΠΊΠΎΠ΄Ρƒ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MSVC-компилятора. + +S-Function Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π½Π° шагС `n` ΠΎΠ½Π° запускаСт скомпилированный ΠΊΠΎΠ΄ ΠΈ ΠΆΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ° этот ΠΊΠΎΠ΄ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ. Волько ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, S-Function ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг `n+1`. + +Но ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° МК это бСсконСчный Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ нСсколько особСнностСй Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ S-Function: +- Для симуляции создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МК. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ запускаСтся Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ шага симуляции, выполняСтся ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя, Π° ΠΏΠΎΡ‚ΠΎΠΌ приостанавливаСтся. Π­Ρ‚ΠΎ позволяСт ΠΊΠΎΠ΄Ρƒ S-Function Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг. +- НСобходимо Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МК Π² ΠΊΠΎΠ½Ρ†Π΅ симуляции. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ особый Π΄Π΅Ρ„Π°ΠΉΠ½ для while. Π­Ρ‚ΠΎΡ‚ Π΄Π΅Ρ„Π°ΠΉΠ½ ΠΏΠΎΠΌΠΈΠΌΠΎ условия while, провСряСт условиС окончания симуляции. И Ссли ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ Π½Π°Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ, всС бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ `while()` ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `main()` ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ сСбя. + +ВсСго ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° содСрТит 4 Ρ„Π°ΠΉΠ»Π°: +- ***mcu_wrapper.c***     - ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΊΠΎΠ΄ МК ΠΈ симулируСт ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡŽ. Π’ Π½Π΅ΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для запуска/остановки ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МК, считывании Π²Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ запись Π²Ρ…ΠΎΠ΄ΠΎΠ² S-Function. +- ***MCU.c***          - ΠΊΠΎΠ΄ для компиляции S-Function Π² MATLAB. Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ***mcu_wrapper.c*** +- ***mcu_wrapper_conf.h***   - ΠΎΠ±Ρ‰ΠΈΠΉ для ***mcu_wrapper.c*** ΠΈ ***MCU.c*** Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ настройки для Π±Π»ΠΎΠΊΠ° S-Function, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½Ρ‹ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МК. +- ***run_mex.bat***       - скрипт для компиляции ΠΊΠΎΠ΄Π° компилятором MSVC. Π’ Π½Π΅ΠΌ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚ΠΈ для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ***.h***, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π° ***.c*** ΠΈ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π΅Ρ„Π°ΠΉΠ½Ρ‹ для компиляции. + +ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ: +- `RUN_APP_MAIN_FUNC_THREAD` - созданиС ΠΈ запуск ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° для main() +- `DEKSTOP_CYCLES_FOR_MCU_APP` - количСство Ρ†ΠΈΠΊΠ»ΠΎΠ² пустого for(;;), Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ main() +- `MCU_CORE_CLOCK` - частота симулируСмого процСссора (ΠΏΠΎΠΊΠ° Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ) +- `IN_PORT_WIDTH` - Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° S-Function +- `IN_PORT_NUMB` - количСство Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² S-Function +- `OUT_PORT_WIDTH` - Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° S-Function +- `OUT_PORT_NUMB` - количСство Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² S-Function + +_Note: Π΄Π΅Ρ„Π°ΠΉΠ½ `RUN_APP_MAIN_FUNC_THREAD` ΠΏΠΎΠΊΠ° Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ для main() Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ)_ + +_Note for future: Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚_ + +### ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ +ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ позволяСт ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Она ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‘, запускаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ связываСт Π΅Ρ‘ с Π²Ρ…ΠΎΠ΄Π°ΠΌΠΈ/Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌΠΈ S-Function + +НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ всСх Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹: +- ***app_includes.h***     - Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ARM Π΄Π΅Ρ„Π°ΠΉΠ½Ρ‹ для компиляции Π² MSVC. +- ***app_init.c/.h***      - инициализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ +- ***app_io.c/.h***        - запись/считываниС Π²Ρ…ΠΎΠ΄ΠΎΠ²/Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² S-Function Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ +- ***app_wrapper.c/.h***      - Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ созданиС Π·Π°Π³Π»ΡƒΡˆΠ΅ΠΊ для Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ +- ***def.h***          - Π΄Π΅Ρ„Π°ΠΉΠ½Ρ‹ для симуляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² симулинкС (ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΎΡ‚ улитковского) + +Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ ***\app_wrapper\device_support*** Π½Π°Ρ…ΠΎΠ΄ΡΡ‚ΡŒΡΡ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для TMS, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ компилятор MSVC (ΡƒΠ΄Π°Π»Π΅Π½ `volatile`, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ для `interrupt`, `asm`, `cregister`, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎΠ΄ для симуляции IQlib). + +### Код ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ +Данная ΠΏΠ°ΠΏΠΊΠ° содСрТит исходный ΠΊΠΎΠ΄ прилоТСния МК. ΠŸΡ€ΠΈ этом стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² слСдуСт ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² [ΠΏΠ°ΠΏΠΊΡƒ с ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходники ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. + +### Бимуляция ΠΏΠ»Π°Ρ‚ +ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π² этой ΠΏΠ°ΠΏΠΊΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ внСшниС ΠΏΠ»Π°Ρ‚Ρ‹. Пока Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ сдСлан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ШИМ, Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ планируСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΡ… Π² ΠΎΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ S-Function. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹. + +###### adc_sim +***adc_sim.c/.h*** - симуляция АЦП (ΠΏΠΎΠΊΠ° просто Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°) + +###### pwm_sim +***pwm_sim.c/.h*** - симуляция ШИМ +ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° Ρ€Π΅ΠΆΠΈΠΌΡ‹ формирования ШИМ: +- для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ (PWM_SIMULATION_MODE_REGULAR_PWM) +- Ρ‡Π΅Ρ€Π΅Π· Π»ΠΈΠ½ΠΈΠΈ ВК для всСй Ρ„Π°Π·Ρ‹ Ρ€Π°Π·ΠΎΠΌ (PWM_SIMULATION_MODE_TK_LINES). + + +## Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ +ΠžΠ±Ρ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ портирования ΠΊΠΎΠ΄Π° для симуляции Π² MATLAB ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅. Π’ инструкции Π΅ΡΡ‚ΡŒ ссылки Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС дСйствий. +1. [ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для MATLAB](#ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅-ΠΊΠΎΠ΄Π°) (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с портирования Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π΄Π°Π»Π΅Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ шага 2) +2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ [ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡŒΡΡ Π»ΠΈ ΠΊΠΎΠ΄](#ΠΊΠ°ΠΊ-ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ-ΠΊΠΎΠ΄). А Π΄Π°Π»Π΅Π΅: + - Ссли Π΅ΡΡ‚ΡŒ ошибки ΠΏΡ€ΠΈ компиляции, [ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ…](#ошибки-ΠΏΡ€ΠΈ-компиляции) ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° шаг 2. + - Ссли ошибок Π½Π΅Ρ‚, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° шаг 3. +3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π»ΠΈ запускаСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ симуляция с МК. А Π΄Π°Π»Π΅Π΅: + - Ссли симуляции Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ [ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки](#ошибки-ΠΏΡ€ΠΈ-симуляции) Π² [Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ](#ΠΊΠ°ΠΊ-Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ-ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ) ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° шаг 3. + - Ссли симуляция Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ»ΠΈ Π½Π΅ запускаСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ [ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки](#ошибки-ΠΏΡ€ΠΈ-симуляции) Π² [Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ](#ΠΊΠ°ΠΊ-Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ-ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ) ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π° шаг 3. + - Ссли симуляция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½Π΅ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΈ пСрСзапускаСтся, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° шаг 4. +4. ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ симуляции. А Π΄Π°Π»Π΅Π΅: + - Ссли симуляция сходится с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ - Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. + - Ссли Π½Π΅Ρ‚ - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΈ послС ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° шаг 2. + +#### ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° +Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ для удобства. НапримСр Π² "***\Src***". + +Π”Π°Π»Π΅Π΅ Π² "[run_bat.mex](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΌΠΊ)" Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (***\Includes***) ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для симуляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ исходники. ВсС Ρ„Π°ΠΉΠ»Ρ‹ исходников "***.c***" ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ, ΠΈ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибок ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ исходники. + +#### Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ +Для компиляции ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ***mexing.m***. Π­Ρ‚ΠΎ MATLAB-скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт скрипт "[***run_bat.mex***](#ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°-ΠΌΠΊ)" для компиляции. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ компиляции ΠΊΠΎΠ΄Π° для [ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ](#ΠΊΠ°ΠΊ-Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ-ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ) + +#### Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ +Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ симуляции Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ***mexing.m*** Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ***run_mex.bat*** слово `debug`, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ скомпилируСтся для Π΄Π΅Π±Π°Π³Π°. ПослС этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Visual Studio, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ρ‚Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ всС исходники ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ симулятора). И ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ***MATLAB.exe***. + +Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² исходном ΠΊΠΎΠ΄Π΅ симулятора ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ МК ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ. Когда MATLAB Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ этого мСста, симуляция ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ Π² Visual Studio ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΊΠΎΠ΄ ΠΏΠΎ строкам ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. + +Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ процСссу, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Ρ€Π°Π±ΠΎΠ°Ρ‚Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ запускС симуляции остановки Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. + + +#### Ошибки +##### Ошибки ΠΏΡ€ΠΈ компиляции +Π‘Π°ΠΌΡ‹Π΅ распространСныС ошибки компилятора ΠΏΡ€ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° - это ошибки ΠΈΠ·-Π·Π° Π½Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… исходных Ρ„Π°ΠΉΠ»ΠΎΠ². Для исправлСния ошибок Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. + +Π’Π°ΠΊΠΆΠ΅ Π΅Ρ‰Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ошибки связанныС с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ компиляторами ΠΈ отсутствия ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов Π² MSVC, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ошибки с `volatile`, `interrupt`, `asm`... Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… DPS. Для исправлСния ошибок Π½Π°Π΄ΠΎ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для Π½ΠΈΡ… Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ-define + +##### Ошибки ΠΏΡ€ΠΈ симуляции +ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΏΠΎ нСдоступному адрСсу. Надо Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ строкС ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ адрСсу ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° чтСния ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ адрСсу Π½Π°Π΄ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. И послС этого ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ адрСс брался ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ. + +Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€. `ReadMemory`/`WriteMemory` ΠΊΠΎΠ³Π΄Π° ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎ адрСссам "Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ" ΡˆΠΈΠ½Ρ‹) \ No newline at end of file