Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
Остановка цикла MainLoopЯ наблюдаю непонятный эффект. В штатном биосе в цикле MainLoop происходит “параллельный” ввод-вывод данных через порт. В случае, когда буфер АЦП заполнен блоком данных – генерируется прерывание и данные посылаются в порт по слову за каждый проход цикла MainLoop. Другими словами, данный цикл должен постоянно выполняться независимо от того, передаются данные в PC или нет. А у меня сразу после первого прерывания в PC, происходит остановка цикла на время до следующего прерывания. Причем, если закомментарить генерацию прерывания ( AR=IO(INTERRUPT) ), цикл не прерывается(данные,естеств. тоже компьютером не читаются). В цикле MainLoop я вызываю тестовую функцию, генерирующую импульс на цифровом выходе, так и отлаживаю. А все началось с того, что при передаче по ПДП, в начало потока вставляется левый кусок, размером в прерывание. Если не пропускать первое прерывание от АЦП, то вставляется два таких куска. Если отказаться от ПДП, то данные вообще не передаются. Попытка прочитать данные асинхронно (без чтения битов готовности ) вызывает мертвое зависание компьютера. Пытаюсь читать синхронно – вижу, что происходит какая-то фигня с битами готовности от DSP (это еще предстоит отловить). Вобщем, нормально данные не читаются. Может с платой что-то не то? Что происходит? И еще вопрос: если PC записал в порт данных слово, а затем DSP сначала выводит слово в порт данных а потом читает из порта, то какое слово он прочтет? Я работаю с пофиксеной версией штатного биоса и драйвером от lcomp. Кстати, должен отметить, что lgraph на моей машине вешает машину намертво. |
|||
|
||||
|
Re: Остановка цикла MainLoopНу с lcomp драйверами L-Graph работать и не должен.
|
|||
|
||||
|
Re: Остановка цикла MainLoopА штатные примеры со штатным LBIOS под DOS и Windows работают исправно? |
|||
|
||||
|
Re: Остановка цикла MainLoopПод дос не пробовал. Под Windows есть только один простенький пример, который, вроде, работает. Но все не так просто. После того как я подал выходы ЦАПа на вход АЦП, получилось следующее.
Так вот, случается непонятное. Если, скажем, прямоугольный импульс нарисовать в буфере ЦАП перед началом работы, то он оцифруется верно. Но если этот импульс формировать (командами от PC) после начала работы но с такой же задержкой, то я получаю ту же картинку, но с левым куском спереди. 1 Где могут быть проблемы? 2. Зачем пропускать первое прерывание от ЦАП/АЦП, если работаем по ПДП? То есть, что получается, если не пропускать, я видел,-появляется еще один левый кусок спереди потока, но почему это происходит? 3. Как выглядит протокол общения платы с PC и ПДП контроллером , когда порция данных с АЦП готова и их предстоит передать по ПДП? Может быть здесь я что-то не учитываю, по незнанию? |
|||
|
||||
|
Re: Остановка цикла MainLoopДык, вроде бы в тех.описании всё более-менее подробно об этом сказано... Попробуем ещё раз...
|
|||
|
||||
|
Re: Остановка цикла MainLoopУ меня такое впечатление, что Вы невнимательно читали мое письмо. Спасибо, конечно, за цитирование инструкции к плате, но, как Вы понимаете, мне это ничего не дало. А результатов я достиг, потратив ту кучу времени, которую, по идее должна была потратить ваша команда разработчиков. Например, кто мне ответит, зачем нужен фифо буфер на плате при работе по ПДП? Правильно, нафиг не нужен. Если слово после оцифровки сразу передавать по ПДП, то все становится прекрасно. Не нужно пропускать никаких прерываний, и более того, возможна реальная синхронизация работы платы и процесса обработки данных. Кстати, левый кусок спереди потока данных исчез, потому что он создавался именно рассинхронизацией оцифровки данных и ее передачей в PC именно из-за пропуска прерывания. Если бы Вы мне еще и денежку вернули, за то что я сделал чью-то работу, было бы вообще прекрасно.
|
|||
|
||||
|
Re: Остановка цикла MainLoopИ еще. Когда я анализировал код биоса и драйвера, я увидел, что у вас есть достаточно хорошие кодеры, но не хватает хороших девелоперов. Ужасно, если и для новых плат софт написан так же халтурно. Спасибо за оказанную помощь и код драйвера. |
Страницы 1
Тема закрыта