Максимальная скорость выборки N-канального массива данных, для "меандра" (Кзаполнения = 50%) и 1-й позиции горизонтальной развёртки:
1-канальный режим работы: не более 80 Кгц.,
2-канальный режим работы: не более 40 Кгц.,
3-канальный режим работы: не более 28 Кгц.,
что иллюстрируется этими фото
(примеры работы почти с максимальной скоростью. См. F 1-го канала: ххх,хх Кгц):
В приложении к требованиям техзадания, это максимально технически возможные скоростные "потолки".
Входное сопротивление каналов:
|
Rвх. 1-го канала: примерно 110 Ком.
Rвх. 2-го канала: примерно 150 Ком.
Rвх. 3-го канала: примерно 150 Ком.
|
Количество запоминаемых, в одной N-канальной сессии, перепадов/уровней.
|
Если выбранная пользователем позиция горизонтальной развёртки такова, что в выведенной на индикацию эпюре, лимитные маркеры отсутствуют (это соответствует оперзапоминанию максимально возможного количества перепадов/уровней, так как под запоминание одного перепада/уровня задействуется одна ячейка оперпамяти), то "за один присест" (то есть, за один пуск), в оперпамяти ПИКа, можно запомнить данные одной (текущей) сессии, состоящей из следующего количества перепадов/уровней:
- в 1-канальном режиме: 1024 перепада/уровня (1024 ячейки оперпамяти/байта),
- в 2-канальном режиме: 512 перепадов/уровней 1-го канала и 512 перепадов/уровней 2-го канала (512 х 2 = 1024 ячейки оперпамяти/байта),
- в 3-канальном режиме: 256 перепадов/уровней 1-го канала, 256 перепадов/уровней 2-го канала и 256 перепадов/уровней 3-го канала (256 х 3 = 768 ячеек оперпамяти/байтов),
В данном случае (отсутствие лимитных маркеров), в эпюре того канала, оперпамять которого заполнится первой, вне зависимости от частоты сигнала, всегда будет присутствовать именно то количество перепадов/уровней, которое указано выше (естественно, с учётом горизонтальной прокрутки).
То есть, в данном случае, зависимость количества перепадов/уровней, от частоты, отсутствует, и относительно небольшое изменение частоты приводит только к "сжиманию или растягиванию эпюрной гармошки".
Если уровень настолько длинный, что "железяка автовыставила" один лимитный маркер, то такой уровень запоминается не в одной ячейке оперпамяти, а в 2-х.
Если "железяка автовыставила" 2 лимитных маркера, то такой уровень запоминается в 3-х ячейках оперпамяти. И т.д.
Но в любом случае, в том канале, оперпамять которого заполнилась первой, количество задействованных ячеек оперпамяти будет тем, которое указано выше.
Разница только в том, сколько именно ячеек оперпамяти задействуется под запоминание данных перепадов/уровней ("железяка" это "авторазруливает").
В момент окончания заполнения данными оперпамяти самого "шустрого" канала, заполнение данными оперпамяти остальных каналов (если 2/3-канальная работа) прекращается.
То есть эти "секторы" оперпамяти остаются недозаполненными (а зачем их заполнять, если в одном из каналов, эпюра, если так можно выразиться, "принудительно закончилась"?).
|
Количество сессий в N-канальных сессийных группах.
|
Во Flash-памяти программ, можно энергонезависимо запомнить, а затем и считать (в любое удобное, для пользователя, время) следующее количество сессий (это количество формирует N-канальную сессийную группу):
1-канальный режим: 2 сессии. Количество задействованных байтов: 1024 х 1 х 2 = 2048,
2-канальный режим: 4 сессии. Количество задействованных байтов: 512 х 2 х 4 = 4096,
3-канальный режим: 8 сессий. Количество задействованных байтов: 256 х 3 х 8 = 6144.
Итого: 12288 байтов или 12288/2 = 6144 слова памяти программ (без учёта программной "обслуги" Flash-записи/чтения).
|
Диапазоны замеров частоты, "пиконапруги" и количества "кадров".
|
Диапазон замеров частоты: от 0 Гц. до 999,99 Кгц., с "шагом" 10 Гц.
Форма замера F 1-го канала: ххх,хх Кгц.
В двух левых, десятичных разрядах показаний, незначащие ноли гасятся.
Замер осуществляется в 1-м канале.
Диапазон замеров "пиконапруги": от 0 в. до 14,99 в., (если выше, то "появляется вопилка") с "шагом" 0,01 в.
Форма замера Uмакс 1-го канала: хх,хх в.
В левом, десятичном разряде показаний, незначащий ноль гасится.
Замер осуществляется в 1-м канале.
Диапазон замеров количества "кадров": от 1 до 999, с "шагом" в 1 "кадр".
Форма замера кадр: ххх.
В этом случае, использован такой "спецспособ" вывода показаний на индикацию, при котором гашение незначащих нолей не нужно.
А именно, если в десятичном разряде единиц, осуществляется переход от 9 к 0, то этот разряд смещается на одно знакоместо вправо, а показание десятков выводятся в освободившееся (самое левое) знакоместо.
Если в десятичном разряде десятков осуществляется переход от 9 к 0, то вправо смещаются десятичные разряды единиц/десятков, а показание сотен выводятся в освободившееся (самое левое) знакоместо.
|
Органы управления:
|
- тумблер включения/выключения питания,
- тумблер включения/выключения подсветки графического модуля,
- кнопка "Меню",
- кнопка "+",
- кнопка "-",
- кнопка "Пуск",
Вариант компоновки (можно и иначе):
|
Функции кнопок.
|
После окончания приветствия, кнопки "Меню", "+" и "-" всегда активны (за исключением интервалов времени отработки "вопилок").
Кнопка "Меню": кнопка выбора пункта.
В зависимости от текущей функциональности, с её помощью, осуществляются:
- переход, из меню (или из 1-го пункта меню), в выбранное подменю,
- перебор пунктов выбранного подменю,
- по окончании работы с "эпюрной портянкой", возврат в 1-й пункт меню (или на начало меню).
Кнопки "+" и "-" : кнопки выбора позиции.
В зависимости от текущей функциональности, с их помощью, осуществляются:
- выбор позиции 1-го пункта меню (то есть, выбор нужного подменю),
- выбор позиции текущего пункта подменю,
- выбор позиции текущего диалога,
- по окончании вывода "эпюрной портянки" на индикацию, прокрутка "эпюрной портянки" вправо/влево.
Кнопка "Пуск": кнопка "запуска в работу" последовательной "цепочки" соответствующих действий.
В подменю основа, пуск (ручной или автоматический) можно осуществить из любого его пункта. В этом случае, результатом пуска являются сначала архивирование, потом разархивирование и в итоге, вывод на индикацию соответствующей N-канальной "эпюрной портянки".
В подменю флэш, пуск можно осуществить только после выбора номера сессии Flash-записи или Flash-чтения (в остальных случаях, кнопка "Пуск" пассивна). В этом случае, результатом пуска является либо Flash-запись, либо Flash-чтение выбранной сессии.
|
Меню.
|
В 1-м пункте меню, с помощью кнопок "+" или "-" , можно выбрать одно из двух подменю:
- подменю основа,
- подменю флэш.
Переход, в выбранное подменю, выбор той или иной его позиции и переход в 1-й пункт меню (на начало меню) происходит по факту нажатия/отжатия одной-разъединственной кнопки "Меню" (в зависимости от "текучки", происходят соответствующие, программные автосмены её функциональностей).
|
Основные режимы подменю основа (на выбор пользователя).
|
В 1-м пункте подменю основа, с помощью кнопок "+" или "-" , можно выбрать:
1-канальный режим работы: задействуется 1-й канал.
2-канальный режим работы: задействуются 1-й и 2-й каналы.
3-канальный режим работы: задействуются 1-й, 2-й и 3-й каналы.
|
Подрежимы подменю основа (в любой "канальности" и на выбор пользователя).
|
Во 2-м пункте подменю основа, с помощью кнопок "+" или "-" , можно выбрать способ пуска: ручной или автоматический.
В обоих случаях, сразу же после нажатия кнопки "Пуск", с целью создания "начальных точек отсчётов", происходит автоматическая идентификация всех текущих уровней (или одного уровня, если установлен 1-канальный режим), которые имеют место быть до момента перехода в соответствующий обработчик архивных данных.
В подрежиме ручного пуска, переход в соответствующий обработчик архивных данных происходит в любом из двух возможных случаев:
- по событию возникновения первого (после нажатия кнопки "Пуск") перепада ("фазовосинхронно" с первым перепадом, возникшим в любом из активных каналов),
- если перепадов нет (длинные уровни), то по событию окончания отработки специальной, фиксированной задержки.
В последнем случае, на индикацию выводятся длинные, промаркированные (лимитными маркерами) уровни, с теми значениями (нулевыми/единичными), которые были идентифицированы ранее.
Автопуск (ждущий пуск).
Переход, в режим ожидания автопуска, происходит по факту нажатия/отжатия кнопки "Пуск" ("высвечивается" надпись ожидание автопуска).
После этого, автопуск может произойти только по факту возникновения, в любом из активных каналов, первого перепада.
Если ни одного перепада нет, то перейти, из режима ожидания автопуска, в 1-й пункт меню, можно посредством долговременного (до "высвечивания" 1-го пункта меню) нажатия кнопки "Пуск".
Если накопленная задержка прямого счёта имеет ненулевое значение, то после обнаружения первого перепада, отмеряется соответствующая задержка обратного отсчёта, и только после этого происходит переход в соответствующий обработчик архивных данных.
Если накопленная задержка прямого счёта имеет нулевое значение, то переход в соответствующий обработчик архивных данных происходит сразу уже после обнаружения первого перепада.
|
В 3-м и 4-м пунктах подменю основа, с помощью кнопок "+" или "-" , можно выбрать способ горизонтальной развёртки: ручная или автоматическая и позицию развёртки.
Количество позиций ручной развёртки: 8, с возможностью "кнопочного" (с помощью кнопок "+" или "-" ) выбора любой из них.
В 1-й позиции развёртки, "эпюрная портянка" разворачивается наиболее "широко", а по мере увеличения позиции развёртки, последовательно "ужимается".
Количество позиций авторазвёртки: тоже 8.
После осуществления пуска, выбор позиции развёртки производится автоматически, о чём, после окончания отработки процесса авторазвёртки, визуально сообщается пользователю (в строке меню. В комплексе с автовыводом на индикацию соответствующей "эпюрной портянки").
|
Подменю флэш.
|
Ранее упомянутые понятия сессия и сессийная группа, относятся к работе в этом подменю.
После осуществления пуска (ручного или автоматического), пользователь имеет возможность:
1. Либо энергонезависимо сохранить (во Flash-памяти программ) опермассив/массивы данных "добытой", в подменю основа, "эпюрной портянки",
2. Либо не сохранять.
Так как оперпамять ПИКа "не резиновая", то в любом случае, после осуществления следующего пуска, оперданные предыдущей "эпюрной портянки" будут "убиты", записью "по её верху", оперданных последующей "эпюрной портянки", но во 2-м случае, оперданные текущей "эпюрной портянки" теряются безвозвратно, а в 1-м случае, они (в виде массива/массивов байтов), по желанию пользователя, могут быть энергонезависимо запомнены в соответствующем "секторе" Flash-памяти программ (или в соответствующей сессии), после чего их, в любое удобное время (хоть через месяц. Условно), можно комфортно Flash-считать (опять же, в виде массива/массивов), а после этого, работать с ними точно так же, как и с теми оперданными, которые, после осуществления текущего пуска, "заложены в оперзакрома".
Проще говоря, пользователь, по своему желанию, может записать оперданные текущей "эпюрной портянки" в некий "блокнот" (или в "записную книжку"), а далее, по мере необходимости, "извлекать" из него то, что нужно просмотреть/проанализировать.
А можно и не записывать, что соответствует потере оперданных последней "эпюрной портянки" (например, позиция развёртки не устраивает, её нужно изменить, а после этого, повторить попытку).
Flash-запись "автопривязана" (это проблемы не пользователя, а "железяки") к той "канальности", которая выставлена в подменю основа.
Если пользователь пожелает произвести Flash-запись, то в соответствии с текущей "канальностью", "железяка автопредлагает" произвести её в ту или иную сессию сессийной группы этой "канальности", причём, не в абы какую сессию, а в ту, номер которой на единицу больше номера той сессии, в которую осуществлялась предыдущая Flash-запись (в том числе и с работой по сессийному кольцу), но если в этом есть необходимость, то перед осуществлением Flash-записи, с помощью кнопок "+" или "-" , можно установить и тот номер сессии, который нравится.
После осуществления текущего набора оперданных (в подменю основа), перехода в подменю флэш, выбора запись и автовыбора (или ручного выбора) номера сессии, Flash-запись сессии производится по факту нажатия/отжатия кнопки "Пуск", с дальнейшим, визуально-звуковым оповещением пользователя об успешности или неуспешности записи текущей сессии (это зависит от результата осуществления "тотальной" верификации).
Если работа происходит в подрежиме автопуска, то по факту окончания Flash-записи, к ранее накопленному числовому значению задержки прямого счёта, прибавляется ранее оперзапомненное, числовое значение задержки прямого счёта текущей сессии (результат суммирования энергонезависимо запоминается).
Flash-чтение любой из ранее записанных сессий (всего, их 14 штук) любой "канальности" ("канальность" и номер сессии, в подменю флэш, нужно выбирать вручную) можно осуществить в любое удобное, для пользователя, время.
|
Оргудобства.
|
Подсказки и пояснения помогают пользователю ориентироваться в том, что нужно делать, какие органы управления активны/пассивны и какой режим активен.
Если это последний "кадр", то на индикацию выводится надпись Последний кадр.
Если происходит работа в подрежиме автопуска, то после осуществления Flash-записи, на индикацию выводится надпись ЗаписаноСГ хх.
Диалоги "автовозникают" тогда, когда "железяка в затруднении", и она желает "переложить ответственность", за дальнейшие последствия, "на плечи" пользователя.
"Вопилки" "автовозникают" тогда, когда вопиюще нарушены "техправа железяки", что соответствует крайней степени её негодования (типа "если не устранишь это безобразие, то обижусь и помру").
После включения питания, "железяка" всегда приветствует пользователя надписью, в интервале времени "высвечивания" которой (примерно 15 сек.), исполняется очень хорошая (на мой взгляд) мелодия.
Подробнее - в инструкции по эксплуатации.
|
Энергонезависимое запоминание настроек и показаний.
|
На момент выключения питания устройства, в EEPROM-памяти данных, "оседает набор" (условно) энергонезависимо запомненных данных, которые, после осуществления последующего включения питания, считываются, что, в конечном итоге, приводит к автовосстановлению тех настроек и показаний, которые имели место быть на момент последнего выключения питания устройства.
А именно, автовосстанавливаются все настройки подменю основа:
- "канальность" (1-канальный или 2-канальный, или 3-канальный режим работы),
- позиция горизонтальной развёртки,
- режим пуска (ручной или авто),
- режим развёртки (ручной или авто).
Если работа происходит в подменю флэш, то по факту осуществления Flash-записи, в любой из 14-ти сессий, энергонезависимо сохраняются:
- значение "пиконапруги",
- значение частоты.
В дальнейшем, по фактам осуществления Flash-чтений, все считанные "эпюрные портянки укомплектовываются" соответствующими показаниями "пиконапруги" и частоты.
Если текущим режимом пуска является автопуск, то по факту осуществления Flash-записи, вдобавок к этому, энергонезависимо сохраняются:
- значение накопленной задержки прямого счёта (визуально не отображается, но используется в работе),
- количество отработанных сессийных групп.
|
Задержки прямого счёта и обратного отсчёта.
|
Задержка прямого счёта и задержка обратного отсчёта, если так можно выразиться, "работают в паре", и только тогда, когда режимом пуска является автопуск.
Если режимом пуска является ручной пуск, то эти задержки программно игнорируются (не работают).
Смысл всей этой "задержкосвистопляски" в том, чтобы, после осуществления текущего автопуска, "автоприслонить" (во времени) начало последующей "эпюрной портянки", к окончанию предыдущей, что позволяет пользователю (в несколько приёмов) производить, если так можно выразиться, "кусочно-рваный" анализ "эпюрной портянки", длина которой в разы (в том числе и в большое количество раз) превышает длину "эпюрной портянки" одной сессии.
Это эквивалентно многократному, косвенному увеличению "массы" оперпамяти, задействованной под запоминание архивных данных.
Задержка прямого счёта формируется в интервале времени архивирования текущего массива данных, в виде двоичного числа, которое, после окончания формирования его числового значения, автоприплюсовывается к двоичному числу ранее накопленной суммы задержки прямого счёта.
В дальнейшем, двоичное число накопленной суммы задержки прямого счёта предустанавливает таймер задержки обратного отсчёта, который считает, от этой предустановки и до нуля.
В итоге, формируется задержка обратного отсчёта, которая, на соответствующее время, задерживает переход рабочей точки программы на начало отработки подпрограммы N-канального обработчика архивных данных.
|
Погрешности отображения.
|
В электронно-лучевой трубке, луч может занимать бесконечно большое число положений.
В графическом модуле, этого нет. В том смысле, что количество столбцов является не бесконечным, а строго конечным, и между двумя соседними столбцами, никаких "промежуточных" состояний нет: либо левый столбец, либо правый.
Соответственно, возникают графические погрешности, от которых, как говорится, "никуда технически не денешься".
Эти погрешности наиболее визуально заметны тогда, когда "эпюрная гармошка" максимально "ужата".
А именно, либо на частотах близких к "потолку" быстродействия (работа в 1-й позиции горизонтальной развёртки), либо на более низких частотах, но с такой позицией горизонтальной развёртки, которая сильно "ужимает эпюрную портянку".
Например:
В данном случае, отображён сигнал типа "меандр", поэтому его неравномерность, обусловленная погрешностями отображения, в графическом модуле, как говорится, "бросается в глаза" (приглядитесь. Специально подобрал частоты так, чтобы эти погрешности были видны).
Такого рода погрешности могут быть, а могут и не быть (зависит от многих причин).
Чем более "растянута эпюрная портянка", тем они менее заметны.
В приложении к графическому модулю, полностью избавиться, от этих погрешностей, технически невозможно.
Можно только сделать их более "визуальнонезаметными".
Самый простой способ: посредством уменьшения позиции горизонтальной развёртки, "растянуть эпюрную портянку". Естественно, если частота сигнала/сигналов позволяет (если активны несколько каналов, то ориентация на наиболее высокочастотный канал).
Если же не позволяет, то нужно задуматься о повышении скоростных "потолков" (переход на более "тактовошустрый" ПИК).
Или перейти на работу с более "широкоэкранным" графическим модулем.
Или в комплексе.
Короче, простор, для творчества, есть, причём, огромный.
|
Основные характеристики программы.
|
"PC-масса": достаточно оптимально задействована почти вся память программ PIC18F252:
- непосредственно под текст программы, задействовано почти 10 килослов,
- под энергонезависимое Flash-запоминание данных 14-ти сессий, задействовано 6 килослов (12 Кбайт),
"Опермасса": задействована почти вся область оперпамяти PIC18F252.
Некоторые особенности:
- две ПП прерываний (высокоприоритетная и низкоприоритетная).
Высокоприоритетная ПП прерываний задействована под работу с прерываниями по входам INTx, (в том числе и работа с отложенными прерываниями).
Низкоприоритетная ПП прерываний задействована под работу с задержкой обратного отсчёта,
- задействуются все 3 канала косвенной адресации,
- где это только возможно, задействуется табличные чтение/запись, и используются операторы low и high,
- программное "провоцирование" ухода в высокоприоритетную ПП прерываний,
- модуль таймера TMR0 задействован под измерение частоты,
- модуль таймера TMR1 задействован под измерение задержки прямого счёта,
- модуль таймера TMR2 задействован под измерение задержки обратного отсчёта,
- 1-й канал модуля АЦП задействован под измерение "пиконапруги",
- модуль детектора пониженного напряжения LVD задействован под оповещение пользователя о понижении уровня Uпит. ниже 4,77 в.,
- пъезоизлучатель подключен не к свободному, а к задействованному выводу порта (совмещение функций),
- архивирование ("упаковка") опермассивов данных осуществляется по максимально простому и быстрому (в приложении к техзаданию и к техвозможностям используемого ПИКа) алгоритму,
- после осуществления автоматического разархивирования ("распаковки"), его результаты выводятся в дисплей графического модуля, с возможностью "покадровой" прокрутки вправо/влево и с возможностью осуществления энергонезависимого запоминания текущей сессии во Flash-памяти программ,
- энергонезависимое запоминание большого количества текущих настроек в EEPROM-памяти данных,
- энергонезависимое запоминание заархивированных опермассивов во Flash-памяти программ, с "тотальной" верификацией Flash-записанного и с возможностью дальнейшего Flash-чтения,
- двухсекторная система горизонтальной авторазвёртки,
- маркирование длины уровней,
- "древовидное" меню,
- наличие подсказок, пояснений, диалогов и "вопилок",
- и т.д. (см. инструкцию по эксплуатации).
|
|