Перейти к содержанию

Ned Flanders

Members
  • Постов

    8
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Ned Flanders

  1. Потому, что R1=53.

    Ну там на самом деле должно быть вместо R1 R0, а вместо A R1. 53 - это столько раз переполняется таймер за время операции т.к. таймер переполняется каждый машинный цикл, который длится 0,071 сек, 3,72/0,071 = 53.

    3720000 мкс / 1,085 мкс = 3428571,429

    3428571,429/65536=52.316 округляем до целого - 53

    3428571,429/53=64690

    Спасибо Григорий, все понятно! Я не знаю как тут на форуме сказать спасибо. :)

  2. Ned Flanders, вы наверно знаете, что 16-ти разрядный счётчик считает по модулю 216=65536? Получить нужное время задержки с таким значением модуля не всегда получается. Поэтому рассчитывается ближайшее меньшее значение модуля для целых значений повторений.

    Григорий, Вы не могли пояснить это на моем или на каком нибудь более простом примере?

  3. Ned Flanders, дай бог памяти, в МК51 два 16-разрядных таймера/счетчика. Что мешает их при необходимости объединить?

    Наверное ничего не мешает. Ответьте, пожалуйста, если знаете, на мой вопрос: Как получить модуль счетчика? или Как он был получен в таблице, представленной выше?

    Ned Flanders, как вы собираетесь писать программу, если не знаете ответа на самый простой вопрос?

    Пожалуйста, ответьте на мой вопрос.

  4. Здравствуйте. Приложенное изображение - это циклограмма обработки детали. По сути время операции - это задержка.Величина R0 - число обнулений таймера за необходимое количество секунд, а R1 - необходимое число повторений (в том случае если время слишком большое). Таблица, как говорят, правильная. Как получились R0 и R1 я понимаю. Объясните пожалуйста, как получаются такие значения в модуле счетчика? Как найти модуль счетчика?

    (Длительность машинного цикла: 1, 085 мкс, инкремент таймера/счетчика выполняется в течение каждого машинного цикла, количество переполнений таймера за 1 сек = 14., интервал времени, в течение которого происходит переполнение равен 0,071 сек.)

    Алгоритм предполагает следующие действия:

    1) Инициализация – начальная настройка программы и МК. Происходит размещение констант и переменных в регистрах, которыми будет пользоваться программа; назначение указателя вершины стека; настройка регистров специального назначения;

    2 переключение на банк необходимой операции и загрузка числа обнулений таймера за необходимое количество секунд и необходимое число повторений в регистры R0, R1 соответственно, установка таймеров в 16 разрядный режим работы (Т0М1=0, Т0М0=1);

    3) вычисление скорости подачи и глубины резания;

    4) при большом значении времени загрузка аккумулятора числом повторений, обеспечивающим нужное время;

    5) вычисление времени протекания операции и соответствующего ей кода;

    6) загрузка в порт кода выполняемой операции, включение подачи привода и запуск таймера Т0;

    7) инкремент ТF0 и контроль его ненулевого значения;

    8) пока ТF0 не равен 0 – переход на инкремент таймера, при TF0=0 переход к декременту регистра R0;

    9) декремент регистра R0 и контроль его не нулевого значения, пока R0 – не ноль, переход на инкремент таймера, когда R0 равен нулю, переход на декремент аккумулятора;

    10) декремент аккумулятора и контроль его не нулевого значения, пока R1 – не ноль, переход на инкремент таймера, как только R1 равняется нулю, переход к подготовке следующей операции;

    11) повтор со 2-го по 10 пункты для следующей операции и т.д.

    (…)

    Завершение работы программы.

    post-181786-0-91517100-1402169854_thumb.png

×
×
  • Создать...