добавил инициализацию флоппи-приводов, чтобы они физически возвращались на парковку при сбросе процессора

This commit is contained in:
VladislavOstapov 2023-11-02 14:48:19 +03:00
parent 709ae5ef4f
commit b3b04f5714
3 changed files with 234 additions and 114 deletions

View File

@ -6,6 +6,11 @@
extern "C" {
#endif
/**
* Функция инициализации флоппи-приводов, нужно вызывать после запуска таймера тактирования и перед запуском таймера мелодии
*/
void FloppyDriveInitialize();
/**
* Функция, вызываемая в прерывании таймера несущей частоты
*/

View File

@ -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

View File

@ -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 */