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

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


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

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

  • Одобряю 1

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


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

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

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


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

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

  • Одобряю 1

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


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

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

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

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

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

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


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

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

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

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


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

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

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

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


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

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 764

Учтите еще 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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


  • Сообщения

    • Полный бред, нет. Я понимаю, что при нагрузке резистором на 100% импульсы будут красивее, но... зачем собирать преобразователь на половину и пытаться его спалить? Вам заняться больше нечем, как фигню пороть? Делайте полностью и результат будет радовать. Иначе результат будет радовать продавца деталей.
    • Ты прикалываешься? Зачем мне фото МП3 плеера? Или зачем мне фото без макросъёмки микросхемы, где маркировка не читается и фокус вообще НА БОЛТЕ? Свет максимально яркий, камеру на макросъёмку, фокус на микросхеме, и только так о чём-то можно говорить. Интересуют вот эти микросхемы и дорожки: А так же то, как подключены провода АКБ(по дорожкам), и куда идут дорожки от индикатора и где он.
    • Как говорят грамотные бизнесмены,Москва давно зажралась,идти надо в регионы.    Я так понимаю,проблем бы не возникло с подбором персонала в таких городах как Тамбов,Воронеж и т.д. Тем более,что в этих городах закрылись многие предприятия по производству электроники,конечно последнему самому молодому бывшему работнику тех предприятий уже за сорок,но и хрен толку от амбициозных имбицилов из выпускников "межгалактических академий".    У нас в Липецке найти работу за 30 000 проблема,придётся долго и упорно побегать,в Тамбове ещё хуже,Воронеж та же история.На "флагмане  металлургии" -Титанике  НЛМК ,за зарплату в 40 000 придётся здоровье гробить,это если ты давно устроился,а так "свежему мясу" кидают подачки 20 000 - 30 000 руб. Не знаю как в Москве,но я в Липецке свалил бы с НЛМК в эту контору,единственное что остановило бы,- отсутствие гарантии долгосрочного функционирования компании в регионе. (мне ещё 7 лет ипотеку выплачивать)
    • Если вторичка просто нагружена на резистор без выпрямителя и дросселя с конденсатором , то резистор будет гасить все колебания в паузе, как снаббер только ещё лучше . Транзисторы от этого точно не взорвутся. Скорей всего индукция превысила допустимую , и на ХХ транзисторы как то жили . Намотка не правильная , все обмотки с отводом мотают в 2 провода .
    • @MADNESSS Ты попробуй плату греть (два контакта), а до элемента даже не дотрагиваться паяльником. Только пинцетом посади аккуратно конденсатор на расплавленный припой, флюс(канифоль например) можно нанести на сам низ конденсатора. Но, предупреждаю, или паяльник надо будет мощный с медным жалом, или плату снизу подогревать (я как-то утюг на 150 градусов выставлял).
    • потому что вы путаете средние и эффективное(среднеквадратичное) значение тока/напряжения. для периодичного прямоугольного  сигнала с заполнением 10% и амплитудой 100А средний ток Iср = I/10 =10А эффективный Iэф=sqrt(I^2/10)= 31,62 A средняя мощность она же активная это среднее за период T значение мгновенной мощности P= U*I/10 = 100*100/10 = 1000Вт А вот произведение эффективного тока и напряжения это полная мощность S=Uэф*Iэф= 31,62 * 31,62 = 1000В*A , на чисто активной нагрузке полная мощность численно равна активной мощности.