Чт май 07, 2020 13:17:56
Ser1961 писал(а):А подскажите,почему листать файл и блок в разные стороны?
Пт май 08, 2020 13:23:23
Пт май 08, 2020 18:01:49
Пт май 08, 2020 21:35:51
Пт май 08, 2020 22:14:05
С настоящего магнитофона еще подбери уровень сигнала.
Пт май 08, 2020 23:32:16
Пт май 08, 2020 23:50:08
Во-первых, не регулируется контраст
Сб май 09, 2020 10:26:43
Сб май 09, 2020 10:59:19
Сб май 09, 2020 11:34:41
da-nie писал(а):Взял я stm32f103c8t6 - всеми любимую китайскую плату.
Сб май 09, 2020 12:33:57
Получится конкурент TzxDuino
Вот только не понял, зачем там два буфера К561ПУ4?
загрузить имеющуюся у меня амигу 500
Вс июн 28, 2020 00:15:55
Вс июн 28, 2020 10:27:16
А тест такой нудный/долгий специально оставили или по ошибке?
Ошибка, которая устойчиво воспроизводилась и о которой я сообщал вот здесь
Пауза во время воспроизведения по кнопке CENTER, с какой целью сделана? Каково практическое применение этой фичи?
По логике это сообщение должно быть между п.2 и п.3.
то сообщения о том, что на карте нет TAP файлов мы не получим и при этом на карте не будет ни одного TAP файла.
Вс июн 28, 2020 18:35:57
Пауза во время воспроизведения по кнопке CENTER, с какой целью сделана? Каково практическое применение этой фичи?
//----------
// Запуск образа
//----------
void OutputImage(void)
{
_delay_ms(500);
// повторяем для каждого блока tap-файла
uint16_t block=0;
while(1)
{
if (FAT_WriteBlock(&BlockSize,block)==false) break; // блоки файла закончились
// выводим номер блока файла
sprintf(String,"Block:%u [%u]",block+1,BlockSize);
WH1602_SetTextUpLine(String);
// запускаем таймер и регенерируем память
TCNT0=0; // начальное значение таймера
LeadToneCounter=6000<<Speed;
TapeOutMode=TAPE_OUT_LEAD;
TapeOutVolume=false;
DataCounter=0;
uint16_t dl=0;
sei();
while(1)
{
cli();
DRAM_Refresh();
if (TapeOutMode==TAPE_OUT_STOP)
{
sprintf(String,"Block:%u [0]",block+1);
WH1602_SetTextUpLine(String);
uint16_t new_block=block+1;
//формируем паузу
int delay=200;
if (BlockSize>0x13) delay=500; // файл передавался
for(uint16_t n=0;n<delay;n++)
{
_delay_ms(10);
if (BUTTON_SELECT_PIN&(1<<BUTTON_SELECT)) // SELECT - выход
{
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
return;
}
if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER)) // CENTER - пауза
{
_delay_ms(200);
sprintf(String,"Block:%u [Pause]",block+1); // [PAUSE]
WH1602_SetTextUpLine(String);
while(1)
{
// нажатие на CENTER во время PAUSE - продолжить воспроизведение
if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER))
{
sprintf(String,"Block:%u [Play]",block+1); // [PLAY]
WH1602_SetTextUpLine(String);
break;
}
}
_delay_ms(200);
}
/////////////////////////////////////////////////////////////////////////////////////
// зачем этот код, что делает эмулятор при нажатии UP, DOWN во время паузы?
/*if (BUTTON_UP_PIN&(1<<BUTTON_UP)) // UP - на блок назад
{
_delay_ms(200);
if (block>0) new_block=block-1;
break;
}
if (BUTTON_DOWN_PIN&(1<<BUTTON_DOWN)) // DOWN - на блок вперёд
{
_delay_ms(200);
new_block=block+1;
break;
}*/
/////////////////////////////////////////////////////////////////////////////////////
}
block=new_block;
break;
}
uint16_t dc=BlockSize-DataCounter;
uint16_t tm=TapeOutMode;
sei();
if (tm==TAPE_OUT_DATA)
{
if (dl==30000)
{
sprintf(String,"Block:%u [%u]",block+1,dc);
WH1602_SetTextUpLine(String);
dl=0;
}
else dl++;
}
_delay_us(10);
if (BUTTON_SELECT_PIN&(1<<BUTTON_SELECT)) // SELECT - выход
{
cli();
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
return;
}
////////////////////////////////////////////////////////////////////////////
// зачем нужна остановка во вреся воспроизведения??
//
/*if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER)) // CENTER - пауза
{
cli();
_delay_ms(200);
while(1)
{
if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER)) break; // продолжить воспроизведение
}
sei();
_delay_ms(200);
}*/
////////////////////////////////////////////////////////////////////////////
if (BUTTON_UP_PIN&(1<<BUTTON_UP)) // UP - на блок назад
{
_delay_ms(200);
if (block>0) block--;
break;
}
if (BUTTON_DOWN_PIN&(1<<BUTTON_DOWN)) // DOWN - на блок вперёд
{
_delay_ms(200);
block++;
break;
}
}
cli();
}
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
}
Вт июн 30, 2020 20:18:36
1. Тогда может быть избавится от этого побочного эффекта, а заодно отображать на дисплее изменение состояния эмулятора (Pause/Play)?
А заодно удалить кусок кода обрабатывающий нажатие кнопок UP, DOWN во время паузы между блоками? Кстати, какой функционал задумывался на эти нажатия кнопок?
Вт июн 30, 2020 23:26:41
Ср июл 01, 2020 10:12:24
Во время паузы эмулятор не реагирует ни на одну кнопку кроме CENTER (пауза), т.е. снять с паузы.
Ср июл 01, 2020 13:33:42
Сб июл 04, 2020 07:00:49
Сб июл 04, 2020 08:29:34
MSM514400D-60SJ