Можно подробнее рассказать про запись или ссылку где почитать?
Отправлено с моего A0001 через Tapatalk
Можно подробнее рассказать про запись или ссылку где почитать?
Отправлено с моего A0001 через Tapatalk
http://vtrd.in/book/REVU9145.ZIP
статья - "секреты ПЗУ"
вникать в SA_BYTES
Последний раз редактировалось goodboy; 06.12.2017 в 19:06.
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 */ }
Теперь нужно синхроимпульсы отработать.
Первый по высокому фронту, а второй по низкому.
Пока не получилось, может, что пропустил ?
Последний раз редактировалось san010101; 12.12.2017 в 10:23.
Всем привет. После продолжительного перерыва вернулся к проекту. Теперь работаю с цветным экраном 320х240
Пока поддержка только tap в режиме чтения. Есть возможность просматривать файлы jpeg, txt и zx spectrum образ экрана scr.
Именно этот файл грузится при загрузке tap в качестве экранки. Добавлен прогресс бар.
Отправлено с моего A0001 через Tapatalk
https://youtu.be/Tvg1SUaCBxs
san010101, ёёё моё, я уважаю ваш труд и стремление, но не проще купить за те же $20 какую то какашку на андроид и не париться ? в плеймаркете дофига прог для проигрывания TAP и TZX и все они работают, да еще и реально работают WAV с супер-турбо загрузкой
не хотел ни кого обидеть, это так, мысли в слух
Скрытый текст
Специалист "УЦА" +SD-Vinxru +PS/2-Vinxru
PLM-X 128 + AY -эмуль на 8меге
Profi V3.2 - 768+Color-CP/M+ProfiExtender Solegstar
Profi V3.2 -1024 Sim30+Color-CP/M+ProfiExtender Solegstar
Pentagon 1024SL 1.42 - работает не совсем стабильно
ZXM-Phoenix V06
ZX-Evolition Rev C2 White FSP-MItX
Sprinter 2000 v.Zorel
Karabas128 + ZX-Taper by TrolSoft +DivSD +ScanDoubler
ZX-UNO v4.1 2М с 4 переключаемыми флешками
Поиск-1 - ждет ремонта
Корвет ПК8010 up to 8020
MisT 1.31
Galaksija + SMD
[свернуть]
По большому счету тут все можно перевести в алиэкспер или плай маркет. Компы на ПЛИС или эмулятор, различныу переферию на али экспресс или программно.
https://youtu.be/3cCmEcKgLh0
- - - Добавлено - - -
Немного по развлекался с esp32. Пока только просмотр списка файлов и вывод файлов экрана zx spectrum
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)