Была ещё платка stm32. Собрал на макетке. https://uploads.tapatalk-cdn.com/201...87e1dd6b38.jpg
Отправлено с моего A0001 через Tapatalk
Вид для печати
Была ещё платка stm32. Собрал на макетке. https://uploads.tapatalk-cdn.com/201...87e1dd6b38.jpg
Отправлено с моего A0001 через Tapatalk
https://youtu.be/U96scn5DNL0
- - - Добавлено - - -
Вот что вышло. Ошибка при окончании загрузки.
Синхра как должна быть с ноля в еденицу ?
Пилоттон, потом 1 нолик для синхры а потом данные. В конце после вывода последнего полупериода оставлять уровень без изменений.
PS Было бы круто добавить детонацию от ролика, чтобы оно так тепло и лампово раккорд тянуло ууу-ооо--уууу-оооо... :) Я помню, это не сильно влияло на качество загрузки.
Это пьезопищалка так старается.....
Проверил и с единицей в ноль и с нулем в единицу все равно в конце ошибку сыпит. Могу код скинуть.
Вот скрины анализатора.
это конец файла при синхре с нуля в еденицу
http://img.radiokot.ru/files/104486/...1elvfnbh1u.jpg
синхро
http://img.radiokot.ru/files/104486/...1elvl6l2x4.jpg
это при синхре единица в ноль
http://img.radiokot.ru/files/104486/...1elvfnbuyc.jpg
синхро
http://img.radiokot.ru/files/104486/...1elvn19vy2.jpg
- - - Добавлено - - -
ps
У меня STM32 логика 3.3 В
Подключаю напрямую с выхода контроллера ко входу zx spectrum
В спектруме загрузщик не распаян(арлекин 48)
я подключил напрямую ко входу микросхемы.
Может нужна какая развязка?
https://youtu.be/9JVQ2NzWmuw
Загрузка Диззи
Запускается с музыкой и виснет в игре
- - - Добавлено - - -
Вообще файлы грузятся по разному, одни через пару блоков R tape error выдают другие могут загрузится и зависнуть
в некоторых загрузчиках нет проверки на ошибку, поэтому софт может быть частично работоспособный.
а у тебя похоже сбой на длинных блоках.
проще проверить грузя данные в какой-нибудь копировщик
(он хоть покажет ошибку контрольной суммы)
как вариант можно сделать verify code (например с ПЗУ)
Вот и думаю как проверить. Пока нужно отработать алгоритм. У меня каждый байт с карты читается. Без буферизации. Возможно в этом причина. Тестирую сейчас копировщиком для ленты.
[IMG]http://img.radiokot.ru/files/104486/...1emi0d9xp4.jpg[/IMG]
отловил глюк анализатором
А ты как формируешь то периоды? По CAPT или просто настраиваешь таймер на следующее событие?
- - - Добавлено - - -
А, вижу код страницей ранее. Думаю, у тебя достаточно сложное дерево алгоритма в обработчике прерываний. Я бы каждый блок "рендерил" в битстрим в ОЗУ а по таймеру протягивал его на порт (собственно, я так и делаю в программе на РС). Но и это не главное. Главное, что ты упустил вот это:
И так далее. У тебя может стрелять другое событие. Следует разделять события, ведь на них всех всего один общий обработчик.Код:void xIRQ()
{
uint16_t Events;
***
// Сохраним список евентов и подтвердим обработку
Events = TIM3->SR; TIM3->SR = 0x0000;
// Это евент каптуры CAPT3
if (Events & TIM_SR_CC3IF)
***
// Это евент каптуры CAPT1
if (Events & TIM_SR_CC1IF)
***