При всей моей нелюбви к Proteus все равно часто приходится им пользоваться.
Иногда нужно генерировать треугольники или пилу, а готового генератора нет, тут может помочь только встроенный в ПО программируемый (Scriptable) генератор на Easy HDL.
Язык тут какой-то Паскале-Верилого-образный, справка есть в самой программе. За основу моих генераторов взяты примеры из Help Proteus.
Почему-то Proteus иногда ругается на генератор, пока тот не будет переименован.
А теперь сами генераторы.
1) Генератор пилы
Можно настроить частоту FREQ, амплитуду AMP и смещение от нуля V_OFFSET.
Тут все просто - линейная функция от времени. Чем больше разность между текущим временем REALTIME и запрошенным в таймере t = EVTTIME (EVENT TIME), тем "выше" треугольник, потом они становятся одинаковыми и счет начинается сначала.
Вот такая суперпрограмма:
FLOAT FREQ = 500, AMP = 1.5, V_OFFSET = 0
FLOAT PERIOD = 1/FREQ
FLOAT t = 0
ON TIMER AT PERIOD EVERY PERIOD
t = EVTTIME
ENDON
OUT = V_OFFSET + AMP*(REALTIME-t)/PERIOD
2) Генератор напряжения треугольной формы
Не сильно сложнее предыдущего, только таймера два - первый включает положительный фронт (SLOPE = 1), второй - отрицательный (SLOPE = -1).
Формула OUT найдена исходя из уравнения прямой по двум точкам :)
Текст программы:
FLOAT FREQ = 500, AMP = 1.5, V_OFFSET = 8
FLOAT PERIOD = 1/FREQ
FLOAT SLOPE = 1, t = 0
ON TIMER AT PERIOD EVERY PERIOD
t = EVTTIME
SLOPE = 1
ENDON
ON TIMER AT PERIOD/2 EVERY PERIOD
t = EVTTIME
SLOPE = -1
ENDON
OUT = V_OFFSET + AMP*SLOPE*(4*(REALTIME-t)/PERIOD - 1)
Вот такие пироги, треугольные (эчпочмаки?), может, кому пригодятся