Важная информация

User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 63

Тема: Чтение TAP файлов ZX-Spectrum на базе STM32F407

  1. #31
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это обработчик прерывания таймера 6

    Код:
    void TIM6_DAC_IRQHandler(void)
    {
      /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
      /* USER CODE END TIM6_DAC_IRQn 0 */
      HAL_TIM_IRQHandler(&htim6);
      /* USER CODE BEGIN TIM6_DAC_IRQn 1 */		
    
    if (TapeOutMode==TAPE_OUT_STOP)
     {
    	HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
      return;
     }		
      if (TapeOutVolume==true)
     {
      HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
      TapeOutVolume=false;
     }
     else
     {
      HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);
      TapeOutVolume=true;
     }
     
      //выводим пилот-тон
     if (TapeOutMode==TAPE_OUT_LEAD)
     {
      TIM6->PSC = 13011;//начальное значение таймера
      if (tim6_countersec > 0) tim6_countersec--;
      else
      {
    	 tim6_countersec = 3223;
       TapeOutMode=TAPE_OUT_SYNCHRO_1;
       return;
      }
     }
     
     //выводим синхросигнал 1
     if (TapeOutMode==TAPE_OUT_SYNCHRO_1)
     {
      TIM6->PSC =4050;//начальное значение таймера
      TapeOutMode=TAPE_OUT_SYNCHRO_2;
      return;
     }
     
     //выводим синхросигнал 2
     if (TapeOutMode==TAPE_OUT_SYNCHRO_2)
     {
      TIM6->PSC = 4420;//начальное значение таймера
      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;
    		BytesCount = 0;
    	return;
       }
    	byte=FioNextByte();//читаем байт из буфера
    	byte_temp = byte;
    	index16=0;//первоначальное значение бита				
    	BytesCount++;//общий счетчик байт файла	
      }
      //выдаём бит
      if (byte&128) {
    		TIM6->PSC = 10265;//начальное значение таймера
    	}
                else {
    							TIM6->PSC = 5132;//начальное значение таймера
    						}
      if ((index16%2)==1) byte<<=1;  
      index16++;
      return;		
     } 
    
    }
    Последний раз редактировалось san010101; 18.10.2017 в 04:43.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    TIMx->PSC это прескалер. Почему оно подписано как "начальное значение" если сам таймер это TIMx->CNT?

  4. #33
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сам таймер 6 у меня настроен на 42 000 000 Гц
    42 000 000 / 13011 = 3228,0378141572515563753746829606
    3228,0378141572515563753746829606 / 4 = 807,00945353931288909384367074014
    получаем частоту пилот тона

  5. #34
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошо. Какое событие ты используешь и чему равен ARR регистр? Да и хотелось бы выяснить режим таймера в целом.

  6. #35
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CubeMX Настройки таймера



    - - - Добавлено - - -



    Все прерывания


    - - - Добавлено - - -

    Код:
    /* TIM6 init function */
    void MX_TIM6_Init(void)
    {
    
      TIM_MasterConfigTypeDef sMasterConfig;
    
      htim6.Instance = TIM6;
    	htim6.Init.Prescaler = 120;
      htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
    	htim6.Init.Period = 1;
      HAL_TIM_Base_Init(&htim6);
    
      sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
      sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
      HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig);
    }
    Последний раз редактировалось san010101; 18.10.2017 в 14:01.

  7. #36
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На днях провел тестирование своей поделки, успешно заработала!
    Загрузка tap файлов работает.

    Пока тестирую на эмуляторе Spectaculator
    загрузка через линейный вход звуковой карты.

    Последний раз редактировалось san010101; 21.11.2017 в 12:29. Причина: Замена видео

  8. #37
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Плохо смотреть вертикальное видео.

  9. #38
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видео заменил

  10. #39
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кто подключал внешнюю статическую память к STM32?

  11. #40
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Через FSMC?

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 12.01.2017, 11:00
  2. Ответов: 10
    Последнее: 30.05.2014, 11:58
  3. Конвертор TAP файлов
    от dM_GBG в разделе Софт
    Ответов: 1
    Последнее: 22.11.2011, 11:01
  4. чтение файлов MS-word
    от p@lex в разделе Софт
    Ответов: 17
    Последнее: 22.12.2007, 09:42
  5. Как в Unreal ускорить загрузку TAP файлов?
    от lavstudio в разделе Эмуляторы
    Ответов: 1
    Последнее: 19.02.2005, 01:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •