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

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

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

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Програмирование LPT , I/O
    Да я сам не учел то что не правильно поделил там где самый первый раз написал о временных задержках то я перебрал в 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,0289 ]   [ 14 queries used ]   [ Generated: 17.05.24, 02:20 GMT ]