Эмулятор магнитофона для ZX-Spectrum

Обсуждаем цифровые устройства...
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Не датчик. Сам тепловизор Flir One Gen 2 и подключён по USB к плате STM32F4Discovery на этом самом STM32F407.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Вижу вижу. Это приставка для мобильника. Занятная штука.

Добавлено after 40 seconds:
Теперь как то изловить откуда глюк берется.

Добавлено after 1 minute 18 seconds:
Может как нибудь приоритет выставить на таймер. Что бы самые высокие привилегии имел.

Добавлено after 6 minutes 52 seconds:
Давно хочется свой тепловизор. Датчики очень дорогие....
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Ну как, нашли в чём причина сбоя? :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Нет, все переискал...у меня мало опыта работы с контроллерами. Думаю срабатывает прерывание и происходит рассогласование по передаче. Могу предоставить исходный код.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

А с буферизацией данных в ОЗУ тоже происходит сбой?
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

да. все так же
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Думаю срабатывает прерывание и происходит рассогласование по передаче.


Вряд ли. Сработавшее прерывание таймера позволит лишь ошибиться на одну единицу времени, а это совсем не критично.
Впрочем, лучше действительно приведите код проекта - вдруг ошибка легко обнаружится.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

После перерыва наконец то заработал мой плеер.
Вот видео работы

Программа пока очень сырая.
Сделал буферизацию на влезло пока 65535 байт
Хочу сделать кусочками хотя бы по 1 Кб или пока напрямую читать по байту с карты.

У меня вопрос как организовать пользовательский интерфейс, т.е. сделать отображение текущего блока и полоску оставшегося времени воспроизведения.

Добавлено after 2 minutes 21 second:

Код: Выделить всё

void TIM7_IRQHandler(void)
{
  /* USER CODE BEGIN TIM7_IRQn 0 */

  /* USER CODE END TIM7_IRQn 0 */
  HAL_TIM_IRQHandler(&htim7);
  /* USER CODE BEGIN TIM7_IRQn 1 */
if (TapeOutMode==TAPE_OUT_STOP)
 {
  index16=16;//первоначальное значение бита
   byte =0;//первоначальное значение байта
   HAL_GPIO_WritePin(T_OUT_GPIO_Port, T_OUT_Pin, GPIO_PIN_RESET);
  return;
 }      
  if (TapeOutVolume==true)
 {
  HAL_GPIO_WritePin(T_OUT_GPIO_Port, T_OUT_Pin, GPIO_PIN_RESET);
  TapeOutVolume=false;
 }
 else
 {
  HAL_GPIO_WritePin(T_OUT_GPIO_Port, T_OUT_Pin, GPIO_PIN_SET);
  TapeOutVolume=true;
 }
 
  //выводим пилот-тон
 if (TapeOutMode==TAPE_OUT_LEAD)
 {
  TIM7->ARR = 2168*2;//начальное значение таймера
  if (tim6_countersec > 0) tim6_countersec--;
  else
  {
    tim6_countersec = 3223;//Время воспроизведения пилот тона 2 сек.
   TapeOutMode=TAPE_OUT_SYNCHRO_1;
   return;
  }
 }
 
 //выводим синхросигнал 1
 if (TapeOutMode==TAPE_OUT_SYNCHRO_1)
 {
  TIM7->ARR = 667;//начальное значение таймера
  TapeOutMode=TAPE_OUT_SYNCHRO_2;
  return;
 }
 
 //выводим синхросигнал 2
 if (TapeOutMode==TAPE_OUT_SYNCHRO_2){
  TIM7->ARR = 735;//начальное значение таймера
  TapeOutMode=TAPE_OUT_DATA;
  index16=16;
  byte=0;
   BytesCount=0;//обнуляем счетчик байт   
   return;}

 //передаём данные
 if (TapeOutMode==TAPE_OUT_DATA)
 {   
  if (index16>=16)
  {     
   if (BytesCount>=sz)
   {
    TapeOutMode=TAPE_OUT_STOP;
      //TapeOutMode=TAPE_OUT_PAUSE;//ставим паузу по оканчанию процесса
      //sz=FioNextHead();//читаем размер блока       
      BytesCount = 0;
   return;
   }
   //byte=FioNextByte();//читаем байт из буфера   
   byte=read_byte();//читаем байт из буфера   
   index16=0;//первоначальное значение бита
   BytesCount++;//общий счетчик байт файла   
   byte_temp = byte;
  }
 // printf("byte_temp %X\r\n", byte_temp);
  //выдаём бит
  if (byte&128) {
      TIM7->ARR = 1710*2;//начальное значение таймера
      //printf("bit%u =1 byte %u\r\n", index16,BytesCount);
   }
            else {
                     TIM7->ARR = 855*2;//начальное значение таймера
                     //printf("bit%u =0 byte %u\r\n", index16,BytesCount);
                  }
  if ((index16%2)==1) byte<<=1; 
  index16++;
  return;      
 }
  /* USER CODE END TIM7_IRQn 1 */
}


Это код обработчика таймера
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Как можно внешнюю память подключить к stm32?
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Зависит от типа памяти (по SPi, I2C, параллельная). И, насколько я читал (но не точно), у STM бывает программные интерфейс для работы с некоторыми типами памяти.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

да есть, FSMC в моем stm32f407
Хочу SRAM добавить.


Теперь сделал индикацию загрузки
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

А ошибку-то нашли?
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Да, неверно задавал регистры. Сейчас использую все настройки через ARR
Основной стоит делитель PSC 120 (тактовая 84МГц)
До этого делал ARR=1 и частоту настраивал через PSC

Так же настроил уровень сигнала, слишком большой искажал форму.
Это все в рамках эмулятора на ПК.

Добавлено after 1 minute:
Думаю как паузу организовать и прокрутку блоков так как некоторые игры требуют остановки воспроизведения, либо выбор уровней.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Так у меня же в эмуляторе и пауза и прокрутка блоков сделана. Так же и вы можете сделать. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

.....что то не сразу заметил
Попытаюсь разобраться.
oleg88
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Сб окт 24, 2015 20:37:56
Откуда: nr. Moscow

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение oleg88 »

da-nie, а что стряслось в тестом памяти в версии прошивки Firmware 2.2? Длится аж 15 минут.

Реально отсортировать файлы хотя бы по имени?

P.S. Вставляю пустую SD карту. Появляется Основное меню в котором выбираю пункт Магнитофон х1. Появляется сообщение "Нет файлов tap" и через пару секунд опять попадаю в Основное меню. На горячую меняю карту и ... все, более на кнопки магнитофон не реагирует. Так и должно быть или задумывалось, что сменим карту и будем работать дальше?
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Запустил полностью свою версию плеера. Сделал перемотку вперед и назад, паузу и выход. Теперь все нужно тестировать на глюки.
Хочу попробовать чтение tzx и запись реализовать.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Тест памяти был изменён - проверяется каждое значение байта (0-255). Просто кто-то жаловался на плавающие дефекты и сделал так.

Горячая замена карты не поддерживается. :)

tzx довольно сложный формат. И в общем, не нужный. А запись сделать можно (но потребуется игра с FAT). Я их не делал из-за общей бесполезности такого. Не припомню необходимости сохранять что-либо с ZX сейчас, за исключением файлов достижений от Elite. Но они мне не нужны. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
san010101
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн мар 02, 2015 10:37:31

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение san010101 »

Как реализовать запись? Сигнал с ZX так же частотно модулированный?
Потом анализировать его и писать в файл.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Эмулятор магнитофона для ZX-Spectrum

Сообщение da-nie »

Да. А пример расшифровщика магнитофонных файлов я приводил в этой теме (странице так на второй).
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Ответить

Вернуться в «Цифровая техника»