From b3b04f5714f5fc529e4974a34834ccb2ec3b1959 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Thu, 2 Nov 2023 14:48:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8E=20=D1=84=D0=BB=D0=BE=D0=BF=D0=BF=D0=B8-?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=B2=D0=BE=D0=B4=D0=BE=D0=B2,=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=D1=8B=20=D0=BE=D0=BD=D0=B8=20=D1=84=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=BB=D0=B8=D1=81=D1=8C=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=B0=D1=80=D0=BA=D0=BE=D0=B2=D0=BA=D1=83=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D1=81=D0=B1=D1=80=D0=BE=D1=81=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Inc/floppy.h | 5 + Core/Src/floppy.cpp | 340 +++++++++++++++++++++++++++++--------------- Core/Src/main.c | 3 + 3 files changed, 234 insertions(+), 114 deletions(-) diff --git a/Core/Inc/floppy.h b/Core/Inc/floppy.h index 860ff3e..0dd449f 100644 --- a/Core/Inc/floppy.h +++ b/Core/Inc/floppy.h @@ -6,6 +6,11 @@ extern "C" { #endif + /** + * Функция инициализации флоппи-приводов, нужно вызывать после запуска таймера тактирования и перед запуском таймера мелодии + */ + void FloppyDriveInitialize(); + /** * Функция, вызываемая в прерывании таймера несущей частоты */ diff --git a/Core/Src/floppy.cpp b/Core/Src/floppy.cpp index 1a2ce88..354c260 100644 --- a/Core/Src/floppy.cpp +++ b/Core/Src/floppy.cpp @@ -13,6 +13,7 @@ public: uint16_t top = 0; // верхнее значение таймера uint16_t curr_step = 0; // текущий шаг флоппи привода bool isStarted = false; // запущен ли таймер + bool isInitialization = false; // режим инициализации, нужен чтобы отодвинуть флоппи привод на нулевую позицию GPIO_TypeDef* gpio{}; const uint16_t gpioDirBit{}; // бит ноги GPIO для подключения к Floppy::DIR @@ -24,29 +25,56 @@ public: top = FLOPPOTRON_SOUND_FREQ / freq; } + void setInitializationMode() { + isInitialization = true; + isStarted = true; + } + void setEnable(bool en) { isStarted = en; } void tick() { if (isStarted) { - cnt++; - if (cnt >= top) { - cnt = 0; - curr_step++; - if (curr_step >= FLOPPOTRON_MAX_STEPS) { - curr_step = 0; - } - if (curr_step & 1) { - // нечетные шаги, это тик направления - if (curr_step < FLOPPOTRON_MAX_STEPS / 2) { - gpio->ODR |= gpioDirBit; - } else { - gpio->ODR &= ~gpioDirBit; - } - } else { - // четные шаги, это шаги мотора + if (isInitialization) { + cnt++; + if (cnt >= FLOPPOTRON_SOUND_FREQ / 500) { + // направление выставляем сразу + gpio->ODR |= gpioDirBit; + + // и дергаем ногой gpio->ODR ^= gpioStepBit; + + cnt = 0; + + curr_step++; + + if (curr_step >= FLOPPOTRON_MAX_STEPS) { + // инициализация завершена + curr_step = 0; + isInitialization = false; + isStarted = false; + } + } + } else { + cnt++; + if (cnt >= top) { + cnt = 0; + curr_step++; + if (curr_step >= FLOPPOTRON_MAX_STEPS) { + curr_step = 0; + } + if (curr_step & 1) { + // нечетные шаги, это тик направления + if (curr_step < FLOPPOTRON_MAX_STEPS / 2) { + gpio->ODR &= ~gpioDirBit; + } else { + gpio->ODR |= gpioDirBit; + } + } else { + // четные шаги, это шаги мотора + gpio->ODR ^= gpioStepBit; + } } } } else { @@ -79,110 +107,194 @@ void FloppySoundTickHandler() { #define FT_CMD_MASK 0xF000 +void FloppyDriveInitialize() { + for (auto& d:drives) { + d.setInitializationMode(); + } + + for (auto& d:drives) { + // ожидание завершения инициализации + while (d.isInitialization) {} + } +} + + // хандлер для проигрывания нот void FloppyTrackTick() { // байткод для 100bpm, тестовая мелодия const static uint16_t bytecode[] = { - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 262, FT_CMD_WAIT | 50, // '1'' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 262, FT_CMD_WAIT | 50, // '1'' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' - FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' - - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 500, +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 262, FT_CMD_WAIT | 50, // '1'' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 262, FT_CMD_WAIT | 50, // '1'' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4' +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 50, // ' ' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 220, FT_CMD_WAIT | 50, // '6' +// FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5' +// +// FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 500, // недо-имперский марш - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 25, // '1' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 196, FT_CMD_SET_FRQ2 | 196, FT_CMD_WAIT | 25, // '5' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 25, // '1' - FT_CMD_WAIT | 25, // '_' - FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' ' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 196, FT_CMD_SET_FRQ2 | 196, FT_CMD_WAIT | 25, // '5' - FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3' - FT_CMD_WAIT | 25, // '_' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 10, // '3' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 10, // '3' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 10, // '3' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 196, FT_CMD_SET_FRQ2 | 196, FT_CMD_WAIT | 10, // '5' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 10, // '3' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 196, FT_CMD_SET_FRQ2 | 196, FT_CMD_WAIT | 10, // '5' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 10, // '3' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_WAIT | 10, // '_' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' + FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' ' FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 500, FT_CMD_STOP diff --git a/Core/Src/main.c b/Core/Src/main.c index f5a6b4d..44d1fbf 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -96,6 +96,9 @@ int main(void) /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim4); + + FloppyDriveInitialize(); + HAL_TIM_Base_Start_IT(&htim3); /* USER CODE END 2 */