Информация об изменениях

Сообщение Re[32]: Эльбрус - 8 ядер от 08.06.2017 6:37

Изменено 08.06.2017 6:51 Иван Дубров

Re[32]: Эльбрус - 8 ядер
Здравствуйте, vdimas, Вы писали:

V>Ну вот самая распространённая задачка вокруг таймеров (остальное не есть "задачка") — это установка после каждого срабатывания таймера новой для него длительности. Насколько я понимаю, через теневые регистры это можно сделать, ОК. Прямо в теле прерывания.


V>Я "не дожил" в ассемблере до появления теневых регистров в армах, но правильно ли я понял сию тонкость?


Да, как-то так.

V>И получается тот фокус, что мы уже того-с, поезд уже ушел. Мы можем лишь настроить теневые регистры на следующий цикл, а не на этот, т.е. который вот только что начался.


Если программа заранее известна, то почему нет? Все длительности будут строго в соответствии с программой. Обработается ли прерывание чуть раньше или чуть позже -- не важно, оно же только на следующий цикл грузит (т.е при окончании цикла N прерывание будет обрабатывать длительности для цикла N+2). Главное, чтобы минимальная длительность была гарантированно больше самого пессимистичного сценария обработки прерывания.

V>А как получить частоту, скажем, ровно 2/255 от тактовой?


Таймер же (опосредованно) от того же генератора тактовой частоты работает. Если задержка в целых тиках не выражается, значит не выражается, надо переменные длительности делать. Можно чередовать длительности 127 и 128, в среднем будет 127.5.
Re[32]: Эльбрус - 8 ядер
Здравствуйте, vdimas, Вы писали:

V>Ну вот самая распространённая задачка вокруг таймеров (остальное не есть "задачка") — это установка после каждого срабатывания таймера новой для него длительности. Насколько я понимаю, через теневые регистры это можно сделать, ОК. Прямо в теле прерывания.


V>Я "не дожил" в ассемблере до появления теневых регистров в армах, но правильно ли я понял сию тонкость?


Да, как-то так.

V>И получается тот фокус, что мы уже того-с, поезд уже ушел. Мы можем лишь настроить теневые регистры на следующий цикл, а не на этот, т.е. который вот только что начался.


Если программа заранее известна, то почему нет? Все длительности будут строго в соответствии с программой. Обработается ли прерывание чуть раньше или чуть позже -- не важно, оно же только на следующий цикл грузит (т.е при окончании цикла N прерывание будет обрабатывать длительности для цикла N+2). Главное, чтобы минимальная длительность была гарантированно больше самого пессимистичного сценария обработки прерывания.

V>А как получить частоту, скажем, ровно 2/255 от тактовой?


Таймер же (опосредованно) от того же генератора тактовой частоты работает. Если задержка в целых тиках не выражается, значит не выражается, надо переменные длительности делать. Можно чередовать длительности 127 и 128, в среднем будет 127.5.

V>Что вообще можно сделать с обычным 16-тиразрядным счётчиком, кроме как использовать его для чего-то малокритичного?


Можно сцепить два таймера и получить один 32-разрядный (старший щёлкает по переполнению младшего).