добавил инициализацию флоппи-приводов, чтобы они физически возвращались на парковку при сбросе процессора
This commit is contained in:
parent
709ae5ef4f
commit
b3b04f5714
@ -6,6 +6,11 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Функция инициализации флоппи-приводов, нужно вызывать после запуска таймера тактирования и перед запуском таймера мелодии
|
||||||
|
*/
|
||||||
|
void FloppyDriveInitialize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Функция, вызываемая в прерывании таймера несущей частоты
|
* Функция, вызываемая в прерывании таймера несущей частоты
|
||||||
*/
|
*/
|
||||||
|
@ -13,6 +13,7 @@ public:
|
|||||||
uint16_t top = 0; // верхнее значение таймера
|
uint16_t top = 0; // верхнее значение таймера
|
||||||
uint16_t curr_step = 0; // текущий шаг флоппи привода
|
uint16_t curr_step = 0; // текущий шаг флоппи привода
|
||||||
bool isStarted = false; // запущен ли таймер
|
bool isStarted = false; // запущен ли таймер
|
||||||
|
bool isInitialization = false; // режим инициализации, нужен чтобы отодвинуть флоппи привод на нулевую позицию
|
||||||
|
|
||||||
GPIO_TypeDef* gpio{};
|
GPIO_TypeDef* gpio{};
|
||||||
const uint16_t gpioDirBit{}; // бит ноги GPIO для подключения к Floppy::DIR
|
const uint16_t gpioDirBit{}; // бит ноги GPIO для подключения к Floppy::DIR
|
||||||
@ -24,29 +25,56 @@ public:
|
|||||||
top = FLOPPOTRON_SOUND_FREQ / freq;
|
top = FLOPPOTRON_SOUND_FREQ / freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setInitializationMode() {
|
||||||
|
isInitialization = true;
|
||||||
|
isStarted = true;
|
||||||
|
}
|
||||||
|
|
||||||
void setEnable(bool en) {
|
void setEnable(bool en) {
|
||||||
isStarted = en;
|
isStarted = en;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tick() {
|
void tick() {
|
||||||
if (isStarted) {
|
if (isStarted) {
|
||||||
cnt++;
|
if (isInitialization) {
|
||||||
if (cnt >= top) {
|
cnt++;
|
||||||
cnt = 0;
|
if (cnt >= FLOPPOTRON_SOUND_FREQ / 500) {
|
||||||
curr_step++;
|
// направление выставляем сразу
|
||||||
if (curr_step >= FLOPPOTRON_MAX_STEPS) {
|
gpio->ODR |= gpioDirBit;
|
||||||
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;
|
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 {
|
} else {
|
||||||
@ -79,110 +107,194 @@ void FloppySoundTickHandler() {
|
|||||||
#define FT_CMD_MASK 0xF000
|
#define FT_CMD_MASK 0xF000
|
||||||
|
|
||||||
|
|
||||||
|
void FloppyDriveInitialize() {
|
||||||
|
for (auto& d:drives) {
|
||||||
|
d.setInitializationMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& d:drives) {
|
||||||
|
// ожидание завершения инициализации
|
||||||
|
while (d.isInitialization) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// хандлер для проигрывания нот
|
// хандлер для проигрывания нот
|
||||||
void FloppyTrackTick() {
|
void FloppyTrackTick() {
|
||||||
// байткод для 100bpm, тестовая мелодия
|
// байткод для 100bpm, тестовая мелодия
|
||||||
const static uint16_t bytecode[] = {
|
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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_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_ON | 1, FT_CMD_SET_FRQ1 | 165, FT_CMD_WAIT | 50, // '3'
|
||||||
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 | 196, FT_CMD_WAIT | 50, // '5'
|
// 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 | 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 | 196, FT_CMD_WAIT | 50, // '5'
|
||||||
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 | 247, FT_CMD_WAIT | 50, // '7'
|
// 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 | 262, FT_CMD_WAIT | 50, // '1''
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7'
|
// 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_OFF | 3, FT_CMD_WAIT | 50, // ' '
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2'
|
// 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_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 | 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 | 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 | 174, FT_CMD_WAIT | 50, // '4'
|
||||||
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 | 196, FT_CMD_WAIT | 50, // '5'
|
// 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 | 220, FT_CMD_WAIT | 50, // '6'
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5'
|
// 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_OFF | 3, FT_CMD_WAIT | 50, // ' '
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2'
|
// 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_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 | 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 | 165, FT_CMD_WAIT | 50, // '3'
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4'
|
// 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_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 | 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 | 262, FT_CMD_WAIT | 50, // '1''
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 247, FT_CMD_WAIT | 50, // '7'
|
// 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_OFF | 3, FT_CMD_WAIT | 50, // ' '
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 147, FT_CMD_WAIT | 50, // '2'
|
// 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_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 | 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 | 165, FT_CMD_WAIT | 50, // '3'
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 174, FT_CMD_WAIT | 50, // '4'
|
// 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_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 | 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 | 220, FT_CMD_WAIT | 50, // '6'
|
||||||
FT_CMD_NOTES_ON | 1, FT_CMD_SET_FRQ1 | 196, FT_CMD_WAIT | 50, // '5'
|
// 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_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_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1'
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' '
|
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 | 25, // '3'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' '
|
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 | 25, // '3'
|
FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1'
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' '
|
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 | 25, // '1'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' '
|
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 | 25, // '5'
|
FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1'
|
||||||
FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 165, FT_CMD_SET_FRQ2 | 165, FT_CMD_WAIT | 25, // '3'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 25, // ' '
|
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 | 25, // '1'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
FT_CMD_WAIT | 25, // '_'
|
FT_CMD_NOTES_OFF | 3, FT_CMD_WAIT | 10, // ' '
|
||||||
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 | 10, // '1'
|
||||||
FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 196, FT_CMD_SET_FRQ2 | 196, FT_CMD_WAIT | 25, // '5'
|
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 | 25, // '3'
|
FT_CMD_NOTES_ON | 3, FT_CMD_SET_FRQ1 | 131, FT_CMD_SET_FRQ2 | 131, FT_CMD_WAIT | 10, // '1'
|
||||||
FT_CMD_WAIT | 25, // '_'
|
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_NOTES_OFF | 3, FT_CMD_WAIT | 500,
|
||||||
FT_CMD_STOP
|
FT_CMD_STOP
|
||||||
|
@ -96,6 +96,9 @@ int main(void)
|
|||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
HAL_TIM_Base_Start_IT(&htim4);
|
HAL_TIM_Base_Start_IT(&htim4);
|
||||||
|
|
||||||
|
FloppyDriveInitialize();
|
||||||
|
|
||||||
HAL_TIM_Base_Start_IT(&htim3);
|
HAL_TIM_Base_Start_IT(&htim3);
|
||||||
|
|
||||||
/* USER CODE END 2 */
|
/* USER CODE END 2 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user