На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Програмирование LPT , I/O
    1 Как выводить данные через лпт я умею но есть проблема как выводить данные с интервалом 100 нано секунд и длительностью 5 нано секунд а в оставшееся время принимать данные длительность сигнала при подаче его на лпт всего 3 нано секудды
    2 Как сделать счетчик какторый будет работать независимо от частоты процесора
    3 как организовать два потока один принимает данные второй принимает и при этом каждй работает со своим временем обновления Передающий каждые 100 нано секунд отправляет данные
    а принимающий каждые 2 нано секунды проверяет на наличие сигнала
    4 Адрес используется 378h

    Прошу ответьте очень нужно плиЗЗЗЗЗ!!!
      может МИКРОсекунды? Параллельный порт просто не способен передавать данные с частотой 300МГц.
        Цитата

        1 Как выводить данные через лпт я умею но есть проблема как выводить данные с интервалом 100 нано секунд и длительностью 5 нано секунд а в оставшееся время принимать данные длительность сигнала при подаче его на лпт всего 3 нано секудды

        Vesper прав такие частоты на LPT ты не получишь
        Цитата

        2 Как сделать счетчик какторый будет работать независимо от частоты процесора
        2 Как сделать счетчик какторый будет работать независимо от частоты процесора
        3 как организовать два потока один принимает данные второй принимает и при этом каждй работает со своим временем обновления Передающий каждые 100 нано секунд отправляет данные
        а принимающий каждые 2 нано секунды проверяет на наличие сигнала
        4 Адрес используется 378h

        распиши подробнее, из того что ты написал непонятно, у тебя есть готовая железка и ты предполагаешь, что она так работает, или ты хочешь сделать свою?
          2. Есть вариант, калибровать его в процессе работы, или сразу до работы. Например:
          ExpandedWrap disabled
            smesh dd 0
            rdtscdata dd 10 dup(?)
            int08handler proc
            push eax
            push edx
            push esi
            push ds
            push cs
            pop ds
            mov eax, smesh
            cmp eax,5
            je @nafig
            mov esi,eax
            shl esi,3
            rdtsc
            mov [esi],eax
            inc esi
            inc esi
            inc esi
            inc esi
            mov [esi],edx
            inc byte ptr smesh {а какая разница, байт или двойное слово?}
            @nafig:
            pop ds
            pop esi
            pop edx
            pop eax
            jmp dword ptr int08save
            int08handler endp
          Пока твой smesh не станет 5, можно крутить какой-либо однообразный код, после чего посчитать среднюю разницу показаний rdtsc, сохраненных в rdtscdata, а потом от этой евличины и плясать.
            2Vesper
            ты о чем???
            в смысле кого калибровать собрался:)?
              Цитата
              HELL, 1.04.04, 11:55
              2 Как сделать счетчик какторый будет работать независимо от частоты процесора

              вот этот счетчик, правда его все равно нужно будет куда-то вешать... и микросекунду хоть и можно на прерываниях отсечь, а вот все операции за нее сделать...
                Точно ошибка вышла лпт работает на частоте 12,5 МГц да там все данные в микросекундах и еще вопрос этот счетчик действует как задержка между передаваемыми байтами???

                У устройства следующий алгоритм
                Основная программа
                -Инициализация ;устройству передается сигнал; и работает
                Поток 1
                -Дальше через определенные промежутки времени усройство кидает в порт байты
                Поток 1 енд
                Поток 2
                -Каждые 2 микросекунды устройство проверяет на наличие внешнего сигнала
                Поток 2 енд
                -реакция на входящие сигналы
                Основная программа енд

                Потоки действуют пока идет программа и основная программа их обрабатывает

                Добавлено в :
                potor,
                Насчет железяки ее смысл прост Вы наверное слышали про PIC контроллеры так вот эта штука их заменяет
                Я втыкаю свой апарат вмести ПИКа и загружаю прогу и сам компьютер выполнеет прогу за ПИК
                То есть проверка правильности прошивки ПИКа без его прошивки

                Мне это очень нужно к 15 мая так как это так скажем моя курсовая
                и с ассемблером я на ВЫ (знания есть как передать принять байт но прога очень лаймерская и работает она только на одном компьютере с гигинтскими багами из-за того что у меня все зависит от загруженности процесораибо задержки творю циклами и передавать данные через стек увы не умею
                в пике все немного проше)
                  1 счетчик и т.п. лучше всего реализовать в самом устройстве
                  2 LPT, ввиду его нежности лучше не использовать, USB рулит!!! либо COM который реализовать проще (я имею ввиду на стороне устройства)
                  3 побайтно лучше не пкредавать, передача ведется обычно пакетами, лучше использовать какой нибудь стандартный протокол(например Modbus)
                    1 Само устройство работает с частотой 20МГц а скорость передачи у него ограничена 10МГц
                    2 Если передавать через СОМ или USB то нужно устройство которое из последовательности битов опять составит весь байт и затем его даст
                    3 СОМ рабатает с частотой что-то около 5МГц поэтому не подходит
                    4 USB "что это за зверь и с чем его едят" как добраться до USB и как програмировать под него это то было бы великолепно если бы я об этом знал побольше кроме как абривиатуры

                    Если че моу кинуть прогу чтобы посмотрели и посоветовали чего
                      Цитата

                      1 Само устройство работает с частотой 20МГц а скорость передачи у него ограничена 10МГц

                      вот тут подробнее обьясни, что за данные собирает устройство, с какой целью их передавать в компьютер?
                      Цитата

                      4 USB "что это за зверь и с чем его едят" как добраться до USB и как програмировать под него это то было бы великолепно если бы я об этом знал побольше кроме как абривиатуры

                      сам я USB не программировал, но думаю так же как к comу и LPT, через:
                      CreateFile
                      ReadFile
                      WriteFile
                        По поводу счётчика глянь вот тут: http://pub3.nm.ru/pub/asm/delay.htm (GetTimerValue и т.д).
                        Заодно вот ещё модуль (на паскале).

                        Добавлено в :
                        А про USB см. тут: http://pascal.sources.ru/hardware/usb4pas.htm
                        (есть ещё спецификация на http://www.usb.org/home :D)
                        Прикреплённый файлПрикреплённый файлcounter.zip (9.78 Кбайт, скачиваний: 80)
                          1 Смысл устройства заключается как я уже выше говорил заключается в том что используя компьютер человек в реальном и виртуальном(в каком-то масштабе)времени сможет проверить программу которая по идее должна была бы быть прошита в микросхеме PIC
                          2 А эта микросхема способна принимать данные и отдавать вот поэтому их нужно симулировать
                          3 как сделать чтобы это еще все равботало под WINDOWS
                            в общем тебе надо выяснить, есть ли у этого пика JTAG, и если есть собрать стандартную схему, а если нет, то все равно отлаживать в реальном времени у тебчя не получится, т е тебе придется писать для пика что то типа Мини ОС, чтобы он реагировал на твои запросы, и передавал тебе свое состояние
                              Прошить пик вот и все и тогда мрожно было-бы не писать всю эту прогу и не создавать это устройство
                              Смысл в том что пик заменит сам компьютер и будет выполнять программу за пик по его алгоритму

                              А ссылки очень дельные
                                Цитата

                                1 Как выводить данные через лпт я умею но есть проблема как выводить данные с интервалом 100 нано секунд и длительностью 5 нано секунд а в оставшееся время принимать данные длительность сигнала при подаче его на лпт всего 3 нано секудды
                                2 Как сделать счетчик какторый будет работать независимо от частоты процесора
                                3 как организовать два потока один принимает данные второй принимает и при этом каждй работает со своим временем обновления Передающий каждые 100 нано секунд отправляет данные
                                а принимающий каждые 2 нано секунды проверяет на наличие сигнала

                                мы о чем вообще говорим (как я раньше на частоты не обратил внимание):)
                                ни один пик не имеет такого быстродействия
                                  Да я сам не учел то что не правильно поделил там где самый первый раз написал о временных задержках то я перебрал в 1000 раз тоесть на одну приставку ниже

                                  Пик работает с частотой до 40МГц но выдавать данные будет приблизительно в два раза медленнее
                                  Так как у меня пик работае с частотой 20МГц то скорость выдачи им данными будет около 8-10МГц так как ему как и любому другому процесору нужно время для того что бы обработать данные и выдать их в порт на что уходят "шаги"
                                  Да и в зависимости что нужно будет выполнить сколько "шагов" это займет от этого тоже-же будет зависить время через которое он вернет какойто результат
                                  И еше один вопрос насчет счетчика
                                  не притензий нет кроме может одной как этот счетчик подставлять значения задержки и вопрос почему вначале не льзя использовать команду PUSHA и в конце POPA
                                  Вопрос ко всем ни кто не осмелится посмотреть на тот "бред" который я написал и который как ни странно глюченно но пашет
                                    Цитата

                                    Так как у меня пик работае с частотой 20МГц то скорость выдачи им данными будет около 8-10МГц так как ему как и любому другому процесору нужно время для того что бы обработать данные и выдать их в порт на что уходят "шаги"

                                    опять неправильно
                                    один машинный цикл у известных мне пиков 4 такта, т.е. самая короткая команда будет выполняться у тебя с частотой 5МГц, а команды переходов 2.5Мгц, а реально с обработкой данных как напищешь:)
                                    Цитата

                                    почему вначале не льзя использовать команду PUSHA и в конце POPA

                                    можно, только выполнятся она будет медленнее
                                    ExpandedWrap disabled
                                       
                                      push eax
                                      push edx
                                      push esi
                                      pop esi
                                      pop edx
                                      pop eax
                                      6 машинных циклов

                                    ExpandedWrap disabled
                                       
                                      pusha
                                      popa
                                      16 машинных циклов
                                      Не знаю как там у ПИКА насчет количества циклов но мне пояснили что из памяти ПИКу передать в порт данные надо одно камонда и займет это два шага следовательно на прямую скорость передачи будет около 8-10МГц
                                      вопрос в другом если ПИК будет обрабатывать данные то сколько это займет шагов(еще есть проблема на то что на какждуюкоманду требуется разное количество тактов процессора) и нужно что бы ПК читая текст программы симулировал-бы выполнение и выдовалбы данные в соответствии с тем что-бы выдовал-бы сам ПИК

                                      И насчет скорости выполнения то это АСМ команды будет выполнять ПК а скорость у него 433-2400МГЦ(проверяется на машинах с частотой процессора в этом диапазоне) то в количестве шагов все равно ПК справится главное что более понятно

                                      Я вам кину посмотреть это бред
                                        Цитата

                                        Не знаю как там у ПИКА насчет количества циклов но мне пояснили что из памяти ПИКу передать в порт данные надо одно камонда и займет это два шага следовательно на прямую скорость передачи будет около 8-10МГц

                                        не знаю кто вам пояснял, а я просто взял и прочитал доку, да действительно команда передачи в порт занимает 1 машинный цикл(шаг, как вы изволили выразится), дык вот этот "шаг" у пиков 4 такта
                                        20/4= 5МГц и никак иначе

                                        теперь по поводу вышепредложенной калибровки.
                                        тут опять можно получить грабли, если работать под виндами, как правило помимо вашей задачи, выполняются еще и другие, и таким образом калибровать может не получится(а вдруг я еще приложение запущу, или сниму какую нибудь задачу, и вся калибровка нафиг...)
                                          Если пмк передает данные зи памяти то ему надо 2 шага следователь скорость упадет в два разаВот и будут эти 10МГц по идее это будет максимальная скорость с которой ПИК сможет выдовать данные ВЫ абсолютно правы что частота в итоге бриблизится к 2МГц такак надо еще и обрабатывать данные
                                          Но сам ЛПТ работает с частотой около 5МГц так что скорости хватит и по идее можно использовать ПИК на 40МГц но я пока собираюсь использовать PIC16F84
                                          И вот еще насчет команд все что выполняет ПК как-то не особо контует так как по моему скорости ПК хватит он даже наоборот слишком быстро выдает данные Просто легче написать меньше комманд а то от их количаства в глазах рябит а то что одни из них требуют 6 циклов а другие 16 не особо крупная задержка, толь-ко вот насколь-ко я чувствую появится еще одна проблема скорость выполнения энного количества команд(одинаковых тоесть один и тот же текст программы) разные процессоры сделают за разный промежуток времении как ни странно это заметно очень сильно(я тестировал примитивную прогу полупаскаль полуассемблер на трех машинах С433 С800 С2400 и есть разница между показаниями С433 и С2400 (смысл проги заключался в том что перед началом проги время таймера сбрасываем в ноль и идет ассемблеровская вставка на паскале где в цикле идет сложение по окончании цикла берется время) хотя эффективней этот способ если начать делить одно и тоже за время СХ=EFFF
                                          разница бывает от 0,5 до 2,8 сек)
                                          Поэтому наверное счетчиком задержки тут не отделаешся а еще надо будет по системному таймеру синхронизировать весь процес
                                          Поэто му вопрос как это удобнее сделать
                                          Вариант 1
                                          использовать два потока(мне абсолютно не подходит ибо как делать потоки на ассемблере я не з наю и никогда не в стречал в книгахкак это делается)
                                          Вариант 2
                                          напихать кучу процедур которые будут проверять не убежалали прога вперед(если убежало то задержит )

                                          И немного не потеме, Вообще в ассемблере сушествуют потоки или нет и если есть то как их реализовать

                                          Добавлено в :
                                          Так вот и я про ету винду так значит лучше синхронизацию делать по системному таймеру


                                          potor вопрос уже не впервой такая вещь на сайте не показывается последнее собщение, а показывает его только ппосле того как сам чего-нибудь не отправлю
                                          ровно тоже самое с твоим последним сейчас сообшением было мое за Сообщ. #18 сегодня, 14:42 и когда отправил Сообщ. #20 сегодня, 16:40 то увидел твое за Сообщ. #19 сегодня, 15:07 между своими двумя
                                          Или это надо админа спрашивать???
                                            Цитата

                                            Если пмк передает данные зи памяти то ему надо 2 шага следователь скорость упадет в два разаВот и будут эти 10МГц по идее это будет максимальная скорость с которой ПИК сможет выдовать данные

                                            Откоройте пункт 4.5 этого описания(стр38, 39) там ясно написано как выполняются команды в пике
                                            тут для 18, но я вас уверяю , в 16 точно так же:)

                                            про быстродействие PC я не говорю, я имел ввиду, тот факт, что в многозадачном режиме нельзя 100% сказать, что вот этот кусок будет выполняться вот такое то время (если конечно это не драйвер), в любое время ОС может передать управление другому процессу и ...
                                            Цитата

                                            Поэтому наверное счетчиком задержки тут не отделаешся а еще надо будет по системному таймеру синхронизировать весь процес

                                            вы получите точность 1мс, и не больше

                                            Цитата

                                            И немного не потеме, Вообще в ассемблере сушествуют потоки или нет и если есть то как их реализовать

                                            так же как и в C, в ассемблере потоков не существует, они существуют в операционной системе, в данном случае Windows
                                            для того, чтобы создать поток, использую функцию CreateThread
                                            а откуда ты будешь ее вызывать из ассемблера, или из C до звезды:)
                                              сам эту микруху так и не разу не прошил (она так на полке и лежит) хотя программатор имеется весь в сборе одного человека который их програмирует да и проги он мне все дал (хотя там не прога а пакет прог обединенный под названием MPLAB6.30) и под пики все что пока пишу это что-то типо моргалки(одна лампочка горит другая не горит потом на оборот)
                                              Вот насчет этой частоты (скорость выдычи данных)там же написано что из ячейки памяти паралельно данные в порт он выдает за раз
                                              Хотя с этими пиками там ни чего нормально поясп=нить не могут(вот на компе прогавесит 300командных строк следоваельнои ком файл около 600байт а у пика прогу взвешивают в чем ,,, угу в командах
                                              и вот из этого ни как не могу понять там се команды чтоли одного размера ведь в ассемблере команды есть двхоперандные однооперандные и безоперандные и из их количества складывается вес проги, а тут ???
                                                У PIC16 все команды состоят из одного 14 разрядного слова, все арифметические операции производятся через аккумулятор, что сокращает количество операндов
                                                для наглядностим почитай доку по пик 16, она на том же сайте, который я тебе дал, там в конце есть таблица кодов команд
                                                  M
                                                  2 HELL: Я понимаю, что тебе лень нажимать на кнопки с точками и запятыми, но делай это хотя бы из уважения к другим участниками форума! Потому что в чтении такого, извини, бреда удовольствия мало.
                                                  p.s. Если что, вот тут можно скачать правила русского языка.
                                                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                  0 пользователей:


                                                  Рейтинг@Mail.ru
                                                  [ Script execution time: 0,0497 ]   [ 14 queries used ]   [ Generated: 18.05.24, 09:55 GMT ]