Можно подробнее рассказать про запись или ссылку где почитать?
Отправлено с моего A0001 через Tapatalk
Вид для печати
Можно подробнее рассказать про запись или ссылку где почитать?
Отправлено с моего A0001 через Tapatalk
http://vtrd.in/book/REVU9145.ZIP
статья - "секреты ПЗУ"
вникать в SA_BYTES
san010101, я точно не помню, но вроде все было описано вот в этой теме. Сам файл имеет расширение BAW - Binary wAVe.
Пока вижу это как использовать таймер в режиме захвата для отсчета единиц и нулей. Хорошо бы примеры работы для stm32
Вход 807Гц держит, определяет.Код:void EXTI15_10_IRQHandler(void)
{
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
/* USER CODE END EXTI15_10_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
/*********************блок переменных************************************************************/
static const uint8_t delta = 50; //дельта для диапозона пилот тона
static const uint16_t pilot_ARR = 2168*2; //значение таймера для пилот-тона 807Гц
static const uint16_t syn1_ARR = 667; //значение таймера synchro1 5247Гц
static const uint16_t syn2_ARR = 735; //значение таймера synchro2 4761Гц
/***********************************************************************************************/
/********************чтение пилот-тона**********************************************************/
if (TapeInMode==TAPE_IN_LEAD){
TIM6->ARR = pilot_ARR;
//EXTI->FTSR |= 0x15; //по спадающему фронту
if (TapeIn==true){
TIM6->CNT = 0; //начальное значение для отсчета
HAL_TIM_Base_Start (&htim6);
HAL_TIM_Base_Start_IT (&htim6); //включить таймер
TapeIn=false; //переключатель на выкл. таймера
EXTI->PR |= (0x15); //Очищаем флаг и останавливаем прерывание
return;
}
else{
HAL_TIM_Base_Stop (&htim6);
HAL_TIM_Base_Stop_IT (&htim6); //выключить таймер
counterbit = __HAL_TIM_GET_COUNTER(&htim6); //взять значение отсчета таймера
/*проверка на ввод пилот тона, если нет сигнала то стоп прием и переход к ледующему шагу*/
if ((counterbit > pilot_ARR-delta) && (counterbit < pilot_ARR+delta) ) {
#if Debug_TIM
SEGGER_RTT_printf(0,"\n counterbit %u\n", counterbit);
#endif
TapeInMode = TAPE_IN_LEAD; //продолжим прием пилот-тона
TapeIn=true; //переключатель на старт таймера
}
else
{
#if Debug_TIM
SEGGER_RTT_printf(0,"\n Exit %u\n", counterbit);
#endif
TIM6->ARR = syn1_ARR;
EXTI->RTSR |= 0x15; //по нарастающему фронту
EXTI->PR |= (0x15); //Очищаем флаг и останавливаем прерывание
TIM6->CNT = 0; //начальное значение для отсчета
HAL_TIM_Base_Start (&htim6);
HAL_TIM_Base_Start_IT (&htim6); //включить таймер
TapeInMode = TAPE_IN_SYNCHRO_1; //прием Synchro1
}
return;
}
}
/********************читаем синхросигнал 1******************************************************/
if (TapeInMode==TAPE_IN_SYNCHRO_1){
HAL_TIM_Base_Stop (&htim6);
HAL_TIM_Base_Stop_IT (&htim6); //выключить таймер
counterbit = __HAL_TIM_GET_COUNTER(&htim6); //взять значение отсчета таймера
EXTI->PR |= (0x15); //Очищаем флаг и останавливаем прерывание
EXTI->FTSR |= 0x15; //по спадающему фронту
TIM6->ARR = syn2_ARR;
#if Debug_TIM
SEGGER_RTT_printf(0,"\n Exit Synchro1 %u\n", counterbit);
#endif
TIM6->CNT = 0; //начальное значение для отсчета
HAL_TIM_Base_Start (&htim6);
HAL_TIM_Base_Start_IT (&htim6); //включить таймер
TapeInMode = TAPE_IN_SYNCHRO_2; //стоп прием
return;}
/**************************************************************************************************/
/********************читаем синхросигнал 2******************************************************/
if (TapeInMode==TAPE_IN_SYNCHRO_2){
HAL_TIM_Base_Stop (&htim6);
HAL_TIM_Base_Stop_IT (&htim6); //выключить таймер
counterbit = __HAL_TIM_GET_COUNTER(&htim6); //взять значение отсчета таймера
TapeInMode = TAPE_IN_STOP; //стоп прием
EXTI->PR |= (0x15); //Очищаем флаг и останавливаем прерывание
EXTI->RTSR |= 0x15; //по нарастающему фронту
#if Debug_TIM
SEGGER_RTT_printf(0,"\n Exit Synchro2 %u\n", counterbit);
#endif
TapeIn=true; //переключатель на старт таймера
return;}
/**************************************************************************************************/
/* USER CODE END EXTI15_10_IRQn 1 */
}
Теперь нужно синхроимпульсы отработать.
Первый по высокому фронту, а второй по низкому.
Пока не получилось, может, что пропустил ?
Всем привет. После продолжительного перерыва вернулся к проекту. Теперь работаю с цветным экраном 320х240
Пока поддержка только tap в режиме чтения. Есть возможность просматривать файлы jpeg, txt и zx spectrum образ экрана scr.
Именно этот файл грузится при загрузке tap в качестве экранки. Добавлен прогресс бар.
Отправлено с моего A0001 через Tapatalk
https://youtu.be/Tvg1SUaCBxs
san010101, ёёё моё, я уважаю ваш труд и стремление, но не проще купить за те же $20 какую то какашку на андроид и не париться ? в плеймаркете дофига прог для проигрывания TAP и TZX и все они работают, да еще и реально работают WAV с супер-турбо загрузкой
не хотел ни кого обидеть, это так, мысли в слух
По большому счету тут все можно перевести в алиэкспер или плай маркет. Компы на ПЛИС или эмулятор, различныу переферию на али экспресс или программно.
https://youtu.be/3cCmEcKgLh0
- - - Добавлено - - -
Немного по развлекался с esp32. Пока только просмотр списка файлов и вывод файлов экрана zx spectrum