• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
Ned Flanders

Таймер В Mcs-51, Модуль Таймера

17 сообщений в этой теме

Здравствуйте. Приложенное изображение - это циклограмма обработки детали. По сути время операции - это задержка.Величина 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

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

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да наверное простой вопрос, но проблема в том, что мне никто не объяснял - просто сказали что нужно сделать эту работу. А программу писать пока не надо - нужен только алгоритм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mvkarp    3 638

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

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mvkarp    3 638

Время операции делить на время цикла. Наверное, так.

С учетом регистра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Время операции делить на время цикла. Наверное, так.

Время цикла - это Вы имели в виду время командного цикла. А как его определить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mvkarp    3 638

908854ad67a5c011cce057b917c64d13.gif

Подсказать?

Смотрите:

(Длительность машинного цикла: 1, 085 мкс,

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

908854ad67a5c011cce057b917c64d13.gif

Подсказать?

Смотрите:

(Длительность машинного цикла: 1, 085 мкс,

Если время операции поделить на 1,085 то получим например в первой строке 3720000 мкс / 1,085 мкс = 3428571,429. Почему в модуле счетчика T0 64691 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mvkarp    3 638

Учтите еще R0 R1.

Изменено пользователем mvkarp
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Учтите еще R0 R1.

Каюсь, я не разбираюсь в данных вопросах. Поясните, если Вам не трудно, это на моем примере. Покажите как по формулам получить значение модуля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

3428571,429/53=64690

  • Одобряю 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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Либо выкинуть нах феты и поставить нормальный параллельный повторитель
    • Понял Вас, спасибо.Учту на будущее. Если возможно этот вывод отключить от массы, получилась бы простая схема без транзисторов и резисторв...
    • глупости, сгорает он только от превышения мощности рассеивания транзистора, не более. замена тр-ра на более мощный +  соответствующий радиатор решат проблему 
    • Здравствуйте. Возможно коротит где то, или же диоды плохо качества. У меня было такое, диоды сами по себе не сильно надежные, повреждаются и начинаются сбои в работе.  Ставил разные и половина ужасного качества.. Сейчас с этого сайта стоят https://electro-kot.ru/svetovoy-tyuning/podsvetka-salona/ Вроде нормальные, работают пока без сбоев
    •           Странный способ "уговорить" Т1 и Т2 изменить своё напряжение отсечки! Проще подобрать их по одинаковому Uотс. Но "выбирать нет из чего". Тогда: 1.либо вернуть историю "взад" и сделать предыдущую схему (её фрагмент здесь второй по счёту); 2.либо искусственно увеличить Uотс одного из Т1Т2 (т.е. уравнять Uотс обоих тр-ров); 3.либо сделать R6 постоянным 111...333...888Ом, а потенциометр на 24Ом включить между эмиттерами, удалив R7R8. Как-то так. С уважением В.    
    • Вы видимо полагаете, что ток через конденсатор существенно изменится при удвоении ESR? Это ваше право. Однако, я указал конкретный тип конденсаторов, допускающих протекание потребного тока, и "забил" в симуль именно их ESR. Опять же, никто не запрещает вам пристегнуть к своему питальнику рюкзак с конденсаторами, буде у вас есть много места и куча невостребованных электролитов.