Либо ты чего то не знаешь, либо у тебя глюки с ПЗУ.
У меня не было никаких ошибок, я там таймеры запускал и ещё чего то... около 70-80 тактов легко проходило в безошибочное чтение. Может ты криво регистр состояния опрашивал? Может быть ты где то основные регистры процессора терял?
---------- Post added at 11:16 ---------- Previous post was at 11:05 ----------
Фишка в том, что прерывания приходят 50 раз в секунду (может не 50, каждые раз одинаково так), а вот диск вращается чуть медленнее чем 5 раз в секунду или чуть быстрее - прерывание и вращение диска происходят несинхронно; однозначно придётся ждать следующего оборота диска если прерывание пришло на чтение сектора; но если смещение чтения дорожки на диске относительно прерывания составляет например 10 байт на прерывание, то через 1, максимум через 2 прерывания, используя быстрое проигрывание аука ты прочитаешь всю дорожку в 3 оборота (1й fault, 2й fault, 3й ok), а если у тебя процедура проигрывания занимает эквивалент процессорного времени в 60 байт чтения с диска, то ждать ты будешь минимум 6 оборотов на этот сектор, т.е. как хотя бы в 2 раза дольше, а то и больше. А есть ещё фактор попадания в центр сектора, с длинным прерывание придётся ждать долго пока сектор "вылезет" из мёртвой зоны; и редкая, но возможная ситуация, когда чтение сектора прервалось на последних байтах и длинная процедура проигрывания закрыла в т.ч. начало следующего сектора, а программа то задала его чтения и придётся ждать целый оборот, пока оно отработает.
Тут в соседней ветке TmK скрутил музон в 1000 тактов... вот ему респект и уважуха, думаю теперь как к себе прикрутить это...
---------- Post added at 11:53 ---------- Previous post was at 11:16 ----------
0,5-1 раз в секунду - это раз в 5 или 10 логических дорожек для турболоадера... В View у меня есть режим отключение музона... ха... смотрю код, там почему то Im1 стоит... видимо решил перестраховаться.... жаль что реал далеко... хочется проверить... Пока мне крыть нечем :-(





Ответить с цитированием
